개요
Ingress는 클러스터의 Service에 대한 액세스를 허용하는 규칙 모음입니다. 각 URL이 서로 다른 Service에 액세스할 수 있도록 각각의 포워딩 규칙을 구성할 수 있습니다.
Ingress 리소스를 정상적으로 실행하려면 클러스터에서 Ingress-controller를 실행해야 합니다. TKE는 클러스터에서 기본적으로 CLB 기반 l7-lb-controller를 활성화합니다. HTTP 및 HTTPS는 물론 클러스터의 다른 자체 구축 Ingress 컨트롤러를 지원합니다. 비즈니스 요구 사항에 따라 다양한 Ingress 유형을 선택할 수 있습니다.
참고 사항
Tencent Cloud CLB(Cloud Load Balancer) 인스턴스는 2023년 03월 06일에 아키텍처 업그레이드를 완료했습니다. 업그레이드 이후부터는 공중망 CLB는 도메인 이름 형식으로 서비스를 제공합니다. VIP는 서비스 요청에 따라 동적으로 변경되며 콘솔에 더 이상 VIP 주소가 표시되지 않습니다. 도메인 이름 기반 공중망 CLB 출시를 참고하십시오. 신규 Tencent Cloud 사용자는 기본적으로 업그레이드된 도메인 이름 기반 CLB를 사용합니다.
기존 사용자는 기존 CLB를 계속 사용할 수 있으며, 업그레이드에 영향을 받지 않습니다. CLB 서비스를 업그레이드하려면 Tencent Cloud CLB 및 TKE 제품을 동시에 업그레이드해야 하며, 그렇지 않으면 TKE에서 모든 공중망 유형의 Service/Ingress 동기화에 영향을 받을 수 있습니다. CLB 업그레이드 작업의 자세한 내용은 도메인 이름 기반 CLB 업그레이드 가이드를 참고하십시오. TKE Service/Ingress 컴포넌트 버전 업그레이드는 Submit Ticket을 통해 문의하십시오. Ingress apiVersion 지원: extensions/v1beta1 및 networking.k8s.io/v1beta1 API 버전의 Ingress는 v1.22에서 더 이상 사용할 수 없습니다. networking.k8s.io/v1 API는 v1.19(TKE 시나리오는 짝수 버전만 지원하므로 TKE의 v1.20)부터 사용할 수 있습니다. 자세한 내용은 Kubernetes 문서를 참고하십시오. TKE와 CVM에 동일한 CLB를 사용하지 마십시오.
TKE에서 관리하는 CLB의 경우 CLB 콘솔에서 리스너, 포워딩 경로, 인증서 및 백엔드 바인딩 서버를 수정할 수 없습니다. CLB 콘솔에서 변경한 내용은 TKE에서 자동으로 덮어씁니다.
기존 CLB를 사용하는 경우:
TKE에서 자동으로 생성된 CLB가 아닌 CLB 콘솔을 통해 생성된 로드 밸런서만 사용할 수 있습니다.
여러 Ingress에 대해 동일한 CLB를 사용하지 마십시오.
Ingress 및 Service에 동일한 CLB를 사용하지 마십시오.
Ingress를 삭제한 후 재사용된 CLB에 바인딩된 실제 서버는 바인딩을 수동으로 해제해야 합니다. tag tke-clusterId: cls-xxxx는 CLB용으로 유지되며 수동으로 바인딩 해제해야 합니다.
기본적으로 단일 CLB 인스턴스에서 최대 50개의 포워딩 규칙을 생성할 수 있습니다. 더 필요한 경우 Submit Ticket하여 할당량을 늘리십시오. Ingress와 CLB 인스턴스 간의 구성 관리 및 동기화는 CLB ID라는 LoadBalancerResource 유형의 리소스 객체를 기반으로 합니다. 이 CRD에서 작업을 수행하지 마십시오. 그렇지 않으면 Ingress가 실패할 수 있습니다.
Ingress 콘솔 작업 가이드
Ingress 생성
2. 왼쪽 사이드바에서 클러스터를 클릭하여 클러스터 관리 페이지로 이동합니다.
3. Ingress를 생성해야 하는 클러스터 ID를 클릭하여 Ingress의 클러스터 관리 페이지로 이동합니다.
4. 서비스 > Ingress를 선택하여 Ingress 정보 페이지로 이동합니다.
5. 다음과 같이 생성을 클릭하여 “Ingress 생성’ 페이지로 이동합니다.
6. 실제 필요에 따라 Ingress 매개변수를 설정합니다. 주요 매개변수는 다음과 같습니다.
Ingress 이름: 사용자 지정.
네트워크 유형: 기본값은 ‘공중망’입니다. 필요한 경우 다른 네트워크를 선택하십시오.
IP 버전: 필요에 따라 IPv4 또는 IPv6 NAT64를 선택할 수 있습니다.
로드 밸런서: 자동으로 생성하거나 기존 CLB를 사용합니다.
네임스페이스: 실제 필요에 따라 네임스페이스를 선택합니다.
포워딩 구성: ‘프로토콜’의 기본값은 Http입니다. 필요에 따라 프로토콜을 선택할 수 있습니다.
프로토콜 ‘’이 Https를 선택한 경우 액세스 보안을 위해 다음과 같이 서버 인증서를 바인딩해야 합니다.
자세한 내용은 SSL 인증서 요구 사항 및 인증서 형식 변환을 참고하십시오. 포워딩 구성: 실제 필요에 따라 이 매개변수를 설정합니다.
7. Ingress 생성을 클릭하여 Ingress를 생성합니다.
Ingress 업데이트
YAML 업데이트
2. 왼쪽 사이드바에서 클러스터를 클릭하여 클러스터 관리 페이지로 이동합니다.
3. YAML을 업데이트하려는 클러스터 ID를 클릭하여 클러스터 관리 페이지로 이동합니다.
4. 다음과 같이 서비스 > Ingress를 선택하여 Ingress 정보 페이지로 이동합니다. 5. YAML을 업데이트하려는 Ingress 행에서 YAML 편집을 클릭하여 Ingress 업데이트 페이지로 이동합니다.
6. ‘Ingress 업데이트’ 페이지에서 YAML을 편집하고 완료를 클릭하여 YAML을 업데이트합니다.
포워딩 규칙 업데이트
1. 클러스터 관리 페이지에서 YAML을 업데이트할 클러스터 ID를 클릭하여 클러스터 관리 페이지로 이동합니다.
2. 다음과 같이 서비스 > Ingress를 선택하여 Ingress 정보 페이지로 이동합니다. 3. 다음과 같이 포워딩 규칙을 업데이트하려는 Ingress 행에서 포워딩 구성 업데이트를 클릭하여 포워딩 구성 업데이트 페이지로 이동합니다. 4. 실제 필요에 따라 포워딩 구성을 수정하고 포워딩 구성 업데이트를 클릭하여 업데이트를 완료합니다.
Kubectl을 사용하여 Ingress 관리
YAML 예시
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: qcloud ## 옵션: qcloud(CLB 유형 ingress), nginx(nginx-ingress), raefik
## kubernetes.io/ingress.existLbId: lb-xxxxxxxx ##공중망/사설망 액세스를 위한 Ingress를 생성하는 데 사용할 기존 로드 밸런서를 지정합니다
## kubernetes.io/ingress.subnetId: subnet-xxxxxxxx ##CLB 유형의 사설망 Ingress를 생성하는 경우 이 annotation을 지정해야 합니다
name: my-ingress
namespace: default
spec:
rules:
- host: localhost
http:
paths:
- backend:
serviceName: non-service
servicePort: 65535
path: /
kind: Ingress 리소스 유형을 식별합니다.
metadata: Ingress 이름 및 Label과 같은 기본 정보입니다.
metadata.annotations: Ingress에 대한 추가 설명입니다. 이 매개변수를 통해 TKE에 대한 추가 개선 사항을 설정할 수 있습니다.
spec.rules: 단순 라우팅 서비스, 도메인 이름 기반 단순 팬아웃 라우팅, 단순 라우팅을 위한 기본 도메인 이름 및 안전하게 구성된 라우팅 서비스를 구현하도록 구성할 수 있는 Ingress 포워딩 규칙입니다.
annotations: 기존 로드 밸런서를 사용하여 공중망/사설망 액세스를 위한 Ingress 생성
기존 애플리케이션 CLB가 유휴 상태이고, TKE에서 생성한 Ingress에 사용하거나 클러스터 내에서 동일한 CLB를 사용하려면 다음 주석을 사용하여 설정할 수 있습니다.
metadata:
annotations:
kubernetes.io/ingress.existLbId: lb-6swtxxxx
annotations: CLB 유형의 사설망 Ingress 생성
사설망 CLB를 사용하려면 다음 annotations를 사용하여 설정합니다.
metadata:
annotations:
kubernetes.io/ingress.subnetId: subnet-xxxxxxxx
관련 설명
IP 대역폭 패키지 계정을 사용하는 경우, 공중망에 액세스할 수 있는 서비스를 만들 때 다음 두 가지 annotations를 지정해야 합니다.
kubernetes.io/ingress.internetChargeType은 공중망 대역폭 과금 방식을 식별합니다. 옵션은 다음과 같습니다.
TRAFFIC_POSTPAID_BY_HOUR(트래픽별 과금)
BANDWIDTH_POSTPAID_BY_HOUR(대역폭별 과금)
kubernetes.io/ingress.internetMaxBandwidthOut은 대역폭 최댓값을 식별합니다(값 범위: [1, 2000]Mbps).
예시:
metadata:
annotations:
kubernetes.io/ingress.internetChargeType: TRAFFIC_POSTPAID_BY_HOUR
kubernetes.io/ingress.internetMaxBandwidthOut: "10"
Ingress 생성
1. YAML 예시의 지침에 따라 Ingress YAML 파일을 준비합니다. 2. kubectl을 설치하고 클러스터에 연결합니다. 자세한 작업은 클러스터에 연결을 참고하십시오. 3. 다음 명령어를 실행하여 Ingress YAML 파일을 생성합니다.
kubectl create -f Ingress YAML 파일 이름
예를 들어 my-ingress.yaml이라는 Ingress YAML 파일을 생성하려면 다음 명령을 실행합니다.
kubectl create -f my-ingress.yaml
4. 다음 명령을 실행하여 작업이 성공적으로 생성되었는지 확인합니다.
다음과 같은 메시지가 반환되면 생성이 성공한 것입니다.
NAME HOSTS ADDRESS PORTS AGE
clb-ingress localhost 80 21s
Ingress 업데이트
방법1
다음 명령을 실행하여 Ingress를 업데이트합니다.
kubectl edit ingress/[name]
방법2
1. 이전 Ingress를 수동으로 삭제합니다.
2. 다음 명령어를 실행하여 Ingress를 다시 생성합니다.