IBM Cloud 의 Ingress
Ingress는 앱에 요청을 전달하고 네트워크 트래픽 워크로드를 밸런싱하여 클러스터의 서비스를 공용 또는 사설 네트워크에 노출하는 Kubernetes 서비스 검색 방법입니다. Ingress는 사용자가 구성하고 모든 수신 트래픽에 적용되는 라우팅 규칙 세트를 기반으로 서비스에 대한 외부 액세스를 관리합니다.
IBM Cloud Kubernetes Service 클러스터를 프로비저닝할 때 IBM 은 Ingress를 사용하는 데 필요한 모든 컴포넌트를 제공합니다. 그런 다음 시작할 준비가 되면 Ingress 리소스를 작성하여 이러한 컴포넌트가 함께 작동하는 방법을 지정합니다.
Kubernetes Ingress에 대한 자세한 정보는 Kubernetes 문서를 참조하십시오.
IBM제공 Ingress 컴포넌트
클러스터를 작성할 때 Ingress를 사용하는 데 필요한 모든 컴포넌트가 제공됩니다. Ingress 리소스를 작성할 때 이러한 컴포넌트를 지정합니다.
- Ingress 도메인
- Ingress 클래스
- 애플리케이션 로드 밸런서(ALB)
- TLS 인증서
IBM제공 컴포넌트를 사용하지 않으려는 경우 대신 Ingress 리소스에서 지정하는 사용자 정의 컴포넌트를 작성 할 수 있습니다.
Ingress 도메인
기본 Ingress 도메인은 클러스터의 각 앱에 대한 고유 URL 을 형성하는 데 사용되며 클러스터에 있는 모든 ALB의 IP 주소에서 참조되는 도메인입니다. 클러스터를 작성할 때 고유 Ingress 하위 도메인이 자동으로 작성되고 기본 도메인으로 등록됩니다. 클러스터에 있는 도메인으로 기본 도메인을 변경 할 수 있습니다.
또한 IBM Cloud 내부 도메인 제공업체 또는 IBM Cloud Internet Services 외부 제공업체에 등록된 자신의 도메인을 생성하거나 추가할 수 있습니다.
사설 ALB는 IBM제공 Ingress 하위 도메인을 참조하지 않으며 대신 사용자 정의 도메인 이 필요합니다.
하위 도메인은 다음 형식으로 등록됩니다.
<cluster_name>.<globally_unique_account_HASH>-0000.<region>.containers.appdomain.cloud
다음 표는 하위 도메인의 각 부분을 설명합니다.
| 하위 도메인 컴포넌트 | 설명 |
|---|---|
* |
하위 도메인에 대한 와일드카드가 기본적으로 클러스터에 대해 등록됩니다. |
<cluster_name> |
클러스터의 이름입니다.
|
<globally_unique_account_HASH> |
전세계적으로 고유한 HASH가 IBM Cloud 계정에 대해 작성됩니다. 클러스터에서 NLB에 대해 작성하는 모든 하위 도메인이 전세계적으로 고유한 이 HASH를 사용합니다. |
0000 |
클러스터에서 작성되는 각 서브도메인의 카운터 역할을 합니다. |
<region> |
클러스터가 작성된 지역입니다. |
containers.appdomain.cloud |
IBM Cloud Kubernetes Service 하위 도메인에 대한 하위 도메인입니다. |
각 앱에 대한 고유 URL 을 형성하기 위해 앱 서비스에 대한 경로가 공용 라우트에 추가됩니다. 예를 들어, 다음 앱 URL을 참조하십시오.
mycluster-a1b2cdef345678g9hi012j3kl4567890-0000.us-south.containers.appdomain.cloud/myapp1
Ingress 클래스
Ingress 클래스는 사용되는 Ingress 제어기의 유형을 판별합니다. IBM 에서는 두 개의 Ingress 클래스, 하나의 공용 (public-iks-k8s-nginx) 및 하나의 개인용 (private-iks-k8s-nginx) 을 제공합니다. 두 클래스 모두 NGINX Ingress 제어기를 구현합니다. Ingress 리소스를 작성할 때 사용자가 지정하는 Ingress
클래스는 앱이 공개적으로 또는 개인적으로 노출되는지 여부를 판별합니다.
사용자 고유의 IngressClass 리소스를 작성하여 사용자 정의 Ingress 클래스를 사용할 수 있습니다.
애플리케이션 로드 밸런서(ALB)
ALB는 수신 HTTP, HTTPS또는 TCP 서비스 요청을 청취한 후 Ingress 리소스에서 정의하는 규칙에 따라 해당 요청을 적절한 앱 팟 (Pod) 으로 전달합니다. 클래식 또는 VPC 인프라를 사용하여 표준 클러스터를 작성하는 경우 각 구역에서 하나의 공용 및 하나의 사설 ALB가 자동으로 작성됩니다.
클래식 클러스터의 ALB
클래식 클러스터를 작성할 때 하나의 공용 및 하나의 사설 ALB가 각 구역에서 자동으로 작성됩니다. 클래식 클러스터의 공용 및 사설 ALB에는 클러스터의 수명 동안 변경되지 않는 정적 IP 주소가 지정됩니다.
공용 ALB는 클러스터를 프로비저닝할 때 등록된 동일한 IBM제공 Ingress 하위 도메인을 공유하며 각 공용 ALB의 개별 IP 주소는 이 하위 도메인에 링크됩니다. 공용 ALB의 IP 주소를 찾으려면 ibmcloud ks ingress alb ls 를 실행하고 출력에서 ALB IP 필드를 확인하십시오.
클래식 클러스터의 사설 ALB는 IBM제공 Ingress 하위 도메인을 사용하지 않으며 자동으로 사용으로 설정되지 않습니다. 먼저 CLI에서 사설 ALB를 사용으로 설정한 후 Ingress 리소스에서 private-iks-k8s-nginx 클래스를 지정해야 합니다. 사설 ALB가 사용으로 설정된 후 ibmcloud ks ingress alb ls 를 실행하고 출력에서 ALB IP 필드를 확인하여 사설 IP 주소를 찾을 수 있습니다.
공용 또는 사설 ALB팟 (Pod) 이 다시 스케줄되면 동일한 IP 주소를 유지합니다. 그러나 ALB가 있는 구역을 제거하거나 해당 구역의 VLAN에서 모든 작업자를 제거하면 해당 ALB의 IP 주소가 제거됩니다.
VPC의 ALB
VPC 클러스터를 작성할 때 각 구역에서 하나의 공용 ALB와 하나의 사설 ALB가 자동으로 작성됩니다. 또한 하나의 공용 VPC 로드 밸런서는 VPC의 클러스터 외부에서 자동으로 작성됩니다. VPC 클러스터에서 사설 ALB를 사용으로 설정하면 사설 VPC 로드 밸런서도 작성됩니다.
VPC 클러스터의 ALB에 대한 IP 주소는 정적이 아니며 시간이 지나면서 변경될 수 있으므로 VPC 로드 밸런서가 정적 호스트 이름 뒤에 ALB의 공용 또는 사설 IP 주소를 배치합니다. 공용 또는 사설 ALB에 대해 별도의 호스트 이름이 적용됩니다. ALB 호스트 이름은 클러스터의 Ingress 하위 도메인과 별개입니다.
VPC 클러스터에서 ALB의 호스트 이름을 찾으려면 ibmcloud ks ingress alb ls 를 실행하십시오. 사설 호스트 이름은 사설 ALB가 사용으로 설정된 경우에만 나열됩니다.
ALB에 대한 작업자 노드 요구사항
ALB가 고가용성으로 작동하고 정기적인 업데이트를 수신하려면 클러스터의 구역당 두 개 이상의 작업자 노드가 필요합니다. ALB팟 (Pod) 의 반친화성 규칙은 각 작업자 노드에 하나의 팟 (Pod) 만 스케줄되도록 합니다. ALB 포드에 자동 업데이트가 적용되면 포드가 다시 로드됩니다. 하나의 작업자 노드만 있고 따라서 하나의 ALB팟 (Pod) 이 있는 경우, 팟 (Pod) 은 트래픽 인터럽트를 방지하기 위해 자동으로 업데이트되지 않으며 수동으로 팟 (Pod) 을 삭제하고 새 팟 (Pod) 을 다시 스케줄하는 경우에만 업데이트가 적용됩니다. 구역당 두 개 이상의 작업자 노드가 있는 경우 이 시나리오를 피할 수 있습니다.
존이 실패하면 해당 존의 Ingress ALB에 대한 요청이 간헐적으로 실패할 수 있습니다.
기본 TLS 인증서
클러스터를 작성할 때 IBM제공 Ingress 하위 도메인과 함께 사용할 수 있는 기본 TLS 인증서가 작성됩니다. Ingress 리소스에서 기본 TLS 인증서 또는 사용자가 제공하는 사용자 정의 인증서를 지정할 수 있습니다.
Secrets Manager 를 사용하여 Ingress 하위 도메인 인증서 및 기타 시크릿을 중앙에서 관리하고 자동으로 업데이트하는 것을 고려하십시오.
TLS 인증서를 사용한 Ingress 설정에는 시크릿 작성 또는 가져오기가 포함됩니다. IBM Cloud Ingress API를 사용하여 이러한 단계를 완료하려면 기본 Secrets Manager 인스턴스가 있어야 합니다. 그렇지 않으면 kubectl 명령을 사용하여 인증서를 복사할 수 있습니다.
Ingress 시작하기
클러스터에서 Ingress를 사용할 준비가 되면 Ingress 리소스를 작성 하여 Ingress 컴포넌트를 구성하고, 라우팅 요청에 대한 규칙을 정의하고, 앱 서비스에 대한 경로를 지정하십시오. 노출하려는 앱 또는 서비스를 포함하는 각 네임스페이스에 대해 별도의 Ingress 리소스가 필요합니다.