2.5. AWS 로드 밸런서 운영자 구성
2.5.1. 클러스터 전체 프록시의 인증 기관 신뢰 링크 복사링크가 클립보드에 복사되었습니다!
AWS Load Balancer Operator에서 클러스터 전체 프록시를 구성할 수 있습니다. 클러스터 전체 프록시를 구성한 후, Operator Lifecycle Manager(OLM)는 HTTP_PROXY , HTTPS_PROXY , NO_PROXY 와 같은 환경 변수를 사용하여 모든 Operator 배포를 자동으로 업데이트합니다. 이러한 변수는 AWS Load Balancer Operator에 의해 관리되는 컨트롤러에 채워집니다.
다음 명령을 실행하여
aws-load-balancer-operator네임스페이스에 인증 기관(CA) 번들을 포함하는 구성 맵을 만듭니다.$ oc -n aws-load-balancer-operator create configmap trusted-ca신뢰할 수 있는 CA 번들을 구성 맵에 주입하려면 다음 명령을 실행하여 구성 맵에
config.openshift.io/inject-trusted-cabundle=true레이블을 추가합니다.$ oc -n aws-load-balancer-operator label cm trusted-ca config.openshift.io/inject-trusted-cabundle=true다음 명령을 실행하여 AWS Load Balancer Operator 배포의 구성 맵에 액세스하도록 AWS Load Balancer Operator 구독을 업데이트합니다.
$ oc -n aws-load-balancer-operator patch subscription aws-load-balancer-operator --type='merge' -p '{"spec":{"config":{"env":[{"name":"TRUSTED_CA_CONFIGMAP_NAME","value":"trusted-ca"}],"volumes":[{"name":"trusted-ca","configMap":{"name":"trusted-ca"}}],"volumeMounts":[{"name":"trusted-ca","mountPath":"/etc/pki/tls/certs/albo-tls-ca-bundle.crt","subPath":"ca-bundle.crt"}]}}}'AWS Load Balancer Operator가 배포된 후 다음 명령을 실행하여 CA 번들이
aws-load-balancer-operator-controller-manager배포에 추가되었는지 확인합니다.$ oc -n aws-load-balancer-operator exec deploy/aws-load-balancer-operator-controller-manager -c manager -- bash -c "ls -l /etc/pki/tls/certs/albo-tls-ca-bundle.crt; printenv TRUSTED_CA_CONFIGMAP_NAME"출력 예
-rw-r--r--. 1 root 1000690000 5875 Jan 11 12:25 /etc/pki/tls/certs/albo-tls-ca-bundle.crt trusted-ca선택 사항: 다음 명령을 실행하여 구성 맵이 변경될 때마다 AWS Load Balancer Operator 배포를 다시 시작합니다.
$ oc -n aws-load-balancer-operator rollout restart deployment/aws-load-balancer-operator-controller-manager
2.5.2. AWS Load Balancer에 TLS 종료 추가 링크 복사링크가 클립보드에 복사되었습니다!
도메인의 트래픽을 서비스의 Pod로 라우팅하고 AWS Load Balancer에 TLS 종료를 추가할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc)에 액세스할 수 있습니다.
프로세스
AWSLoadBalancerController리소스를 정의하는 YAML 파일을 만듭니다.add-tls-termination-albc.yaml파일 예시apiVersion: networking.olm.openshift.io/v1 kind: AWSLoadBalancerController metadata: name: cluster spec: subnetTagging: Auto ingressClass: tls-termination1 - 1
- 수신 클래스 이름을 정의합니다. 클러스터에 수신 클래스가 없으면 AWS Load Balancer Controller가 수신 클래스를 생성합니다.
spec.controller가ingress.k8s.aws/alb로 설정된 경우 AWS Load Balancer Controller는 추가 수신 클래스 값을 조정합니다.
Ingress리소스를 정의하는 YAML 파일을 만듭니다.add-tls-termination-ingress.yaml파일 예시apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: <example>1 annotations: alb.ingress.kubernetes.io/scheme: internet-facing2 alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:xxxxx3 spec: ingressClassName: tls-termination4 rules: - host: example.com5 http: paths: - path: / pathType: Exact backend: service: name: <example_service>6 port: number: 80
2.5.3. 단일 AWS 로드 밸런서를 통해 여러 개의 수신 리소스 생성 링크 복사링크가 클립보드에 복사되었습니다!
단일 AWS Load Balancer를 통해 단일 도메인에 속한 여러 개의 수신 리소스가 있는 다양한 서비스로 트래픽을 라우팅할 수 있습니다. 각 수신 리소스는 도메인의 다른 엔드포인트를 제공합니다.
사전 요구 사항
-
OpenShift CLI(
oc)에 액세스할 수 있습니다.
프로세스
다음과 같이
sample-single-lb-params.yaml과 같은IngressClassParams리소스 YAML 파일을 만듭니다.apiVersion: elbv2.k8s.aws/v1beta11 kind: IngressClassParams metadata: name: single-lb-params2 spec: group: name: single-lb3 다음 명령을 실행하여
IngressClassParams리소스를 만듭니다.$ oc create -f sample-single-lb-params.yaml다음과 같이
IngressClass리소스 YAML 파일(예:sample-single-lb-class.yaml)을 만듭니다.apiVersion: networking.k8s.io/v11 kind: IngressClass metadata: name: single-lb2 spec: controller: ingress.k8s.aws/alb3 parameters: apiGroup: elbv2.k8s.aws4 kind: IngressClassParams5 name: single-lb-params6 다음 명령을 실행하여
IngressClass리소스를 만듭니다.$ oc create -f sample-single-lb-class.yaml다음과 같이
AWSLoadBalancerController리소스 YAML 파일(예:sample-single-lb.yaml )을 만듭니다.apiVersion: networking.olm.openshift.io/v1 kind: AWSLoadBalancerController metadata: name: cluster spec: subnetTagging: Auto ingressClass: single-lb1 - 1
IngressClass리소스의 이름을 정의합니다.
다음 명령을 실행하여
AWSLoadBalancerController리소스를 만듭니다.$ oc create -f sample-single-lb.yaml다음과 같이
Ingress리소스 YAML 파일(예:sample-multiple-ingress.yaml )을 만듭니다.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-11 annotations: alb.ingress.kubernetes.io/scheme: internet-facing2 alb.ingress.kubernetes.io/group.order: "1"3 alb.ingress.kubernetes.io/target-type: instance4 spec: ingressClassName: single-lb5 rules: - host: example.com6 http: paths: - path: /blog7 pathType: Prefix backend: service: name: example-18 port: number: 809 --- 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
- 로드 밸런서에서 요청을 수신할 때 여러 인그레스 리소스의 규칙이 매칭되는 순서를 지정합니다.
- 4
- 로드 밸런서가 서비스에 도달하기 위해 OpenShift Container Platform 노드를 타겟으로 한다는 것을 나타냅니다.
- 5
- 이 수신에 속하는 수신 클래스를 지정합니다.
- 6
- 요청 라우팅에 사용되는 도메인 이름을 정의합니다.
- 7
- 서비스로 라우팅해야 하는 경로를 정의합니다.
- 8
Ingress리소스에 구성된 엔드포인트를 제공하는 서비스 이름을 정의합니다.- 9
- 엔드포인트에 서비스를 제공하는 서비스의 포트를 정의합니다.
다음 명령을 실행하여
Ingress리소스를 만듭니다.$ oc create -f sample-multiple-ingress.yaml
2.5.4. AWS 로드 밸런서 운영자 로그 링크 복사링크가 클립보드에 복사되었습니다!
oc logs 명령을 사용하면 AWS Load Balancer Operator 로그를 볼 수 있습니다.
프로세스
다음 명령을 실행하여 AWS Load Balancer Operator의 로그를 확인하세요.
$ oc logs -n aws-load-balancer-operator deployment/aws-load-balancer-operator-controller-manager -c manager