GKE 이외의 클러스터에 Kubernetes 애플리케이션 배포

GKE On-Prem을 실행하는 Anthos 클러스터 또는 Istio를 실행하는 클러스터와 같은 비GKE 클러스터 구성에 Kubernetes 애플리케이션을 배포하려는 경우 이 섹션의 작업을 적절하게 완료해야 합니다.

배포하는 애플리케이션에 따라서는 추가 단계를 수행해야 클러스터에서 앱을 실행할 수 있는 경우도 있습니다. 애플리케이션 구성에 대한 자세한 내용은 해당 애플리케이션 공급업체의 문서를 참조하세요.

Cloud Marketplace의 Anthos 앱으로 이동

Istio 실행 클러스터에 배포

Istio 실행 클러스터에서는 타사 서비스(예: OS 패키지 저장소)에 대한 외부 연결이 기본적으로 차단됩니다. 외부 서비스에 대한 액세스를 사용 설정하도록 Istio 이그레스 트래픽을 구성해야 합니다.

GKE On-Prem에 배포

이 구성을 지원하는 Cloud Marketplace 애플리케이션에만 GKE On-Prem 클러스터를 배포할 수 있습니다. 애플리케이션이 GKE On-Prem을 지원하는지 확인하려면 애플리케이션의 Cloud Marketplace 목록을 열고 개요에 '이 애플리케이션은 GKE On-Prem 배포를 지원합니다' 문구가 있는지 찾습니다.

애플리케이션이 GKE On-Prem을 지원하는지 확인한 다음 애플리케이션을 배포하기 전에 다음 작업을 완료합니다.

이러한 작업을 완료한 후 애플리케이션의 Cloud Marketplace 목록을 열고 애플리케이션 배포 단계를 따릅니다.

Container Registry에 대한 네트워크 액세스 권한 설정

애플리케이션의 컨테이너 이미지를 다운로드하려면 클러스터에 Container Registry에 대한 네트워크 액세스 권한이 있는지 확인하세요. 클러스터 호스트는 marketplace.gcr.io을 ping 할 수 있어야 합니다. 액세스를 사용 설정하려면 다음 중 하나 이상을 수행해야 할 수 있습니다.

Container Registry에 액세스하도록 Docker 인증 설정

GKE On-Prem 클러스터에 Container Registry의 애플리케이션 이미지 액세스 권한을 부여하려면 Google Cloud 서비스 계정 키를 작성하고 키로 애플리케이션의 네임스페이스에 주석을 달아야 합니다. 그런 다음 응용 프로그램을 배포할 때 키가 네임 스페이스의 기본 Kubernetes 서비스 계정 (KSA)에 imagePullSecret로 패치됩니다.

애플리케이션을 GKE On-Prem 클러스터에 처음 배포할 때는 Cloud Marketplace 구성요소에 application-system이라는 네임스페이스를 만들고 네임스페이스의 기본 서비스 계정에 imagePullSecret을 적용해야 합니다.

Container Registry에 대한 인증을 설정하려면 다음 단계를 따르세요.

  1. 새 Google Cloud 서비스 계정을 만듭니다. 서비스 계정에 역할을 부여할 필요가 없습니다.

    서비스 계정을 만드는 단계는 서비스 계정 만들기 및 관리를 참조하세요.

  2. 서비스 계정 키를 만들어 JSON 파일로 다운로드합니다. 키를 만들고 다운로드하는 단계는 서비스 계정 키 만들기 및 관리를 참조하세요.

  3. 필요할 경우 GKE On-Prem 클러스터에 연결할 때 사용하는 워크스테이션에 JSON 키를 업로드합니다.

  4. Cloud Marketplace에서 애플리케이션을 처음 배포하는 경우 다음 단계에 따라 보안 비밀이 포함된 application-system 네임스페이스를 설정하여 Container Registry에 액세스합니다. 네임스페이스를 이미 설정한 경우 이 단계를 건너 뛰십시오.

    1. 클러스터에서 application-system 네임스페이스를 작성하십시오.

    2. 다음 명령을 사용하여 application-system에 대해 imagePullSecret이 포함된 암호를 작성하십시오.

      JSON_KEY_FILENAME=path_to/service_account_key.json
      IMAGEPULLSECRET_NAME=gcr-json-key
      kubectl create secret docker-registry $IMAGEPULLSECRET_NAME \
        --namespace="application-system" \
        --docker-server=gcr.io \
        --docker-username=_json_key \
        --docker-password="$(cat $JSON_KEY_FILENAME)"
      
    3. 다음 명령을 사용하여 이 imagePullSecretapplication-system 네임스페이스의 기본 ServiceAccount에 적용하십시오.

      kubectl patch sa default -n application-system -p '"imagePullSecrets": [{"name": "gcr-json-key" }]'
      
  5. 응용 프로그램을 배포하려는 각 네임스페이스마다 새로운 Kubernetes 암호를 생성하고 그 암호로 네임스페이스에 주석을 달아야합니다. 다른 네임스페이스에서 암호를 재사용 할 수 없습니다.

    1. Google Cloud 서비스 계정 키를 사용하여 컨테이너 레지스트리에 액세스할 Kubernetes 암호를 작성하십시오.

      JSON_KEY_FILENAME=path_to/service_account_key.json
      IMAGEPULLSECRET_NAME=gcr-json-key
      kubectl create secret docker-registry $IMAGEPULLSECRET_NAME \
        --namespace=$NAMESPACE_NAME \
        --docker-server=gcr.io \
        --docker-username=_json_key \
        --docker-password="$(cat ~/$JSON_KEY_FILENAME)"
      

      여기서 $NAMESPACE_NAME은 애플리케이션에 사용하려는 네임스페이스입니다.

    2. 다음 명령어를 사용하여 애플리케이션의 네임스페이스에 주석을 추가합니다.

      kubectl annotate namespace $NAMESPACE_NAME marketplace.cloud.google.com/imagePullSecret=$IMAGEPULLSECRET_NAME
      

      Kubernetes 앱 배포에 설명된 대로 Cloud Marketplace에서 앱을 배포할 때 이 네임스페이스를 사용합니다.