Confidential GKE Node를 통한 사용 중 워크로드 데이터 암호화

이 페이지에서는 Confidential Google Kubernetes Engine 노드를 사용하여 노드 및 워크로드에서 사용 중 데이터 암호화를 시행하는 방법을 보여줍니다. 암호화를 적용하면 워크로드의 보안을 강화할 수 있습니다.

이 페이지는 GKE에서 보안 조치를 구현하는 보안 전문가를 대상으로 합니다. Google Cloud 콘텐츠에서 참조하는 일반적인 역할 및 예시 태스크에 대해 자세히 알아보려면 일반 GKE 사용자 역할 및 태스크를 참조하세요.

이 페이지를 읽기 전에 사용 중인 데이터의 개념을 숙지해야 합니다.

Confidential GKE Node란 무엇인가요?

컨피덴셜 GKE 노드 또는 Hyperdisk Balanced의 비밀 모드로 워크로드를 암호화할 수 있습니다.

Confidential GKE Node

Confidential GKE Node는 Compute Engine 컨피덴셜 VM을 사용하여 하드웨어 기반 메모리 암호화로 사용 중인 데이터를 보호합니다. Confidential GKE Node는 다음 컨피덴셜 컴퓨팅 기술을 지원합니다.

  • AMD SEV (Secure Encrypted Virtualization)
  • AMD Secure Encrypted Virtualization-Secure Nested Paging (SEV-SNP)
  • Intel Trust Domain Extensions (TDX)

이러한 기술에 대한 자세한 내용과 요구사항에 맞는 최적의 기술을 선택하는 데 도움이 되는 내용은 컨피덴셜 VM 개요를 참고하세요.

Confidential GKE Node는 GKE가 클러스터 컨트롤 플레인에 적용하는 보안 조치를 변경하지 않습니다. 이러한 조치에 대해 자세히 알아보려면 컨트롤 플레인 보안을 참고하세요. Google Cloud프로젝트에서 제어 영역에 액세스하는 사용자를 확인하려면 액세스 투명성을 사용하세요.

전체 클러스터, 특정 노드 풀 또는 특정 워크로드에 대해 Confidential GKE Node를 사용 설정할 수 있습니다. 다음 표에서는 이러한 사용 설정 방법을 설명합니다.

Confidential GKE Node 설정 설명 동작
워크로드 수준 ComputeClass에서 Confidential GKE Node를 구성한 다음 워크로드에서 해당 ComputeClass를 선택합니다. GKE는 해당 구성을 사용하여 포드를 실행하는 노드를 만듭니다.

워크로드 설정은 클러스터 모드나 노드 풀 유형과 관계없이 다음 컨피덴셜 컴퓨팅 기술을 지원합니다.

  • AMD SEV
  • AMD SEV-SNP
  • Intel TDX
클러스터 수준 이 설정은 되돌릴 수 없습니다.

새 Autopilot 또는 Standard 클러스터를 만들 때 Confidential GKE Node를 사용 설정합니다. 클러스터의 모든 노드는 Confidential GKE Node를 사용합니다. 개별 노드 풀 또는 워크로드의 클러스터 설정을 재정의할 수 없습니다.

클러스터 수준에서 지원되는 기술은 다음과 같이 클러스터 작업 모드에 따라 다릅니다.

  • Autopilot 클러스터: AMD SEV
  • 표준 클러스터:
    • AMD SEV
    • AMD SEV-SNP
    • Intel TDX
노드 풀 수준 Standard 클러스터에서 새 노드 풀을 만들 때 Confidential GKE Node를 사용 설정합니다. 클러스터 수준에서 Confidential GKE Node가 사용 중지된 경우에만 이 메서드를 사용할 수 있습니다.

노드 풀 수준에서 지원되는 기술은 노드 풀에서 노드 자동 프로비저닝을 사용하는지 여부에 따라 다음과 같이 달라집니다.

  • 수동으로 생성된 노드 풀:
    • AMD SEV
    • AMD SEV-SNP
    • Intel TDX
  • 자동 프로비저닝된 노드 풀:
    • AMD SEV
    • AMD SEV-SNP

Hyperdisk Balanced의 비밀 모드

부팅 디스크 스토리지에서 Hyperdisk Balanced의 비밀 모드를 사용 설정하여 추가 하드웨어 지원 엔클레이브에서 데이터를 암호화할 수도 있습니다.

다음 중 하나를 수행할 때 Hyperdisk Balanced의 비밀 모드를 사용 설정할 수 있습니다.

  • 새 클러스터 만들기
  • 새 노드 풀 만들기

기존 클러스터 또는 노드 풀을 업데이트하여 하이퍼디스크 균형의 비밀 모드 설정을 변경할 수 없습니다.

다음 표에서는 클러스터 수준 또는 노드 풀 수준에서 Hyperdisk Balanced 설정의 비밀 모드를 사용 설정할 때 적용되는 GKE 동작을 보여줍니다.

Hyperdisk Balanced 설정의 비밀 모드 구성 방법 동작
클러스터 수준 새 클러스터 만들기 클러스터의 기본 노드 풀만 Hyperdisk Balanced 설정의 비밀 모드를 사용합니다. 다음을 수행할 수 없습니다.
  • 클러스터의 기존 노드 풀에서 Hyperdisk Balanced 설정의 비밀 모드 사용 중지
  • 기존 클러스터에서 Hyperdisk Balanced 설정의 비밀 모드 사용 설정
노드 풀 수준 새 노드 풀 만들기 생성 시 새 노드 풀에 대해 Hyperdisk Balanced의 비밀 모드 설정을 구성할 수 있습니다. 기존 노드 풀을 업데이트하여 하이퍼디스크 균형의 비밀 모드 설정을 사용할 수 없습니다.

가격 책정

Confidential GKE Node를 구성하는 방식에 따라 다음 가격이 적용됩니다.

Confidential GKE Node 가격 책정
워크로드 수준

Autopilot 워크로드에는 다음 두 가지 비용이 모두 적용됩니다.

  • 포드가 실행되는 Compute Engine 머신 시리즈에 대한 Autopilot 노드 기반 청구 자세한 내용은 Google Kubernetes Engine 가격 책정의 '특정 하드웨어 요구사항이 있는 포드' 섹션을 참고하세요.
  • Confidential GKE Node 가격 책정 자세한 내용은 컨피덴셜 VM 가격 책정의 'GKE Autopilot의 컨피덴셜 GKE 노드 가격 책정' 섹션을 참고하세요.

Standard 워크로드에서는 다음 두 가지 비용이 모두 적용됩니다.

클러스터 수준

Autopilot 클러스터에는 다음 두 가지 비용이 모두 적용됩니다.

  • 클러스터의 기본 머신 시리즈가 N2D로 변경되므로 분산 컴퓨팅 클래스 가격이 적용됩니다. 자세한 내용은 Google Kubernetes Engine 가격 책정의 '균형 및 스케일 아웃 컴퓨팅 클래스 포드' 섹션을 참고하세요.
  • Confidential GKE Node 가격 책정 자세한 내용은 컨피덴셜 VM 가격 책정의 'GKE Autopilot의 컨피덴셜 GKE 노드 가격 책정' 섹션을 참고하세요.

Standard 클러스터에서는 다음 두 가지 비용이 모두 적용됩니다.

노드 풀 수준

Standard 노드 풀에는 다음 비용이 적용됩니다.

또한 Confidential GKE Node는 Confidential GKE Node가 아닌 노드보다 시작 시 로그 데이터를 약간 더 생성할 수 있습니다. 로그 가격 책정에 대한 자세한 내용은 Google Cloud Observability 가격 책정을 참고하세요.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update 명령어를 실행하여 최신 버전을 가져옵니다. 이전 gcloud CLI 버전에서는 이 문서의 명령어를 실행하지 못할 수 있습니다.

요구사항

Confidential GKE Node에는 다음과 같은 요구사항이 있습니다.

  • Autopilot 클러스터는 GKE 버전 1.30.2 이상을 실행해야 합니다.
  • Standard 클러스터는 선택한 컨피덴셜 컴퓨팅 기술에 따라 다음 GKE 버전 중 하나를 실행해야 합니다.

    • AMD SEV: 모든 GKE 버전
    • AMD SEV-SNP: 1.32.2-gke.1297000 이상
    • Intel TDX: 1.32.2-gke.1297000 이상
  • 워크로드 수준에서 Confidential GKE Node를 사용 설정하려면 Autopilot 및 Standard 클러스터가 GKE 버전 1.33.3-gke.1392000 이상을 실행해야 합니다.

  • 노드는 선택한 컨피덴셜 컴퓨팅 기술을 지원하는 머신 유형을 사용해야 합니다. 자세한 내용은 머신 유형, CPU, 영역을 참고하세요.

  • 클러스터 컨트롤 플레인과 노드는 선택한 컨피덴셜 컴퓨팅 기술을 지원하는 위치에 있어야 합니다. 자세한 내용은 지원되는 영역 보기를 참고하세요.

워크로드 수준에서 Confidential GKE Node 구성

개별 워크로드에서 Confidential GKE Node를 사용 설정하려면 ComputeClass를 사용합니다. ComputeClass는 GKE가 만드는 새 노드의 속성을 정의하고 하드웨어를 사용할 수 없는 경우 대체 동작을 제어할 수 있는 Kubernetes 커스텀 리소스입니다. ComputeClass는 클러스터 또는 노드 풀 수준에서 특정 기술이 지원되지 않더라도 GKE에 사용 가능한 모든 컨피덴셜 컴퓨팅 기술을 지원합니다.

워크로드 수준에서 Confidential GKE Node를 구성하려면 다음 단계를 따르세요.

  1. 선택사항: GKE Standard 클러스터의 경우 클러스터에 노드 자동 프로비저닝을 사용 설정합니다. Autopilot 클러스터의 경우 이 단계를 건너뜁니다.

    수동으로 만든 노드 풀에서만 ComputeClasses를 사용하려면 해당 노드 풀에서 노드 taint와 노드 라벨을 수동으로 구성해야 합니다. 이 추가 수동 구성으로 인해 ComputeClass를 사용하여 Confidential GKE Node를 만들 때 얻을 수 있는 이점이 줄어들 수 있습니다.

  2. 다음 ComputeClass 매니페스트를 YAML 파일로 저장합니다. ComputeClass에 지원되는 필드와 값에 관한 자세한 내용은 ComputeClass CustomResourceDefinition을 참고하세요.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      nodePoolConfig:
        confidentialNodeType: CONFIDENTIAL_COMPUTE_TECHNOLOGY
      nodePoolAutoCreation:
        enabled: true
      activeMigration:
        optimizeRulePriority: true
      priorityDefaults:
        location:
          zones: ['ZONE1','ZONE2']
      priorities:
      - machineFamily: MACHINE_SERIES
      - machineType: MACHINE_TYPE
      whenUnsatisfiable: DoNotScaleUp
    

    다음을 바꿉니다.

    • COMPUTE_CLASS: 새 컴퓨팅 클래스의 이름입니다.
    • CONFIDENTIAL_COMPUTE_TECHNOLOGY: 사용할 컨피덴셜 컴퓨팅 기술입니다. 다음 값이 지원됩니다.

      • AMD SEV의 경우 SEV
      • AMD SEV-SNP의 경우 SEV_SNP
      • Intel TDX용 TDX
    • ZONE1,ZONE2,...: 노드를 만들 영역입니다(예: ['us-central1-a','us-central1-b']). 지정한 컨피덴셜 컴퓨팅 기술을 지원하는 영역을 지정합니다. 자세한 내용은 지원되는 영역 보기를 참고하세요.

    • MACHINE_SERIES: 노드의 머신 시리즈입니다(예: n2d). 지정한 컨피덴셜 컴퓨팅 기술을 지원하는 머신 시리즈를 지정합니다. 자세한 내용은 머신 유형, CPU, 영역을 참고하세요.

    • MACHINE_TYPE: 노드의 머신 유형입니다(예: n2d-standard-4). 지정한 컨피덴셜 컴퓨팅 기술을 지원하는 머신 유형을 지정합니다. 자세한 내용은 머신 유형, CPU, 영역을 참고하세요.

    이 매니페스트에는 값이 enabled: truespec.nodePoolAutoCreation 필드가 포함되어 있어 GKE가 노드 자동 프로비저닝을 사용하여 새 노드 풀을 만들 수 있습니다.

  3. 클러스터에서 ComputeClass를 만듭니다.

    kubectl apply -f PATH_TO_COMPUTE_CLASS_MANIFEST
    

    PATH_TO_COMPUTE_CLASS_MANIFEST을 ComputeClass 매니페스트 파일의 경로로 바꿉니다.

  4. 다음 배포 매니페스트를 YAML 파일로 저장합니다.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
      template:
        metadata:
          labels:
            app: hello
        spec:
          nodeSelector:
            # Replace with the name of a compute class
            cloud.google.com/compute-class: COMPUTE_CLASS 
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "250m"
                memory: "1Gi"

  5. 배포를 만듭니다.

    kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
    

    PATH_TO_DEPLOYMENT_MANIFEST을 배포 매니페스트 파일의 경로로 바꿉니다.

GKE가 이 워크로드를 위해 만드는 새 노드는 지정한 컨피덴셜 컴퓨팅 기술을 사용합니다. 이러한 노드는 사용자가 선택한 영역 중 하나에서 ComputeClass에 정의된 머신 유형으로 실행됩니다. GKE는 동일한 ComputeClass를 선택하는 포드만 노드에서 실행될 수 있도록 노드 taint와 노드 라벨을 추가합니다.

클러스터 수준에서 Confidential GKE Node 구성

전체 Autopilot 또는 Standard 클러스터에 대해 Confidential GKE Node를 사용 설정할 수 있습니다. 즉, 클러스터의 모든 노드가 Confidential GKE Node를 사용합니다. 따라서 해당 클러스터에 배포하는 모든 워크로드가 Confidential GKE Node에서 실행됩니다. 개별 워크로드 또는 노드 풀에서 클러스터 설정을 재정의할 수 없습니다.

새 Autopilot 클러스터 만들기

Autopilot 클러스터는 클러스터 수준에서 AMD SEV만 지원합니다. Confidential GKE Node를 사용 설정하면 Autopilot 클러스터의 기본 머신 시리즈가 N2D로 변경됩니다. 워크로드 매니페스트를 변경하지 않고도 이러한 컨피덴셜 노드에서 모든 워크로드를 실행할 수 있습니다.

  • 다음 명령어를 실행합니다.

    gcloud container clusters create-auto CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-confidential-nodes
    

    다음을 바꿉니다.

    • CLUSTER_NAME: Autopilot 클러스터의 이름입니다.
    • CONTROL_PLANE_LOCATION: 클러스터 컨트롤 플레인의 Compute Engine 리전입니다(예: us-central1).

    클러스터는 버전 1.30.2 이상을 실행해야 합니다. 자세한 내용은 특정 출시 채널 및 버전으로 Autopilot 클러스터 만들기를 참고하세요.

새 Standard 클러스터 만들기

표준 클러스터를 만들 때 노드의 컨피덴셜 컴퓨팅 기술을 지정할 수 있습니다. 클러스터를 만들 때 기술을 지정하면 다음과 같은 효과가 있습니다.

  • 해당 클러스터에서는 Confidential GKE Node를 사용하는 노드 풀 또는 워크로드만 만들 수 있습니다.
  • 클러스터를 업데이트하여 Confidential GKE Node를 사용 중지할 수 없습니다.
  • 개별 노드 풀 또는 워크로드에서 클러스터 수준의 컨피덴셜 컴퓨팅 기술을 재정의할 수 없습니다.

클러스터 수준에서 컨피덴셜 컴퓨팅 설정을 구성하면 영구적으로 적용됩니다. 따라서 클러스터를 만들기 전에 다음 사용 사례를 고려하세요.

Confidential GKE Node를 사용하는 Standard 모드 클러스터를 만들려면 다음 옵션 중 하나를 선택하세요.

gcloud

새 클러스터를 만들 때 gcloud CLI에서 --confidential-node-type 옵션을 지정합니다.

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --machine-type=MACHINE_TYPE \
    --node-locations=ZONE1,ZONE2,... \
    --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터 이름입니다.
  • LOCATION: 클러스터 컨트롤 플레인의 Compute Engine 위치입니다. 위치는 지정된 컨피덴셜 컴퓨팅 기술을 지원해야 합니다. 자세한 내용은 사용 가능 여부 섹션을 참고하세요.
  • MACHINE_TYPE: 지정한 컨피덴셜 컴퓨팅 기술을 지원하는 머신 유형입니다. 자세한 내용은 가용성 섹션을 참고하세요.
  • ZONE1,ZONE2,...: 새로운 컨피덴셜 컴퓨팅 기술을 지원하는 컨트롤 플레인 리전의 영역을 쉼표로 구분한 목록입니다. 자세한 내용은 지원되는 영역 보기를 참고하세요.
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY: 사용할 컨피덴셜 컴퓨팅 기술입니다. 다음과 같은 값이 지원됩니다.

    • sev: AMD SEV
    • sev_snp: AMD SEV-SNP
    • tdx: Intel TDX

클러스터 생성 명령어에서 --enable-confidential-nodes 플래그를 사용할 수도 있습니다. 명령어에서 이 플래그만 지정하면 클러스터에서 AMD SEV를 사용합니다. 명령어에 지정하는 머신 유형은 AMD SEV를 지원해야 합니다. 하지만 동일한 명령어에서 --confidential-node-type 플래그를 지정하면 GKE는 --confidential-node-type 플래그에 지정된 값을 사용합니다.

콘솔

  1. Google Cloud 콘솔에서 Kubernetes 클러스터 만들기 페이지로 이동합니다.

    Kubernetes 클러스터 만들기로 이동

  2. 탐색 메뉴의 클러스터 섹션에서 보안을 클릭합니다.

  3. Confidential GKE Node 사용 설정 체크박스를 선택합니다.

  4. 필요한 변경사항 대화상자에서 변경을 클릭합니다.

  5. 유형 메뉴에서 사용할 컨피덴셜 컴퓨팅 기술을 선택합니다.

    선택한 기술에 특정 Compute Engine 머신 시리즈가 필요한 경우 대화상자가 표시됩니다. 변경하기를 클릭하여 노드 풀의 머신 시리즈를 업데이트합니다.

  6. 탐색 메뉴의 노드 풀 섹션에서 default-pool을 클릭합니다.

  7. 노드 풀 세부정보 창에서 다음을 수행합니다.

    1. 노드 위치 지정 체크박스를 선택합니다. 클러스터 리전의 영역 목록이 표시됩니다.
    2. 노드에 선택한 컨피덴셜 컴퓨팅 기술을 지원하는 영역의 체크박스를 선택합니다. 자세한 내용은 지원되는 영역 보기를 참고하세요.
  8. 만들기를 클릭합니다.

클러스터 만들기에 대한 자세한 내용은 리전별 클러스터 만들기를 참고하세요.

Hyperdisk Balanced의 비밀 모드 설정으로 생성된 노드 풀의 경우 노드 풀의 노드만 설정 구성으로 제한됩니다. 클러스터에서 생성된 새 노드 풀의 경우 생성 시 컨피덴셜 모드를 설정해야 합니다.

노드 자동 프로비저닝 구성

자동 프로비저닝된 노드 풀에서 Confidential GKE Node를 사용하도록 노드 자동 프로비저닝을 구성할 수 있습니다. 노드 자동 프로비저닝은 다음 컨피덴셜 컴퓨팅 기술을 지원합니다.

  • AMD SEV
  • AMD SEV-SNP

노드 자동 프로비저닝과 함께 Confidential GKE Node를 사용하려면 클러스터를 만들 때 --enable-confidential-nodes gcloud CLI 플래그를 지정합니다. 다음과 같은 추가 고려사항이 적용됩니다.

  • 클러스터를 만들 때 노드 자동 프로비저닝이 지원하는 컨피덴셜 컴퓨팅 기술을 선택합니다. 이 선택은 클러스터 수준에서 되돌릴 수 없습니다.
  • 기존 클러스터에서 노드 자동 프로비저닝을 사용 설정하는 경우 클러스터에서 노드 자동 프로비저닝이 지원하는 Confidential GKE Node 기술을 이미 사용하고 있어야 합니다.
  • 워크로드를 배포할 때 워크로드가 클러스터의 컨피덴셜 컴퓨팅 기술과 해당 기술에 호환되는 머신 시리즈를 선택하는지 확인합니다.

노드 풀 수준에서 Confidential GKE Node 구성

클러스터 수준에서 Confidential GKE Node가 중지된 경우 특정 노드 풀에서 Confidential GKE Node를 사용 설정할 수 있습니다.

Hyperdisk Balanced 설정의 비밀 모드는 노드 풀 생성 요청 중에 지정해야 합니다.

새 노드 풀 만들기

Confidential GKE Node를 사용 설정하여 새 노드 풀을 만들려면 다음 옵션 중 하나를 선택합니다.

gcloud

다음 명령어를 실행합니다.

gcloud container node-pools create NODE_POOL_NAME \
    --location=LOCATION \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --node-locations=ZONE1,ZONE2,... \
    --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY

다음을 바꿉니다.

  • NODE_POOL_NAME: 새 노드 풀의 이름입니다.
  • LOCATION: 새 노드 풀의 위치입니다. 위치는 지정한 컨피덴셜 컴퓨팅 기술을 지원해야 합니다. 자세한 내용은 사용 가능 여부 섹션을 참고하세요.
  • CLUSTER_NAME: 클러스터 이름입니다.
  • MACHINE_TYPE: 지정한 컨피덴셜 컴퓨팅 기술을 지원하는 머신 유형입니다. 자세한 내용은 사용 가능 여부 섹션을 참고하세요.
  • ZONE1,ZONE2,...: 새로운 컨피덴셜 컴퓨팅 기술을 지원하는 클러스터 리전의 영역을 쉼표로 구분한 목록입니다. 자세한 내용은 지원되는 영역 보기를 참고하세요.
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY: 사용할 컨피덴셜 컴퓨팅 기술입니다. 다음과 같은 값이 지원됩니다.

    • sev: AMD SEV
    • sev_snp: AMD SEV-SNP
    • tdx: Intel TDX

클러스터 생성 명령어에서 --enable-confidential-nodes 플래그를 사용할 수도 있습니다. 명령어에서 이 플래그만 지정하면 클러스터에서 AMD SEV를 사용합니다. 명령어에 지정하는 머신 유형은 AMD SEV를 지원해야 합니다. 하지만 동일한 명령어에서 --confidential-node-type 플래그를 지정하면 GKE는 --confidential-node-type 플래그에 지정된 값을 사용합니다.

콘솔

  1. Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.

    Kubernetes 클러스터로 이동

  2. Standard 클러스터 이름을 클릭합니다.

  3. 노드 풀 추가를 클릭합니다.

  4. 탐색 메뉴에서 보안을 클릭합니다.

  5. 노드 보안 창에서 다음을 수행합니다.

    1. Confidential GKE Node 사용 설정 체크박스를 선택합니다.
    2. 필요한 변경사항 대화상자에서 변경을 클릭합니다.
    3. 유형 메뉴에서 사용할 컨피덴셜 컴퓨팅 기술을 선택합니다.

      선택한 기술에 특정 Compute Engine 머신 시리즈가 필요한 경우 대화상자가 표시됩니다. 변경하기를 클릭하여 노드 풀의 머신 시리즈를 업데이트합니다.

  6. 탐색 메뉴에서 노드 풀 세부정보를 클릭합니다.

  7. 노드 풀 세부정보 창에서 다음을 수행합니다.

    1. 노드 위치 지정 체크박스를 선택합니다. 클러스터 리전의 영역 목록이 표시됩니다.
    2. 노드에 선택한 컨피덴셜 컴퓨팅 기술을 지원하는 영역의 체크박스를 선택합니다. 자세한 내용은 지원되는 영역 보기를 참고하세요.
  8. 선택사항: 노드 풀의 다른 설정을 구성합니다.

  9. 만들기를 클릭합니다.

기존 노드 풀 업데이트

이 변경사항을 적용하려면 노드를 다시 만들어야 하므로 실행 중인 워크로드가 중단될 수 있습니다. 이 특정 변경사항에 관한 자세한 내용은 유지보수 정책을 준수하지 않고 노드 업그레이드 전략을 사용하여 노드를 다시 만드는 수동 변경사항 표에서 해당 행을 찾으세요. 노드 업데이트에 대한 자세한 내용은 노드 업데이트 중단 계획을 참조하세요.

기존 노드 풀을 업데이트하여 Confidential GKE Node를 사용하거나 노드에서 사용하는 컨피덴셜 컴퓨팅 기술을 전환할 수 있습니다. 노드 풀은 다음 요구사항을 모두 충족해야 합니다.

  • 노드는 선택한 컨피덴셜 컴퓨팅 기술을 지원하는 머신 유형을 사용합니다.
  • 노드는 선택한 컨피덴셜 컴퓨팅 기술을 지원하는 영역에서 실행됩니다.

머신 유형과 위치 가용성은 컨피덴셜 컴퓨팅 기술마다 다를 수 있으므로 특정 컨피덴셜 컴퓨팅 기술을 사용 설정하기 전에 노드 풀의 이러한 속성을 업데이트해야 할 수 있습니다.

Confidential GKE Node를 사용하도록 기존 노드 풀을 업데이트하려면 다음 옵션 중 하나를 선택합니다.

gcloud

gcloud CLI를 사용하여 노드 풀에서 컨피덴셜 GKE 노드를 사용 설정하거나 노드의 컨피덴셜 컴퓨팅 기술을 변경할 수 있습니다.

  1. 노드 풀에서 이미 Confidential GKE Node를 사용하고 있다면 Confidential GKE Node를 사용 중지합니다. 노드 풀 업데이트 작업이 완료될 때까지 기다립니다.
  2. 노드 풀 머신 유형과 노드 위치를 새로운 컨피덴셜 컴퓨팅 기술에 지원되는 값으로 변경합니다.

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=CLUSTER_LOCATION \
        --machine-type=MACHINE_TYPE \
        --node-locations=ZONE1,ZONE2,...
    

    다음을 바꿉니다.

    • NODE_POOL_NAME: 기존 노드 풀의 이름입니다.
    • CLUSTER_NAME: 클러스터의 이름입니다.
    • CLUSTER_LOCATION: 클러스터의 위치입니다.
    • MACHINE_TYPE: 새로운 컨피덴셜 컴퓨팅 기술을 지원하는 머신 유형입니다. 자세한 내용은 사용 가능 여부 섹션을 참고하세요.
    • ZONE1,ZONE2,...: 새로운 컨피덴셜 컴퓨팅 기술을 지원하는 클러스터 리전의 영역을 쉼표로 구분한 목록입니다. 자세한 내용은 지원되는 영역 보기를 참고하세요.
  3. 사용할 컨피덴셜 컴퓨팅 기술로 노드 풀을 업데이트합니다.

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=CLUSTER_LOCATION \
        --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY
    

    CONFIDENTIAL_COMPUTE_TECHNOLOGY를 사용할 컨피덴셜 컴퓨팅 기술로 바꿉니다. 다음 값이 지원됩니다.

    • sev: AMD SEV
    • sev_snp: AMD SEV-SNP
    • tdx: Intel TDX

콘솔

선택한 컨피덴셜 컴퓨팅 기술에서 노드 풀의 머신 유형을 지원하는 경우에만 기존 노드 풀을 업데이트하여 Confidential GKE Node를 사용할 수 있습니다. 노드에서 지원되는 머신 유형을 사용하지 않는 경우 이 섹션의 gcloud CLI 안내를 대신 사용하세요.

  1. Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.

    Kubernetes 클러스터로 이동

  2. Standard 클러스터 이름을 클릭합니다.

  3. 노드 탭을 클릭합니다.

  4. 수정할 노드 풀의 이름을 클릭합니다.

  5. 노드 풀 세부정보 페이지에서 수정을 클릭합니다. 노드 풀 수정 창이 열립니다.

  6. 영역 섹션에서 선택한 영역이 컨피덴셜 컴퓨팅 기술을 지원하는지 확인합니다. 자세한 내용은 지원되는 영역 보기를 참고하세요.

    선택한 영역에서 기술을 지원하지 않는 경우 다음을 수행합니다.

    1. 지원되지 않는 영역의 체크박스를 선택 취소합니다.
    2. 선택사항: 지원되는 다른 영역의 체크박스를 선택합니다.
    3. 저장을 클릭합니다. 노드 풀 업데이트 작업이 완료될 때까지 기다립니다.
    4. 수정을 클릭하여 노드 풀 수정 창을 다시 엽니다.
  7. 보안 섹션에서 Confidential GKE Node 사용 설정 체크박스를 선택합니다.

  8. 유형 메뉴에서 노드의 컨피덴셜 컴퓨팅 기술을 선택합니다.

  9. 저장을 클릭합니다.

컨피덴셜 노드 풀에만 워크로드 배치

클러스터 수준에서 Confidential GKE Node를 사용 설정하면 모든 워크로드가 컨피덴셜 노드에서 실행됩니다. 매니페스트를 변경할 필요가 없습니다. 하지만 노드 풀 수준에서 특정 Standard 모드 노드 풀에만 Confidential GKE Node를 사용 설정하는 경우 워크로드가 Confidential GKE Node가 있는 노드 풀에서만 실행되도록 선언적으로 표현해야 합니다.

  • 워크로드가 특정 컨피덴셜 컴퓨팅 기술에서 실행되도록 하려면 다음 예와 같이 cloud.google.com/gke-confidential-nodes-instance-type 라벨이 있는 노드 선택기를 사용하세요.

    apiVersion: v1
    kind: Pod
    spec:
    # For readability, lines are omitted from this example manifest
      nodeSelector:
        cloud.google.com/gke-confidential-nodes-instance-type: "CONFIDENTIAL_COMPUTE_SELECTOR"
    

    CONFIDENTIAL_COMPUTE_SELECTOR을 노드 풀에서 사용하는 기술의 이름으로 바꿉니다. 이 필드는 다음 값을 지원하며, 대문자로 지정해야 합니다.

    • SEV: AMD SEV
    • SEV_SNP: AMD SEV-SNP
    • TDX: Intel TDX
  • 컨피덴셜 컴퓨팅 기술과 관계없이 워크로드가 컨피덴셜 노드에서 실행되도록 하려면 다음 예와 같이 노드 어피니티 규칙을 사용합니다.

    apiVersion: v1
    kind: Pod
    spec:
      containers:
      - name: confidential-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: cloud.google.com/gke-confidential-nodes-instance-type
                operator: Exists
    
  • 사용 가능한 컨피덴셜 컴퓨팅 기술의 일부만 사용하는 노드에서 워크로드를 실행하려면 다음 예와 유사한 노드 어피니티 규칙을 사용하세요.

    apiVersion: v1
    kind: Pod
    spec:
      containers:
      - name: confidential-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: cloud.google.com/gke-confidential-nodes-instance-type
                operator: In
                values:
                - SEV
                - SEV_SNP
                - TDX
    

    values 필드에서 워크로드를 실행할 컨피덴셜 컴퓨팅 기술만 지정합니다.

Confidential GKE Node가 사용 설정되어 있는지 확인

클러스터, 노드 풀, 노드 또는 Compute Engine 인스턴스를 검사하여 클러스터 또는 노드에서 Confidential GKE Node를 사용하는지 확인할 수 있습니다.

클러스터 확인

다음 옵션 중 하나를 선택합니다.

gcloud

클러스터를 설명합니다.

gcloud container clusters describe CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --format='yaml(confidentialNodes.confidentialInstanceType)'

Confidential GKE Node가 사용 설정되면 출력은 다음과 비슷합니다.

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR

콘솔

  1. Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.

    Kubernetes 클러스터로 이동

  2. 검사할 클러스터의 이름을 클릭합니다.

  3. 보안 섹션에서 Confidential GKE Node 필드의 값이 사용 설정인지 확인합니다.

노드 풀 확인

다음 옵션 중 하나를 선택합니다.

gcloud

노드 풀을 설명합니다.

gcloud container node-pools describe NODE_POOL_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --format='yaml(confidentialNodes.confidentialInstanceType,enableConfidentialStorage)'

Confidential GKE Node가 사용 설정되면 출력은 다음과 비슷합니다.

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR

Hyperdisk 균형의 비밀 모드도 사용 설정된 경우 출력은 다음과 비슷합니다.

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR
enableConfidentialStorage: true

콘솔

  1. Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.

    Kubernetes 클러스터로 이동

  2. 검사할 클러스터의 이름을 클릭합니다.

  3. 노드 풀 이름을 클릭합니다.

  4. 보안 섹션에서 Confidential GKE Node 필드의 값이 사용 설정인지 확인합니다.

특정 노드 확인

  1. 노드 이름을 찾습니다.

    kubectl get nodes
    
  2. 노드를 설명합니다.

    kubectl describe NODE_NAME
    

    NODE_NAME을 검사할 노드의 이름으로 바꿉니다.

    출력은 다음과 비슷합니다.

    Name:               gke-cluster-1-default-pool-affsf335r-asdf
    Roles:              <none>
    Labels:             cloud.google.com/gke-boot-disk=pd-balanced
                        cloud.google.com/gke-container-runtime=containerd
                        cloud.google.com/gke-confidential-nodes-instance-type=CONFIDENTIAL_COMPUTE_SELECTOR
                        cloud.google.com/gke-nodepool=default-pool
                        cloud.google.com/gke-os-distribution=cos
                        cloud.google.com/machine-family=e2
    # lines omitted for clarity
    

    이 출력에서 cloud.google.com/gke-confidential-nodes-instance-type 노드 라벨은 노드가 컨피덴셜 노드임을 나타냅니다.

조직 정책 제약조건 설정

조직 정책 제약조건을 정의하여 조직 전체에서 생성된 모든 VM 리소스가 컨피덴셜 VM 인스턴스인지 확인할 수 있습니다. GKE의 경우 비컨피덴셜 컴퓨팅 제한 제약조건을 맞춤설정하여 모든 새 클러스터가 사용 가능한 컨피덴셜 컴퓨팅 기술 중 하나를 사용 설정한 상태로 생성되도록 할 수 있습니다. 조직 정책 제약조건을 적용할 때 거부 목록에 container.googleapis.com API 서비스 이름을 추가합니다. 예를 들면 다음과 같습니다.

gcloud resource-manager org-policies deny \
    constraints/compute.restrictNonConfidentialComputing compute.googleapis.com container.googleapis.com \
    --project=PROJECT_ID

PROJECT_ID를 프로젝트 ID로 바꿉니다.

Hyperdisk Balanced의 비밀 모드용 PersistentVolume 만들기

처리량 또는 IOPS에 허용되는 값에 대한 안내는 하이퍼디스크 볼륨의 성능 수준 계획을 참조하세요.

다음 예시는 각 하이퍼디스크 유형에 대해 하이퍼디스크 균형 StorageClass의 비밀 모드를 만드는 방법을 보여줍니다.

하이퍼디스크 균형

  1. confidential-hdb-example-class.yaml이라는 파일에 매니페스트를 저장합니다.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: balanced-storage
    provisioner: pd.csi.storage.gke.io
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      type: hyperdisk-balanced
      provisioned-throughput-on-create: "250Mi"
      provisioned-iops-on-create: "7000"
      enable-confidential-storage: true
      disk-encryption-kms-key: "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/HSM_KEY_NAME"
    

    다음을 바꿉니다.

    • KMS_PROJECT_ID: Cloud KMS 키를 소유하는 프로젝트
    • REGION: 디스크가 있는 리전입니다.
    • KEY_RING: 키가 포함된 키링의 이름
    • HSM_KEY_NAME: 디스크를 암호화하는 데 사용된 HSM 키의 이름
  2. StorageClass를 만듭니다.

    kubectl create -f hdb-example-class.yaml
    
  3. 하이퍼디스크 균형 볼륨에 비밀 모드를 사용하는 GKE용 하이퍼디스크 영구 볼륨 신청을 만듭니다.

클러스터에서 사용할 수 있는 StorageClass의 이름을 찾으려면 다음 명령어를 실행합니다.

kubectl get sc

제한사항

Confidential GKE Node에는 다음과 같은 제한사항이 있습니다.

Hyperdisk Balanced의 비밀 모드에는 다음과 같은 제한사항이 있습니다.

라이브 마이그레이션 제한사항

N2D 머신 유형을 사용하고 AMD SEV를 컨피덴셜 컴퓨팅 기술로 사용하는 Compute Engine 컨피덴셜 VM은 라이브 마이그레이션을 지원하여 호스트 유지보수 이벤트 시 발생할 수 있는 워크로드 중단을 최소화합니다. 라이브 마이그레이션은 다음 GKE 버전에서 발생합니다.

  • 1.27.10-gke.1218000 이상
  • 1.28.6-gke.1393000 이상
  • 1.29.1-gke.1621000 이상

라이브 마이그레이션이 추가될 때 노드 풀에서 이미 지원되는 버전을 실행 중이었다면 동일한 버전 또는 다른 지원되는 버전으로 노드 풀을 수동으로 업그레이드합니다. 노드를 업그레이드하면 노드가 다시 생성되고 새 노드에서 라이브 마이그레이션이 사용 설정됩니다.

라이브 마이그레이션을 지원하는 Compute Engine 머신 유형에 대한 자세한 내용은 지원되는 구성을 참조하세요.

라이브 마이그레이션을 지원하지 않는 노드에서 호스트 유지보수 이벤트가 발생하면 노드가 NotReady 상태로 전환됩니다. 포드를 실행하면 노드가 다시 준비될 때까지 중단이 발생합니다. 유지보수하는 데 5분이 넘으면 GKE가 다른 노드에서 포드를 다시 만들려고 할 수 있습니다.

Confidential GKE Node 사용 중지

이 변경사항을 적용하려면 노드를 다시 만들어야 하므로 실행 중인 워크로드가 중단될 수 있습니다. 이 특정 변경사항에 관한 자세한 내용은 유지보수 정책을 준수하지 않고 노드 업그레이드 전략을 사용하여 노드를 다시 만드는 수동 변경사항 표에서 해당 행을 찾으세요. 노드 업데이트에 대한 자세한 내용은 노드 업데이트 중단 계획을 참조하세요.

Standard 모드 노드 풀에서만 Confidential GKE Node를 사용 중지할 수 있습니다. 노드 풀이 클러스터 수준에서 Confidential GKE Node를 사용하는 클러스터에 있는 경우 노드 풀 수준에서 이 기능을 사용 중지할 수 없습니다. Confidential GKE Node를 사용 중지하려면 다음 옵션 중 하나를 선택하세요.

gcloud

다음 명령어를 실행합니다.

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=CLUSTER_LOCATION \
    --no-enable-confidential-nodes

콘솔

  1. Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.

    Kubernetes 클러스터로 이동

  2. Standard 클러스터 이름을 클릭합니다.

  3. 노드 탭을 클릭합니다.

  4. 수정할 노드 풀의 이름을 클릭합니다.

  5. 노드 풀 세부정보 페이지에서 수정을 클릭합니다. 노드 풀 수정 창이 열립니다.

  6. 보안 섹션에서 Confidential GKE Node 사용 설정 체크박스를 선택 취소합니다.

  7. 저장을 클릭합니다.

다음 단계