로드밸런서 생성 및 삭제
로드밸런서(Load Balancer)는 시스템으로 유입되는 대량의 트래픽을 다수의 서버로 분산시켜 안정적인 서비스 운영을 지원합니다. Kubernetes Engine 서비스에서 로드밸런서 타입의 서비스 생성 시 annotation 옵션에 따라, Network Load Balancer(NLB) 또는 Application Load Balancer(ALB)이 생성됩니다.
로드밸런서 생성
Kubernetes Engine 서비스에서 로드밸런서를 생성하는 방법은 다음과 같습니다.
kr-central-2 리전에서는 서로 다른 AZ(가용 영역)를 사용하도록 클러스터 네트워크를 설정하여, 가용성 높은 Multi-AZ 클러스터를 생성할 수 있습니다. 클러스터의 Subnet이 서로 다른 AZ를 사용하는 Multi-AZ 클러스터에 로드밸런서를 생성할 경우, 클러스터 네트워크가 설정되어있는 모든 AZ에 로드밸런서가 기본 생성됩니다.
Multi-AZ 클러스터의 노드 풀이 특정 1개의 AZ에만 설정된 경우에도, 클러스터의 로드밸런서는 모든 AZ에 생성됩니다. 로드밸런서 타입(NLB 또는 ALB)의 구분 없이 모두 과금 대상에 포함되니 유의해 주세요.
사전 작업
Step 1. kubectl 설치 및 제어 설정하기
Kubernetes에서 Service 객체를 생성하기 위해서는 kubectl를 설치하고, 클러스터에 대한 kubectl 제어를 설정해야 합니다. kubectl 설치 및 제어 설정에 대한 자세한 설명은 kubectl 제어 설정을 참고하시기 바랍니다.
Step 2. SSL 인증서 등록 및 관리하기
Kubernetes에서 Application Load Balancer(ALB)를 생성하고 로드밸런서의 리스너를 TERMINATED_HTTPS로 설정할 경우, SSL 인증서가 필요합니다. Kubernetes에서 생성한 Application Load Balancer에 사용할 SSL 인증서는 아래와 같이 등록 및 관리합니다.
인증서 등록하기
-
카카오클라우드 콘솔에서 Container Pack > Kubernetes Engine > Certification 탭으로 이동합니다.
-
Certification 메뉴에서 [인증서 등록하기] 버튼을 클릭합니다.
-
인증서 등록하기 팝업창에서 필요한 정보를 입력 후, [등록하기] 버튼을 클릭합니다.
-
인증서 목록에서 등록한 인증서 정보를 확인합니다.
인증서 삭제하기
-
카카오클라우드 콘솔에서 Container Pack > Kubernetes Engine > Certification 탭으로 이동합니다.
-
Certification 메뉴에서 삭제할 인증서의 [더 보기] 아이콘 > 인증서 삭제를 선택합니다.
-
인증서 삭제 팝업창에서 정보를 입력하고, [삭제] 버튼을 클릭합니다.
Step 1. 로드밸런서 타입 서비스 명세 확인하기
로드밸런서 타입 서비스의 명세를 확인합니다. app: nginx
와 연동된 로드밸런서 타입 서비스 YAML 파일 예시에서 아래의 2개 항목을 확인합니다.
확인 필요 항목 | 설정값 및 설명 |
---|---|
spec.type | 설정값:LoadBalancer ㄴ 로드밸런서 생성을 위한 서비스 타입 설정 |
metadata.annotations 하위의 annotations | 로드밸런서 타입 설정 설정값 loadbalancer.ke.kakaocloud.com/load-balancer-type ㄴ NLB (기본값) : Network Load Balancer 생성 ㄴ ALB : Application Load Balancer 생성 ㄴ annotation 미설정 시, Network Load Balancer로 기본 생성됩니다. 공인 IP 사용 설정 설정값 service.beta.kubernetes.io/openstack-internal-load-balancer ㄴ true (기본값): 사설 IP를 사용 ㄴ false : 공인 IP를 사용 |
NLB 로드밸런서 타입 서비스 명세 확인
kind: Service
apiVersion: v1
metadata:
name: default-http-nginx-service
annotations:
service.beta.kubernetes.io/openstack-internal-load-balancer: 'true'
loadbalancer.ke.kakaocloud.com/load-balancer-type: 'NLB'
spec:
selector:
app: nginx
type: LoadBalancer
ports:
- name: http
port: 80
targetPort: 80
ALB 로드밸런서 타입 서비스 명세 확인
kind: Service
apiVersion: v1
metadata:
name: default-http-nginx-service
annotations:
service.beta.kubernetes.io/openstack-internal-load-balancer: 'true'
loadbalancer.ke.kakaocloud.com/load-balancer-type: 'ALB'
loadbalancer.openstack.org/default-tls-container-ref: 'https://key-manager.{해당 리전의 인증서 path 입력}/v1/secrets/{인증서 ID 입력}'
spec:
selector:
app: nginx
type: LoadBalancer
ports:
- name: http
port: 80
targetPort: 80