21.5. 여러 Ingress 생성

단일 AWS Load Balancer(ALB)를 통해 단일 도메인에 속하는 다른 서비스로 트래픽을 라우팅할 수 있습니다. 각 Ingress 리소스는 도메인의 다양한 끝점을 제공합니다.

21.5.1. 단일 AWS 로드 밸런서를 통해 여러 인그레스 생성

CLI를 사용하여 단일 AWS Load Balancer(ALB)를 통해 트래픽을 여러 Ingress로 라우팅할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)에 액세스할 수 있습니다.

절차

  1. 다음과 같이 IngressClassParams 리소스 YAML 파일을 생성합니다(예: sample-single-lb-params.yaml ).

    apiVersion: elbv2.k8s.aws/v1beta1 1
    kind: IngressClassParams
    metadata:
      name: <single-lb-params> 2
    spec:
      group:
        name: single-lb 3
    1
    IngressClassParams 리소스의 API 그룹 및 버전을 정의합니다.
    2
    IngressClassParams 리소스의 이름을 지정합니다.
    3
    IngressGroup 의 이름을 지정합니다. 이 클래스의 모든 Ingress는 이 IngressGroup 에 속합니다.
  2. 다음 명령을 실행하여 IngressClassParams 리소스를 생성합니다.

    $ oc create -f sample-single-lb-params.yaml
  3. 다음과 같이 IngressClass 리소스 YAML 파일을 생성합니다(예: sample-single-lb.yaml ).

    apiVersion: networking.k8s.io/v1 1
    kind: IngressClass
    metadata:
      name: <single-lb> 2
    spec:
      controller: ingress.k8s.aws/alb 3
      parameters:
        apiGroup: elbv2.k8s.aws 4
        kind: IngressClassParams 5
        name: single-lb 6
    1
    API 그룹 및 IngressClass 리소스의 버전을 정의합니다.
    2
    IngressClass 의 이름을 지정합니다.
    3
    모든 IngressClasses 에 공통인 컨트롤러 이름을 정의합니다. aws-load-balancer-controller 가 컨트롤러를 조정합니다.
    4
    IngressClassParams 리소스의 API 그룹을 정의합니다.
    5
    IngressClassParams 리소스의 리소스 유형을 정의합니다.
    6
    IngressClassParams 리소스의 이름을 정의합니다.
  4. 다음 명령을 실행하여 IngressClass 리소스를 생성합니다.

    $ oc create -f sample-single-lb.yaml
  5. 다음과 같이 Ingress 리소스 YAML 파일을 생성합니다(예: sample-multiple-ingress.yaml ).

    apiVersion: networking.k8s.io/v1 1
    kind: Ingress
    metadata:
      name: <example-1> 2
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing 3
        alb.ingress.kubernetes.io/group.order: "1" 4
    spec:
      ingressClass: alb 5
      rules:
      - host: example.com 6
        http:
            paths:
            - path: /blog 7
              backend:
                service:
                  name: <example-1> 8
                  port:
                    number: 80 9
    kind: Ingress
    metadata:
      name: <example-2>
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/group.order: "2"
    spec:
      ingressClass: alb
      rules:
      - host: example.com
        http:
            paths:
            - path: /store
              backend:
                service:
                  name: <example-2>
                  port:
                    number: 80
    kind: Ingress
      metadata:
      name: <example-3>
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/group.order: "3"
    spec:
      ingressClass: alb
      rules:
      - host: example.com
        http:
            paths:
            - path: /
              backend:
                service:
                  name: <example-3>
                  port:
                    number: 80
    1 2
    Ingress의 이름을 지정합니다.
    3
    공용 서브넷에서 프로비저닝할 로드 밸런서를 나타내며 인터넷을 통해 액세스할 수 있도록 합니다.
    4
    로드 밸런서에서 요청이 수신될 때 Ingress의 규칙과 일치하는 순서를 지정합니다.
    5
    이 인그레스에 속하는 Ingress 클래스를 지정합니다.
    6
    요청 라우팅에 사용되는 도메인의 이름을 정의합니다.
    7
    서비스에 라우팅해야 하는 경로를 정의합니다.
    8
    Ingress에 구성된 끝점을 제공하는 서비스의 이름을 정의합니다.
    9
    엔드포인트를 제공하는 서비스의 포트를 정의합니다.
  6. 다음 명령을 실행하여 Ingress 리소스를 생성합니다.

    $ oc create -f sample-multiple-ingress.yaml