API 서버 인증서에 도메인 추가

주체 대체 이름(SAN)은 인증서로 보호할 도메인 이름과 하위 도메인 이름을 정의할 수 있는 SSL 인증서의 기능입니다. Google Distributed Cloud 클러스터에서 Kubernetes API 서버 인증서의 기본 SAN에는 제어 영역 노드의 IP 및 VIP 주소와 Kubernetes DNS 이름이 포함됩니다. 커스텀 API 서버 인증서 추가 SAN 기능을 사용하면 클러스터의 Kubernetes API 서버 인증서에 추가 도메인, 하위 도메인, IP 주소를 SAN으로 추가할 수 있습니다.

API 서버 인증서에 커스텀 SAN을 지정하려면 클러스터 구성 사양에서 controlPlane.apiServerCertExtraSANs 필드를 사용하세요. 이 필드에는 도메인 이름 및 IP 주소 목록이 사용됩니다. 이 필드는 선택사항이며 변경할 수 있습니다. 이 필드를 추가하고 클러스터를 만들 때나 이후 언제든지 업데이트할 수 있습니다.

...
kind: Cluster
metadata:
  name: sample001
  namespace: cluster-sample001
spec:
  type: user
  ...
  controlPlane:
    apiServerCertExtraSANs:
    - "demo-dns.example.com"
    - "sample-dns.com"
    nodePoolSpec:
      nodes:
      - address: 10.200.0.20
  clusterNetwork:
  ...

클러스터를 만들 때 도메인 추가

클러스터를 만들 때 SAN을 추가하게 되면, 클러스터가 생성되었을 때 Kubernetes API 서버 인증서에는 지정된 추가 도메인 및 IP 주소가 포함됩니다.

기존 클러스터의 도메인 추가 또는 업데이트

apiServerCertExtraSANs 필드는 변경 가능하므로 언제든지 기존 클러스터에 필드를 추가하거나 업데이트할 수 있습니다. 클러스터에서 apiServerCertExtraSANs 필드를 수정하면 다음 활동이 트리거됩니다.

  • Google Distributed Cloud 클러스터 컨트롤러는 수정된 추가 도메인을 포함하도록 API 서버 인증서를 다시 생성합니다.

  • 클러스터 컨트롤러는 API 서버를 다시 시작하여 새 인증서를 새로고침합니다.

  • 새로운 apiServerCertExtraSANs 값이 RFC 1035 도메인 이름 규칙을 준수하는지 웹훅이 확인합니다.

  • 제어 영역 노드 풀이 조정 상태가 됩니다.

    Control Plane Node Pool Status:
      Anthos Bare Metal Version:  1.28.0-gke.435
      Anthos Bare Metal Versions:
        1.28.0-gke.435:  3
      Conditions:
        ...
        Last Transition Time:  2023-11-15T18:23:49Z
        Observed Generation:   1
        Reason:                Reconciling
        Status:                True
        Type:                  Reconciling
    
  • 변경사항이 각 제어 영역 노드의 Kubernetes API 서버에 전파되면 노드 풀이 준비됩니다.

    Control Plane Node Pool Status:
      Anthos Bare Metal Version:  1.28.0-gke.435
      Anthos Bare Metal Versions:
        1.28.0-gke.435:  3
      Conditions:
        . . .
        Last Transition Time:  2023-11-15T18:32:25Z
        Observed Generation:   1
        Reason:                ReconciliationCompleted
        Status:                False
        Type:                  Reconciling
    

실행 중인 클러스터에서 API 서버 인증서 추가 SAN 필드를 업데이트할 때 다운타임이 발생할 수 있습니다.

  • 고가용성(HA) 클러스터에서 API 서버 인스턴스는 순차적으로 다시 시작됩니다. 부하 분산기가 각 API 서버에 요청을 배포하므로 인증서 업데이트 중에 클러스터와 계속 상호작용할 수 있습니다. 하지만 API 서버가 종료되고 있음을 나타내는 응답이 표시될 수 있습니다. 이 응답이 표시되면 요청을 다시 시도하세요.

  • HA가 아닌 클러스터에서는 API 서버가 새 인증서를 새로고침하도록 다시 시작할 때 약 1분 정도의 중단이 발생할 수 있습니다.

클러스터의 제어 영역 노드 수와 클러스터 로드에 따라 변경 사항이 모든 API 서버에 전파되는 데 5~20분이 소요됩니다.