컨테이너 배포(GKE, GKE 클러스터)

이 페이지에서는 Google Kubernetes Engine(GKE) 클러스터 또는 Binary Authorization이 사용 설정된 GKE 클러스터에 컨테이너 이미지를 배포하는 방법을 설명합니다. 이미지 배포를 위해 사용하는 kubectl 명령어는 Binary Authorization을 사용하지 않는 클러스터에 이미지를 배포하기 위해 사용하는 것과 동일합니다.

시작하기 전에

프로젝트에 Binary Authorization API가 사용 설정되었고 GKE 클러스터에 Binary Authorization이 사용 설정되었는지 확인하세요. Google Kubernetes Engine에서 설정 또는 GKE 클러스터에서 설정을 참조하세요.

GKE와의 상호작용을 위해 kubectl을 설치합니다.

kubectl 구성

kubectl 설치를 위해 로컬 kubeconfig 파일을 업데이트해야 합니다. 이 파일은 GKE 또는 GKE 클러스터에서 클러스터에 액세스하는 데 필요한 사용자 인증 정보와 엔드포인트 정보를 제공합니다.

kubectl을 구성하려면 다음 gcloud 명령어를 실행합니다.

GKE

gcloud container clusters get-credentials \
    --zone ZONE \
    CLUSTER_NAME

다음을 바꿉니다.

  • ZONE: 클러스터가 실행되는 GKE 영역의 이름(예: us-central1-a)
  • CLUSTER_NAME: 클러스터의 이름입니다.

GKE 클러스터

gcloud container fleet memberships get-credentials \
    --location LOCATION \
    MEMBERSHIP_NAME

다음을 바꿉니다.

  • LOCATION: GKE 클러스터의 Fleet 멤버십 위치입니다(예: global).
  • MEMBERSHIP_NAME: GKE 클러스터의 Fleet 멤버십 이름입니다.

컨테이너 이미지 배포

다음과 같이 컨테이너 이미지를 배포합니다.

  1. 환경 변수를 구성합니다.

    POD_NAME=POD_NAME
    IMAGE_PATH=IMAGE_PATH
    IMAGE_DIGEST=IMAGE_DIGEST
    

    다음을 바꿉니다.

    • POD_NAME: GKE 워크로드에 사용할 이름입니다.
    • IMAGE_PATH: Artifact Registry, Container Registry, 다른 레지스트리의 이미지 경로입니다.
    • IMAGE_DIGEST: 이미지 매니페스트의 다이제스트입니다. 예시는 다음과 같습니다.

      • Artifact Registry:
        • 경로: us-docker.pkg.dev/google-samples/containers/gke/hello-app
        • 다이제스트: sha256:37e5287945774f27b418ce567cd77f4bbc9ef44a1bcd1a2312369f31f9cce567
      • Container Registry:
        • 경로: gcr.io/google-samples/hello-app
        • 다이제스트: sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4

      Artifact Registry에서 이미지의 다이제스트를 가져오는 방법은 이미지 관리를 참조하고, Container Registry의 이미지에 대해서는 이미지 버전 나열을 참조하세요.

  2. kubectl run 명령어를 사용하여 이미지를 배포합니다.

    Binary Authorization에서 이미지 경로와 다이제스트를 모두 사용하여 증명을 조회하므로 1.0 또는 latest와 같은 태그가 아닌 다이제스트를 사용하여 이미지를 배포해야 합니다.

    이미지를 배포하려면 다음 kubectl 명령어를 실행합니다.

    kubectl run ${POD_NAME} \
        --image ${IMAGE_PATH}@${IMAGE_DIGEST}
    

    이제 Binary Authorization에서 배포를 차단했는지 확인합니다.

    kubectl get pods
    

    pod가 나열됩니다.

오류 시 허용

GKE 또는 GKE 클러스터가 어떤 이유로든 Binary Authorization 서버에 연결할 수 없는 경우 시행 프로세스가 오류 시 허용으로 처리됩니다. 예를 들어 컨테이너 이미지를 배포할 때 네트워크 중단으로 인해 Binary Authorization 시행자에 연결할 수 없으면 시행자에서 차단되더라도 이미지가 배포됩니다. Cloud 감사 로그가 사용 설정된 경우 로그 항목에는 Fail Open 조건으로 배포된 이미지가 표시됩니다.

정책을 위반하는 이미지 배포

Binary Authorization은 정책을 위반하더라도 이미지를 배포할 수 있는 breakglass라는 기능을 지원합니다.

자세한 내용은 breakglass 사용을 참조하세요.

삭제

삭제하려면 다음 명령어를 실행하여 포드를 삭제합니다.

  kubectl delete pod ${POD_NAME}
  

다음 단계