Network Load Balancer for VPC 설정
VPC 클러스터의 각 영역에 공용 또는 사설 Kubernetes LoadBalancer 서비스를 설정하여 앱을 공용 네트워크 또는 사설 네트워크에 노출시키세요. 그런 다음 선택적으로 DNS 레코드 및 TLS 인증서로 VPC NLB를 등록할 수 있습니다. VPC NLB는 ‘ TCP ’ 및 ‘ UDP ’ 프로토콜 유형을 모두 지원합니다.
공용 또는 사설 VPC NLB 설정
클러스터의 각 구역에 Kubernetes LoadBalancer 서비스를 설정하여 앱을 네트워크 트래픽에 노출시키세요. Kubernetes LoadBalancer 서비스를 생성하면, 클러스터 외부의 VPC 내에 앱으로 요청을 라우팅하는 공용 또는 사설 Network Load Balancer for VPC (VPC NLB)가 자동으로 생성됩니다.
시작하기 전에
- VPC NLB용 Kubernetes
LoadBalancer서비스를 배포하는 네임스페이스에서 ‘Writer’ 또는 ‘Manager’ IBM Cloud IAM 서비스 액세스 역할을 보유하고 있는지 확인하십시오. - Red Hat OpenShift 클러스터에 액세스하십시오.
- VPC NLB를 보려면
infrastructure-service플러그인을 설치하십시오. 명령을 실행하기 위한 접두부는ibmcloud is입니다.ibmcloud plugin install infrastructure-service - 비공개 VPC NLB의 경우: VPC VPN 연결 등을 통해 VPC 사설 네트워크에 연결합니다.
- 비공개 VPC NLB의 경우: 앱에서 비공개 네트워크 요청을 수신하도록 설정합니다.
- VPC 서브넷 생성 해당 VPC NLB에 할당된 것입니다. 이 서브넷은 클러스터와 동일한 VPC 및 위치에 있어야 하지만 클러스터 또는 작업자 노드에 연결될 수 없습니다. 특정 IP 범위를 입력하는 경우 예약 범위
172.16.0.0/16,172.18.0.0/16,172.19.0.0/16및172.20.0.0/16을 사용하지 마십시오. 서브넷을 프로비저닝한 후에는 해당 서브넷의 ID를 기록해 두세요. - VPC NLB를 통해 앱에 연결하는 클라이언트가 전용 VPC 서브넷의 VPC 및 존 외부에 있는 경우, 사용자 지정 인그레스 라우팅 테이블을 생성해야 합니다. 자세한 정보는 알려진 제한사항의 표와 라우팅 테이블 및 라우트 정보를 참조하십시오. 사용자 지정 인그레스 라우팅 테이블에 대해 다음 트래픽 소스 중 하나를 선택합니다: 온프레미스 네트워크의 트래픽의 경우 직접 링크를 선택합니다. 다른 VPC 또는 기존 인프라에서 발생하는 트래픽의 경우 트랜짓 게이트웨이를 선택합니다. 동일한 VPC 내의 다른 영역에서 발생하는 트래픽의 경우 VPC 영역을 선택합니다. 자세한 내용은 VPC VPN 연결 설정을 참조하세요.
- VPC 서브넷 생성 해당 VPC NLB에 할당된 것입니다. 이 서브넷은 클러스터와 동일한 VPC 및 위치에 있어야 하지만 클러스터 또는 작업자 노드에 연결될 수 없습니다. 특정 IP 범위를 입력하는 경우 예약 범위
LoadBalancer 서비스 구성
-
클러스터에 앱을 배치하십시오. 배치 구성 파일의 메타데이터 섹션에서 레이블을 추가했는지 확인하십시오. 이 사용자 정의 레이블은 앱이 실행되는 모든 팟(Pod)을 식별하여 로드 밸런싱에 포함시킵니다.
-
Kubernetes
LoadBalancer서비스의 구성 YAML 파일을 작성하십시오. YAML 파일에서service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type어노테이션을"public"또는"private"로 지정합니다. 예제 파일의annotations섹션에는 사용 가능한 일부 주석만 포함되어 있습니다. 필수 및 선택적 VPC NLB 어노테이션의 전체 목록은 어노테이션 및 사양을 참조하세요.VPC NLB를 쉽게 식별할 수 있게 하려면
<app_name>-vpc-nlb-<VPC_zone>형식으로 서비스 이름을 지정하는 것이 좋습니다.apiVersion: v1 kind: Service metadata: name: <app_name>-vpc-nlb-<VPC_zone> annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer" service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "nlb" service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "public" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector: "<key>=<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets: "<subnet1_ID,subnet2_ID>" spec: type: LoadBalancer selector: <selector_key>: <selector_value> ports: - name: http protocol: TCP port: 8080 targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. - name: https protocol: TCP port: 443 targetPort: 443 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. externalTrafficPolicy: Local # Specify Local or Cluster. -
클러스터에 Kubernetes
LoadBalancer서비스를 작성하십시오.oc apply -f <filename>.yaml -n <namespace> -
클러스터에서 Kubernetes
LoadBalancer서비스가 작성되었는지 확인하십시오. 서비스가 작성되면 LoadBalancer Ingress 필드는 VPC NLB가 지정하는 외부 IP 주소로 채워집니다.
VPC에서 VPC NLB를 프로비저닝하는 데 수 분이 소요됩니다. Kubernetes LoadBalancer 서비스의 외부 IP 주소는 VPC NLB가 완전히 프로비저닝될 때까지 pending 상태일 수 있습니다.
```sh {: pre}
oc describe svc myloadbalancer -n <namespace>
```
공용 `LoadBalancer` 서비스의 CLI 출력 예:
```sh {: screen}
NAME: myapp-vpc-nlb-us-east
Namespace: default
Labels: <none>
Annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: nlb
Selector: app=echo-server
Type: LoadBalancer
IP: 172.21.204.12
LoadBalancer Ingress: 169.XXX.XXX.XXX
Port: tcp-80 80/TCP
TargetPort: 8080/TCP
NodePort: tcp-80 32022/TCP
Endpoints: 172.17.17.133:8080,172.17.22.68:8080,172.17.34.18:8080 + 3 more...
Session Affinity: None
External Traffic Policy: Local
HealthCheck NodePort: 30882
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning SyncLoadBalancerFailed 13m (x5 over 15m) service-controller Error syncing load balancer: failed to ensure load balancer: kube-bqcssbbd0bsui62odcdg-2d93b07decf641d2ad3f9c2985122ec1 for service default/myvpcnlb is busy: offline/create_pending
Normal EnsuringLoadBalancer 9m27s (x7 over 15m) service-controller Ensuring load balancer
Normal EnsuredLoadBalancer 9m20s service-controller Ensured load balancer
Normal CloudVPCLoadBalancerNormalEvent 8m17s ibm-cloud-provider Event on cloud load balancer myvpcnlb for service default/myvpcnlb with UID 2d93b07d-ecf6-41d2-ad3f-9c2985122ec1: The VPC load balancer that routes requests to this Kubernetes LoadBalancer service is currently online/active.
```
-
VPC에 VPC NLB가 작성되었는지 확인하십시오. 출력에서 VPC NLB의 운영 상태가
online이고 프로비저닝 상태가active인지 확인하십시오.ibmcloud is load-balancers다음 CLI 출력 예에서는
kube-bh077ne10vqpekt0domg-046e0f754d624dca8b287a033d55f96e로 이름 지정된 VPC NLB가 KubernetesLoadBalancer서비스에 대해 작성되었습니다.ID Name Created Host Name Is Public Listeners Operating Status Pools Private IPs Provision Status Public IPs Subnets Resource Group 06496f64-a689-4693-ba23-320959b7b677 kube-bh077ne10vqpekt0domg-046e0f754d624dca8b287a033d55f96e 8 minutes ago 1234abcd-us-south.lb.appdomain.cloud yes 95482dcf-6b9b-4c6a-be54-04d3c46cf017 online 717f2122-5431-403c-b21d-630a12fc3a5a 10.241.0.7 active 169.63.99.184 c6540331-1c1c-40f4-9c35-aa42a98fe0d9 00809211b934565df546a95f86160f62 -
4단계에서 찾은 Kubernetes
LoadBalancer서비스의 IP 주소와 앱 포트(<external_IP>:<app_port>형식)에 액세스하십시오. -
선택사항: 앱을 배치할 각 구역에 공용 VPC NLB를 배치하는 이 단계를 반복하십시오. 그런 다음 하나의 DNS 하위 도메인으로 각 구역에 VPC NLB의 외부 IP주소를 등록할 수 있습니다.
클러스터 작성 중에, 또는 구역에서 작업자 노드를 추가할 때 클러스터에 연결한 서브넷을 삭제하지 마십시오. 클러스터가 사용한 VPC 서브넷을 삭제하면 해당 서브넷의 IP 주소를 사용하는 VPC NLB에 문제가 발생할 수 있으며 새 로드 밸런서를 작성하지 못하게 될 수 있습니다.
포트 범위를 사용하여 공개 NLB 설정하기
포트 범위는 각각 별도의 포트 번호에서 수신 대기하는 여러 백엔드 애플리케이션이 있는 단일 호스트 이름에서 서비스를 호스팅해야 하는 경우 공용 NLB에서 사용할 수 있습니다. Kubernetes 클러스터에서 포트 범위를 사용하려면 몇 가지 수동 구성을 수행해야 합니다. 먼저 ibm-load-balancer-cloud-provider-vpc-port-range 옵션을 설정해야 합니다. 하나 또는 여러 개의
범위를 포함할 수 있으며, 각 범위는 쉼표로 구분됩니다. spec.ports.port 값도 포트 범위의 최소값으로 설정해야 합니다.
다음 예에서는 포트 범위 30000-30010 을 사용합니다.
NLB 서비스가 요청을 전달할 각 배포에 대해 노드포트 서비스를 수동으로 만들어야 합니다. 이러한 각 노드포트 서비스의 포트 번호는 NLB 서비스에 구성된 포트 범위 내에 있어야 합니다.
다음 예시 다이어그램에서는 포트 30000의 노드포트 서비스가 배포 1에 대해 생성되고 포트 30001의 노드포트 서비스가 배포 2에 대해 생성됩니다.
사용자가 포트 범위가 포함된 NLB의 포트 30001에 요청을 보냅니다. 이 요청은 포트 30001(이 경우 배포 2)에서 수신 대기 중인 클러스터의 Nodeport 서비스로 요청을 전달하는 VPC NLB 서비스로 전달됩니다. 그러면 노드포트 서비스는 요청을 배포 2에서 선택한 파드의 대상 포트로 전달합니다.
다음 예제를 사용하여 포트 범위를 사용하는 NLB를 만듭니다. 셀렉터와 백엔드 파드는 포트 범위 로드 밸런서 서비스와 연결되어 있어야 상태 확인이 성공하고 포트 범위의 포트로 데이터가 전달됩니다. 포트 범위를 사용하려면 로드 밸런서 서비스에 정의된 범위의 포트 값을 가진 NodePort 서비스를 추가로 생성해야 합니다.
-
다음 예제
LoadBalancer구성을loadbalancer.yaml이라는 파일로 저장합니다.apiVersion: v1 kind: Service metadata: annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: nlb service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-port-range: 30000-30010 name: nlb-port-range spec: externalTrafficPolicy: Cluster ports: - port: 30000 # Must match min from the port range protocol: TCP nodePort: 30011 # Can be port in range or not targetPort: 8080 selector: app: echo-server # Must be valid for health checks to work type: LoadBalancer -
서비스를 만듭니다.
oc apply -f loadbalancer.yaml -
앞서 만든
LoadBalancer에 지정된 포트 범위의 포트 값을 사용하여NodePort서비스를 만듭니다.apiVersion: v1 kind: Service metadata: name: echo-server-node-port spec: ports: - port: 80 protocol: TCP # The protocol of the port range nodePort: 30003 # Node port in the port range targetPort: 8080 selector: app: echo-server type: NodePort -
NodePort 서비스를 생성합니다.
oc apply -f nodeport.yaml -
NLB가 제공하는 범위에 있는 포트에 액세스합니다.
curl https://<public ip assigned to NLB>:3000330003= 요청에 응답하는 범위의 노드 포트입니다- 범위 내의 다른 포트는 추가 노드 포트 서비스가 생성되지 않는 한 응답하지 않습니다.
DNS 레코드 및 TLS 인증서 등록
VPC NLB는 앱에 액세스할 수 있는 정적 외부 IP 주소를 제공합니다. HTTPS를 지원하도록 앱 도메인에 대한 SSL 인증서를 등록하려면 IBM 제공 하위 도메인을 작성하거나 사용자 정의 도메인을 사용할 수 있습니다.
예를 들어, 다중 구역 클러스터가 있다고 가정하고 클러스터의 각 구역에 있는 작업자 노드에서 앱의 복제본을 실행합니다. 앱 레플리카를 노출하기 위해 존당 하나의 VPC NLB를 생성합니다. 그런 다음 하나의 DNS 항목을 사용하여 각 VPC NLB에서 제공되는 외부 IP 주소를 등록할 수 있습니다.
VPC NLB 호스트 이름에 대한 DNS 하위 도메인을 작성한 후에는 nlb-dns health-monitor 명령을 사용하여 사용자 정의 상태 검사를 작성할 수 없습니다. 대신 기본 VPC 상태 검사가 사용됩니다. 자세한 정보는 VPC 문서를 참조하십시오.
- 앱에 대해 존당 VPC NLB를 하나씩 생성하십시오. VPC NLB를 구성하는 Kubernetes
LoadBalancer서비스에서 HTTP 포트를 정의했는지 확인하십시오. - HTTPS를 통해 앱에 액세스하는 데 SSL 인증서를 사용하려면 앱이 TLS 연결을 종료할 수 있어야 합니다.
다음 단계에 따라 VPC NLB IP 주소를 DNS 하위 도메인에 등록하십시오.
-
로드 밸런서의 외부 IP 주소를 검색하십시오.
oc get svc -o wide출력 예
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR ... myapp-vpc-nlb-jp-tok-3 LoadBalancer 172.21.xxx.xxx 169.xx.xxx.xx 8080:30532/TCP 1d run=webserver -
IP 주소에 대해 사용자 정의 또는 IBM 제공 DNS 서브도메인을 작성하십시오.
-
사용자 정의 도메인:
- DNS(Domain Name Service) 제공자 또는 IBM Cloud DNS를 통해 사용자 정의 도메인을 등록하십시오.
- 로드 밸런서 IP 주소를 A 레코드로 지정하여 사용자 정의 도메인의 별명을 정의하십시오.
-
IBM 제공 하위 도메인: IP 주소에 대한 SSL 인증서로 하위 도메인을 생성하려면
nlb-dns명령을 사용하십시오. IBM Cloud는 사용자 대신 하위 도메인의 와일드카드 SSL 인증서를 생성 및 유지보수합니다.- DNS 하위 도메인 및 SSL 인증서를 작성하십시오.
ibmcloud oc nlb-dns create vpc-gen2 --type public --cluster CLUSTER_NAME_OR_ID --ip VPC_NLB1_IP --ip VPC_NLB2_IP --ip VPC_NLB3_IP - 하위 도메인이 작성되었는지 확인하십시오. 자세한 정보는 하위 도메인 포맷 이해를 참조하십시오.
출력 예ibmcloud oc nlb-dns ls --cluster CLUSTER_NAME_OR_IDSubdomain IP(s) Health Monitor SSL Cert Status SSL Cert Secret Name mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud 169.46.xx.x,169.48.xxx.xx,169.48.xxx.xx None created <certificate>
- DNS 하위 도메인 및 SSL 인증서를 작성하십시오.
-
-
웹 브라우저를 열고 URL을 입력하여 하위 도메인을 통해 앱에 액세스하십시오.
HTTPS를 통해 앱에 액세스하는 데 SSL 인증서를 사용하려면 Kubernetes LoadBalancer 서비스에서 HTTPS 포트를 정의했는지 확인하십시오. curl -v --insecure https://<domain>을 실행하여 HTTPS 포트를 통해 요청이 올바르게 라우팅되는지 확인할 수 있습니다. 서비스에 HTTPS
포트가 열려 있지 않다는 연결 오류가 표시됩니다. 또한 앱을 사용하여 TLS 연결을 종료할 수 있는지 확인하십시오. curl -v https://<domain>을 행하여 앱이 TLS를 올바르게 종료하는지 확인할 수 있습니다. 앱이 TLS 연결을 올바르게 종료하지 않는다는 인증서 오류가 표시됩니다.
주석 및 사양
필수 및 선택 사항인 VPC NLB 주석 및 사양을 검토하세요.
필수 주석 및 사양
service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "nlb"- VPC NLB를 생성하기 위한 주석. 이 어노테이션을 포함하지 않고
nlb을 지정하면 기본적으로 VPC ALB가 생성됩니다. service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private"- (사설 NLB에 필수) 사설 요청을 수락하는 서비스를 지정하기 위한 어노테이션입니다. 이 어노테이션이 포함되지 않으면 공용 VPC NLB가 생성됩니다.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets- (프라이빗 NLB의 경우 필수, 퍼블릭 NLB의 경우 선택 사항) VPC NLB가 배포되는 전용 서브넷을 지정하는 어노테이션입니다. 이 값은 VPC 서브넷 ID, VPC 서브넷 이름 또는 VPC 서브넷 CIDR로 지정할 수 있습니다. 하나의 서브넷만 지정해야 합니다. 이 서브넷은 클러스터와 동일한 VPC 및 클러스터에 작업자 노드가 있는 구역에 있어야 하지만 이 서브넷에 작업자 노드를 연결할 수는 없습니다. 이 서브넷과
동일한 구역에 있는 작업자 노드가 VPC NLB로부터 트래픽을 수신하도록 구성됩니다. 모든 리소스 그룹의 서브넷을 보려면
ibmcloud oc subnets --provider vpc-gen2 --vpc-id VPC_ID --zone ZONE을 실행하십시오. externalTrafficPolicyLocal또는Cluster을 지정합니다.- 앱에 대한 클라이언트 요청의 소스 IP 주소를 유지하려면
Local로 설정하십시오. 이 설정은 들어오는 트래픽이 다른 노드로 전달되는 것을 방지합니다. 이 옵션은 HTTP 상태 확인도 구성합니다. Cluster가 설정된 경우, DSR은 VPC NLB가 초기에 수신 요청을 전달하는 작업자 노드에서만 구현됩니다. 수신 요청이 도착하면 요청은 다른 영역에 있을 수 있는 앱 포드가 포함된 작업자 노드로 전달됩니다. 앱 팟(Pod)의 응답이 원래 작업자 노드로 전송되고 이 작업자 노드는 DSR을 사용하여 응답을 다시 클라이언트로 보내며 이때 VPC NLB를 우회합니다. 이 옵션은 TCP 상태 확인도 구성합니다. UDP 로드 밸런서의 경우, ‘Cluster’ 옵션을 선택하면 ‘service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udp’이 필요합니다. 자세한 내용은 ‘ UDP 로드 밸런서에 대한 TCP 상태 확인 구성’을 참조하십시오.
선택적 주석 및 사양
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name- VPC 부하 분산 장치를 영구적으로 사용할 수 있도록 고유 이름을 포함하세요. 영구 VPC 로드 밸런서는 소속된 클러스터가 삭제되어도 삭제되지 않습니다. 자세한 내용은 영구 VPC 로드밸런서를 참조하세요. 이 어노테이션은 로드 밸런서를 생성할 때만 설정할 수 있습니다. 업데이트 작업에는 사용할 수 없습니다.
service.kubernetes.io/ibm-load-balancer-cloud-provider-zone- 클러스터가 연결된 VPC 구역을 지정하는 어노테이션입니다. 작업자 노드가 연결된 구역의 동일한 서브넷에 VPC NLB가 배치됩니다. 나중에 이 어노테이션을 다른 구역으로 변경하는 경우 VPC NLB는 새 구역으로 이동되지 않습니다. 이 어노테이션이나
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets annotation을 지정하지 않으면 VPC NLB는 가장 최적의 영역(예:Ready상태의 워커 노드가 있는 영역)에 배포됩니다. 워커 노드에dedicated: edge레이블이 설정되어 있고 이 어노테이션을 지정하면, 지정된 존에 있는 에지 노드만 트래픽을 수신하도록 구성됩니다. 다른 구역의 에지 노드 및 지정된 구역의 에지가 아닌 노드는 로드 밸런서에서 트래픽을 수신하지 않습니다. 구역을 보려면ibmcloud ks zone ls --provider vpc-gen2를 실행하십시오. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector- 워커 노드 레이블 선택기를 지정하기 위한 어노테이션. 레이블 선택기 키를 지정하여 클러스터의 특정 워커 노드가 트래픽을 수신하도록 구성할 수 있습니다. 주석에는 레이블 선택기를 하나만 포함할 수 있으며, 해당 선택기는
"key=value"형식으로 지정되어야 합니다. 이 어노테이션이 지정되지 않은 경우, 클러스터 내의 모든 워커 노드는 VPC NLB로부터 트래픽을 수신하도록 구성됩니다. 이 어노테이션은service.kubernetes.io/ibm-load-balancer-cloud-provider-zone어노테이션보다 우선하며, 워커 노드에 지정된dedicated: edge레이블은 무시됩니다. 특정 영역으로 트래픽을 제한하려면 이 어노테이션을 사용하여 해당 영역의 워커 노드를 지정할 수 있습니다. 클러스터 워커 노드에 새 레이블을 설정한다고 해서 자동으로 트래픽을 수신하도록 워커 노드가 구성되는 것은 아니며, 새로 레이블이 지정된 워커 노드가 트래픽을 수신하려면 VPC NLB를 다시 만들거나 업데이트해야 합니다. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udp- UDP 로드 밸런서에서 TCP 상태 점검에 사용할 TCP 노드 포트입니다.
externalTrafficPolicy가Cluster로 설정된 UDP 로드 밸런서의 경우 필수입니다. 포트 값을 설정하기 전에 고려해야 할 추가 사항에 대해서는 “ UDP 로드 밸런서를 위한 TCP 상태 확인 구성”을 참조하십시오. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol- 이 어노테이션은 Kubernetes 로드 밸런서 서비스와 연결된 VPC 로드 밸런서 리소스에 대한 상태 확인 프로토콜을 설정합니다. 사용 가능한 옵션은
http,https또는tcp입니다. 일반적으로 VPC LB 상태 확인 프로토콜은 Kubernetes 로드 밸런서 서비스 사양의externalTrafficPolicy설정 값에 따라 결정됩니다. 그러나 이 주석은 해당 논리를 재정의합니다. 이 주석은 Kubernetes, 특히 kube-proxy가externalTrafficPolicy의 다양한 설정과 관련하여 동작하는 방식을 변경하지 않습니다. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port- 상태 확인에 사용되는 TCP 포트로, 이 주석은
ibm-load-balancer-cloud-provider-vpc-health-check-protocol도 지정된 경우에만 적용됩니다. 지정된 TCP 포트가 Kubernetes 노드 포트 범위(30,000~32,767)를 벗어날 경우, 클러스터 워커 노드에 적용된 VPC 보안 그룹을 수정하여 해당 포트에 대한 인바운드 트래픽을 허용해야 합니다. 이 어노테이션이 VPC ALB와 연결된 Kubernetes 로드 밸런서 서비스에 적용되는 경우, VPC ALB에 할당된 보안 그룹의 아웃바운드 규칙을 수정하여 지정된 TCP 포트로의 아웃바운드 트래픽을 허용해야 합니다. 자세한 내용은 기본 클러스터 VPC 네트워킹을 통한 보안 이해하기 및 VPC 보안 그룹 만들기 및 관리하기를 참조하세요. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path- HTTP 및 HTTP 상태 확인을 위한 상태 확인 URL 경로입니다. 이 주석은
ibm-load-balancer-cloud-provider-vpc-health-check-protocol가http또는https로 설정된 경우에만 적용됩니다. URL 경로는 원본 양식 요청 대상의 형식이어야 합니다. 이 어노테이션을 지정하지 않고ibm-load-balancer-cloud-provider-vpc-health-check-protocol어노테이션이http또는https로 설정되어 있는 경우 기본값/이 적용됩니다. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay- 선택사항. 상태 확인 시도 사이에 대기할 시간(초)입니다. 기본적으로 이 값은
5으로 설정되며 최소2에서 최대60까지 가능합니다. 이 값은 기본적으로2으로 설정된ibm-load-balancer-cloud-provider-vpc-health-check-timeout값보다 커야 합니다. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout- 선택사항. 상태 확인에 대한 응답을 기다리는 시간(초)입니다. 기본적으로 이 값은
2으로 설정되며 최소1에서 최대59까지 가능합니다. 이 값은 기본적으로5으로 설정된ibm-load-balancer-cloud-provider-vpc-health-check-delay보다 작아야 합니다. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries- VPC 로드 밸런서에 대한 최대 상태 확인 재시도 횟수입니다. 기본적으로 이 값은
2으로 설정되며 최소1에서 최대10까지 가능합니다. service.kubernetes.io/ibm-load-balancer-cloud-provider-dns-name: "example-ingress-domain.<region>.containers.appdomain.cloud"- 4.16 이상 버전.
- 로드 밸런서의 IP 주소를 지정된 인그레스 도메인에 등록합니다. 지정한 도메인이 없는 경우 내부의 IBM 관리 공급업체(
IBM NS1)를 사용하는 도메인이 만들어집니다. 새 도메인을 만들려면 클러스터에 있는 도메인뿐만 아니라 모든 기존 도메인에서 고유한 이름이어야 합니다. 로드 밸런서 서비스를 삭제하면 도메인에서 IP 주소가 제거됩니다. 그러나 주석을 제거해도 도메인에서 IP 주소가 제거되지는 않습니다. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota- 선택사항입니다. 로드밸런서가 라우팅하는 영역당 작업자 노드 수입니다. 기본값은 8입니다. 3개 존에 워커 노드가 있는 클러스터의 경우, 이로 인해 로드 밸런서가 총 24개의 워커 노드로 트래픽을 라우팅하게 됩니다. 로드 밸런서가 라우팅하는 모든 영역의 총 작업자 노드 수는 50개를 초과할 수 없습니다. 클러스터의 워커 노드가 모든 영역에 걸쳐 50개 미만인 경우, 0을 지정하여 영역의 모든 워커 노드로 라우팅합니다.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-security-group- 1.30 버전 및 이후 버전.
- 선택사항입니다. VPC 부하 분산 장치에 추가할 고객 관리형 보안 그룹입니다. IBM 에서 관리하는 보안 그룹을 사용하지 않으려면 본인이 소유하고 관리하는 보안 그룹을 지정하세요. 이 옵션은 IBM-관리되는 보안 그룹을 제거하고 사용자가 지정한 보안 그룹으로 바꿉니다. 기존 로드 밸런서에서 주석을 제거하면 추가한 보안 그룹이 IBM-관리되는 보안 그룹으로 바뀝니다. 이 주석은 언제든지 추가하거나 삭제할 수 있습니다. 보안 그룹을 관리하고 최신 상태로 유지할 책임은 회원님에게 있습니다.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-allow-outbound-traffic- 기본적으로 보안을 실행하는 클러스터에서 사용할 수 있습니다. 지정한 외부 포트와 연결된 ALB의 각 IP 주소에 대해 보안 그룹을 만드는 주석입니다. 이러한 규칙은 클러스터 보안 그룹에서 만들어집니다.
80,443와 같이 쉼표로 구분된 목록에 유효한 외부 포트를 지정합니다. 이 예에서 각 외부 포트 값과 연결된 각 공개 ALB에 두 개의 IP 주소가 있는 경우 IP 주소당 하나의 아웃바운드 규칙이 생성되어 총 4개의 새 규칙이 만들어집니다. 이 주석은 언제든지 추가하거나 삭제할 수 있습니다. selector- 앱 배치 YAML의
spec.template.metadata.labels섹션에서 사용한 레이블 키(<selector_key>) 및 값(<selector_value>)입니다. 이 사용자 정의 레이블은 앱이 실행되는 모든 팟(Pod)을 식별하여 로드 밸런싱에 포함시킵니다. port- 서비스가 청취하는 포트입니다.
targetPort- 선택사항: 서비스가 트래픽을 지정하는 대상 포트입니다. 포드에서 실행 중인 애플리케이션은 이 대상 포트에서 들어오는 TCP 트래픽을 수신 대기해야 합니다. 대상 포트는 애플리케이션 포드에서 실행 중인 이미지에 정적으로 정의되는 경우가 많습니다. 파드에 구성된 대상 포트는 서비스의 노드 포트와 다르며 VPC LB에 구성된 외부 포트와도 다를 수 있습니다.