23.6. 여러 인그레스 생성

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

23.6.1. 단일 AWS Load Balancer를 통해 여러 수신 생성

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-class.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-params 6
    1
    IngressClass 리소스의 API 그룹 및 버전을 정의합니다.
    2
    IngressClass 의 이름을 지정합니다.
    3
    컨트롤러 이름을 정의합니다. Ingress.k8s.aws/alb 는 이 클래스의 모든 Ingress가 aws-load-balancer-controller 에서 관리해야 함을 나타냅니다.
    4
    IngressClassParams 리소스의 API 그룹을 정의합니다.
    5
    IngressClassParams 리소스의 리소스 유형을 정의합니다.
    6
    IngressClassParams 리소스의 이름을 정의합니다.
  4. 다음 명령을 실행하여 IngressClass 리소스를 생성합니다.

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

    apiVersion: networking.olm.openshift.io/v1
    kind: AWSLoadBalancerController
    metadata:
      name: cluster
    spec:
      subnetTagging: Auto
      ingressClass: single-lb 1
    1
    IngressClass 리소스의 이름을 정의합니다.
  6. 다음 명령을 실행하여 AWSLoadBalancerController 리소스를 생성합니다.

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

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

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