Google Kubernetes Engine(GKE) 이외의 클러스터에 Kubernetes 앱 배포

VMware용 Anthos 클러스터를 실행하는 Anthos 클러스터와 또는 Istio를 실행 중인 클러스터 같은 비 Google Kubernetes Engine(GKE) 클러스터 구성에 Kubernetes 앱을 배포하려는 경우 이 섹션의 작업을 완료해야 합니다(해당하는 경우).

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

Cloud Marketplace의 Anthos 앱으로 이동

Istio 실행 클러스터에 배포

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

VMware용 Anthos 클러스터에 배포

이 구성을 지원하는 Cloud Marketplace 앱에만 VMware용 Anthos 클러스터를 배포할 수 있습니다. 앱이 VMware용 Anthos 클러스터를 지원하는지 확인하려면 앱의 Cloud Marketplace 목록을 열고 개요에 '이 앱은 GKE On-Prem 배포를 지원합니다' 문구가 있는 찾아보세요.

앱이 VMware용 Anthos 클러스터를 지원하는지 확인한 후 앱을 배포하기 전에 다음 작업을 완료합니다.

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

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

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

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

VMware용 Anthos 클러스터의 클러스터에 Container Registry의 앱 이미지에 대한 액세스 권한을 부여하려면 Google Cloud 서비스 계정 키를 만들고 이 키를 사용하여 앱의 네임스페이스에 주석을 추가해야 합니다. 그러면 앱을 배포할 때 키가 네임스페이스의 기본 Kubernetes 서비스 계정(KSA)에 imagePullSecret로 패치됩니다.

VMware용 Anthos 클러스터의 클러스터에 앱을 처음 배포할 때는 Cloud Marketplace 구성요소에 application-system이라는 네임스페이스도 만들고 기본 서비스 계정에 imagePullSecret을 적용해야 합니다.

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

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

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

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

  3. 가능한 경우 VMware용 Anthos 클러스터의 클러스터에 연결하는 데 사용할 워크스테이션에 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에서 앱을 배포할 때 이 네임스페이스를 사용합니다.