tencent cloud

Tencent Kubernetes Engine

문서Tencent Kubernetes Engine

Ingress 인증서 구성

다운로드
포커스 모드
폰트 크기
마지막 업데이트 시간: 2023-04-26 17:03:04
AI 번역

작업 시나리오

본문은 Ingress 인증서를 사용하는 방법을 설명합니다. 다음 시나리오에서 Ingress 인증서를 구성할 수 있습니다.
Ingress를 생성할 때 HTTPS가 리스너 프로토콜로 선택된 경우 적절한 서버 인증서를 선택하면 액세스 보안을 보장하는 데 도움이 됩니다.
모든 HTTPS 도메인 이름에 대해 동일한 인증서를 바인딩하는 경우 Ingress에서 모든 HTTPS 규칙으로 인증서를 구성하여 업데이트를 단순화할 수 있습니다.
서로 다른 인증서를 서로 다른 도메인 이름에 바인딩하면 서버와 클라이언트의 SSL/TLS 성능을 개선하는 데 도움이 됩니다.

참고 사항

미리 구성할 인증서를 생성해야 합니다. 자세한 정보는 콘솔에서 서버 인증서 생성을 참고하십시오.
Secret을 사용하여 Ingress 인증서를 설정해야 합니다. TKE(Tencent Kubernetes Engine) Ingress는 기본적으로 인증서 ID가 포함된 인증서와 동일한 이름으로 Secret을 생성합니다.
인증서를 변경하려면 인증서 플랫폼에서 인증서를 생성하고 Secret 인증서 ID를 업데이트하는 것이 좋습니다. 클러스터 애드온은 Secret 문을 기반으로 동기화되기 때문에 다른 인증서 서비스나 CLB 서비스에서 인증서를 업데이트하면 Secret에서 업데이트를 복원합니다.
Secret 인증서 리소스는 Ingress 리소스와 동일한 Namespace에 있어야 합니다.
Ingress 인증서를 생성하면 동일한 이름의 Secret 인증서 리소스가 콘솔에서 자동으로 생성됩니다. Secret 리소스 이름이 이미 존재하는 경우 Ingress 인증서를 생성할 수 없습니다.
일반적으로 Ingress 인증서를 만들 때 Secret과 연결된 인증서 리소스는 재사용되지 않습니다. 그러나 Secret과 연결된 인증서 리소스를 재사용하는 Ingress 인증서를 계속 생성할 수 있습니다. Secret이 업데이트되면 Secret과 연결된 모든 Ingress 인증서도 업데이트됩니다.
도메인 이름에 대해 일치하는 인증서를 추가하면 CLB SNI 기능이 활성화되며 비활성화할 수 없습니다. 인증서에 해당하는 도메인 이름이 삭제되면 인증서는 기본적으로 Ingress에 해당하는 HTTPS 도메인 이름과 일치합니다.
클래식 CLB는 도메인 이름 또는 URL 기반 포워딩을 지원하지 않습니다. 클래식 CLB를 통해 생성된 Ingress는 여러 인증서로 구성할 수 없습니다.

예시

TKE를 사용하면 Ingress의 spec.tls 필드를 사용하여 Ingress에 대해 생성된 CLB HTTPS 리스너에 대한 인증서를 구성할 수 있습니다. 여기서 secretName은 다음 예시와 같이 Tencent Cloud 인증서 ID를 포함하는 Kubernetes Secret 리소스를 나타냅니다.

Ingress

YAML을 통해 생성:
spec:
tls:
- hosts:
- www.abc.com
secretName: secret-tls-2

Secret

YAML을 통해 생성
TKE 콘솔을 통해 생성
apiVersion: v1
stringData:
qcloud_cert_id: Xxxxxxxx ## 인증서 ID를 Xxxxxxxx(으)로 설정
qcloud_ca_cert_id: Xxxxxxxx ## 인증서 ID를 Xxxxxxxx(으)로 설정합니다. 양방향 인증 구성 시 에만 필요하며, 아래 ‘주의’를 참고하십시오.
kind: Secret
metadata:
name: tencent-com-cert
namespace: default
type: Opaque
TKE 콘솔에서 Secret을 생성할 수 있습니다. 자세한 내용은 Secret 관리를 참고하십시오.
‘Secret 생성’ 페이지에서 Secret의 주요 매개변수는 다음과 같습니다.
이름: 사용자 지정 이름입니다. 이 문서에서는 cos-secret을 예로 사용합니다.
Secret 유형: Opaque를 선택합니다. 이 유형은 키 인증서 및 구성 파일을 저장하는 데 적합합니다. Value는 Base64로 코딩됩니다.
유효 범위: 필요에 따라 범위를 선택하고 Secret이 Ingress와 동일한 Namespace에 있는지 확인해야 합니다.
콘텐츠: 변수 이름을 qcloud_cert_id로 설정하고 변수 값을 서버 인증서 ID로 설정합니다.
참고
상호 인증 인증서를 구성하려면 Secret에 ‘서버 인증서’와 ‘클라이언트 CA 인증서’를 모두 추가해야 합니다. 또한 Secret에 키 쌍을 추가해야 합니다. 변수 이름은 qcloud_ca_cert_id이고 변수 값은 ‘클라이언트 CA 인증서’ ID입니다.

Ingress 인증서 구성

spec.secretName이 하나만 설정되고 hosts가 구성되지 않은 경우 다음 예시와 같이 모든 HTTPS 포워딩 규칙에 대해 인증서가 구성됩니다.
spec:
tls:
- secretName: secret-tls
다음 예시와 같이 와일드카드를 사용하여 레벨1 도메인 이름을 구성할 수 있습니다.
spec:
tls:
- hosts:
- *.abc.com
secretName: secret-tls
인증서와 와일드카드 인증서를 동시에 구성하면 TKE가 우선 순위에 따라 인증서를 선택합니다. 다음 예시와 같이 www.abc.com은 secret-tls-2에 설명된 인증서를 사용합니다.
spec:
tls:
- hosts:
- *.abc.com
secretName: secret-tls-1
- hosts:
- www.abc.com
secretName: secret-tls-2
여러 인증서를 사용한 Ingress를 업데이트하면 TKE Ingress controller가 다음 판단을 수행합니다.
HTTPS에서 rules.host와 일치하는 호스트가 없으면 업데이트를 제출할 수 없습니다.
하나의 TLS 호스트가 HTTPS에서 rules.host와 일치하면 업데이트를 제출할 수 있고 Secret에 해당하는 인증서를 host에 대해 구성할 수 있습니다.
TLS의 SecretName이 변경되면 SecretName의 존재만 확인하고 Secret 콘텐츠는 확인하지 않습니다. 이 경우 Secret이 존재하는 한 업데이트를 제출할 수 있습니다.
참고
Secret의 인증서 ID가 요구 사항을 충족하는지 확인하십시오.

작업 단계

콘솔에서 서버 인증서 생성

설명
대상 인증서가 이미 있는 경우 이 단계를 건너뜁니다.
1. CLB 콘솔에 로그인하고 왼쪽 사이드바에서 인증서 관리를 클릭합니다.
2. ‘인증서 관리’ 페이지에서 생성을 클릭합니다.
3. ‘새 인증서 생성’ 페이지에서 다음 설명에 따라 매개변수를 설정합니다.
인증서 이름: 사용자 지정 인증서 이름을 설정합니다.
인증서 유형: SSL 인증서를 나타내는 서버 인증서를 선택합니다. 보안 데이터 전송을 위한 SSL 인증서 기반의 암호화된 HTTP 프로토콜을 사용하면 사이트를 HTTP(Hypertext Transfer Protocol)에서 HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)로 전환할 수 있습니다.
인증서 콘텐츠: 실제 요구 사항에 따라 인증서 콘텐츠를 입력합니다. 인증서 형식 요구 사항에 대한 자세한 내용은 SSL 인증서 형식을 참고하십시오.
키 콘텐츠: 인증서 유형이 ‘서버 인증서’인 경우에만 표시됩니다. 주요 콘텐츠를 추가하는 방법에 대한 자세한 내용은 SSL 인증서 형식을 참고하십시오.
4. 제출을 클릭합니다.

인증서를 사용하는 Ingress 객체 생성

주의사항:

콘솔에서 생성된 Ingress 객체에 대해 HTTPS 서비스가 활성화되면 인증서 ID를 저장하기 위해 동일한 이름의 Secret 리소스가 생성됩니다. 그 다음 이 Secret이 Ingress에서 사용 및 수신됩니다.
TLS에서 구성할 수 있는 도메인 이름과 인증서 간의 매핑은 다음과 같습니다.
와일드카드가 있는 레벨1 도메인 이름을 구성할 수 있습니다.
도메인 이름이 여러 인증서와 일치하는 경우 인증서가 임의로 선택됩니다. 동일한 도메인 이름에 다른 인증서를 사용하지 않는 것이 좋습니다.
모든 HTTPS 도메인 이름에 대해 인증서를 구성해야 합니다. 그렇지 않으면 Ingress 객체가 생성되지 않을 수 있습니다.

작업 순서:

Ingress 객체를 생성합니다. 자세한 내용은 Ingress 관리를 참고하십시오. 생성하는 동안 수신 포트로 Https:443을 선택합니다.

인증서 수정

주의사항:

인증서를 수정하려면 인증서를 사용하는 모든 Ingress 객체를 확인해야 합니다. 여러 Ingress 객체가 동일한 Secret 리소스로 구성된 경우 이러한 Ingress 객체의 CLB 인증서가 동시에 수정됩니다.
Secret 콘텐츠에는 Tencent Cloud 인증서 ID가 포함되어 있으므로 Secret을 수정하여 인증서를 수정해야 합니다.

작업 순서:

1. 다음 명령을 실행하여 기본 편집기에서 수정할 Secret을 엽니다. [secret-name]을 대상 Secret의 이름으로 바꿔야 합니다.
kubectl edit secrets [secret-name]
2. Secret 리소스를 수정하고 qcloud_cert_id 값을 새 인증서 ID로 변경합니다. Secret 생성과 유사하게 Secret 인증서 ID를 수정하려면 Base64 인코딩이 필요합니다. Base64 수동 인코딩을 선택하거나 stringData를 지정하여 실제 필요에 따라 Base64 자동 인코딩을 수행합니다.

Ingress 객체 업데이트

TKE 콘솔을 통해 업데이트
YAML을 통해 업데이트
1. TKE 콘솔에 로그인하고 왼쪽 사이드바에서 클러스터를 클릭합니다.
2. ‘클러스터 관리’ 페이지에서 Ingress 객체를 수정해야 하는 클러스터 ID를 클릭합니다.
3. 클러스터 세부 정보 페이지의 왼쪽 사이드바에서 서비스 및 경로 > Ingress를 선택합니다.


4. 대상 Ingress 객체를 찾고 작업 열에서 포워딩 구성 업데이트를 클릭합니다.
5. ‘포워딩 구성 업데이트’ 페이지에서 필요에 따라 포워딩 구성 규칙을 업데이트합니다.
6. 포워딩 구성 업데이트를 클릭하여 업데이트를 완료합니다.
다음 명령을 실행하여 기본 편집기에서 수정할 Ingress 객체를 엽니다. yaml 파일을 수정하고 수정 사항을 저장합니다.
kubectl edit ingress <ingressname> -n <namespaces>


도움말 및 지원

문제 해결에 도움이 되었나요?

피드백