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에서 앱을 배포하는 경우 Kubernetes
cluster-admin
역할이 있는 Kubernetes 서비스 계정(KSA)의 토큰 또는 사용자 인증 정보를 사용하여 VMware용 Anthos 클러스터에 로그인해야 합니다.명령줄을 사용하여 배포하는 경우에는 VMware용 Anthos 클러스터의 클러스터에
cluster-admin
역할이 있어야 합니다.클러스터가 앱의 컨테이너 이미지를 다운로드할 수 있도록 Container Registry에 대한 네트워크 액세스를 설정해야 합니다.
앱 이미지에 액세스하려면 VMware용 Anthos 클러스터 클러스터에서 Container Registry에 액세스하도록 Docker 인증을 설정해야 합니다.
이러한 작업을 완료한 후 앱의 Cloud Marketplace 목록을 열고 앱 배포 단계를 따릅니다.
Container Registry에 대한 네트워크 액세스 권한 설정
앱의 컨테이너 이미지를 다운로드하려면 클러스터에 Container Registry에 대한 네트워크 액세스 권한이 있는지 확인하세요. 클러스터 호스트는 marketplace.gcr.io
을 ping 할 수 있어야 합니다. 액세스를 사용 설정하려면 다음 중 하나 이상을 수행해야 할 수 있습니다.
marketplace.gcr.io
에 대한 액세스를 허용하는 방화벽 규칙을 만드세요.HTTP 또는 HTTPS 프록시를 사용하는 경우
marketplace.gcr.io/*
를 허용하고 프록시를 통해 이미지를 가져오도록 Docker 데몬을 구성합니다.자세한 단계는 프록시 및 방화벽 규칙을 참조하세요.
VPC(Virtual Private Cloud)를 사용하는 경우 비공개 Google 액세스용 호스트를 구성합니다.
VMware용 Anthos 클러스터 설치에 비공개 레지스트리를 사용하려면 Docker 레지스트리를 설정하고 앱에서 이미지를 복사합니다.
자세한 단계는 설치용 비공개 Docker 레지스트리 구성을 참조하세요.
Container Registry에 액세스하도록 Docker 인증 설정
VMware용 Anthos 클러스터의 클러스터에 Container Registry의 앱 이미지에 대한 액세스 권한을 부여하려면 Google Cloud 서비스 계정 키를 만들고 이 키를 사용하여 앱의 네임스페이스에 주석을 추가해야 합니다. 그러면 앱을 배포할 때 키가 네임스페이스의 기본 Kubernetes 서비스 계정(KSA)에 imagePullSecret
로 패치됩니다.
VMware용 Anthos 클러스터의 클러스터에 앱을 처음 배포할 때는 Cloud Marketplace 구성요소에 application-system
이라는 네임스페이스도 만들고 기본 서비스 계정에 imagePullSecret
을 적용해야 합니다.
Container Registry에 대한 인증을 설정하려면 다음 단계를 따르세요.
새 Google Cloud 서비스 계정을 만듭니다. 서비스 계정에 역할을 부여할 필요가 없습니다.
서비스 계정을 만드는 단계는 서비스 계정 만들기 및 관리를 참조하세요.
서비스 계정 키를 만들어 JSON 파일로 다운로드합니다. 키를 만들고 다운로드하는 단계는 서비스 계정 키 만들기 및 관리를 참조하세요.
가능한 경우 VMware용 Anthos 클러스터의 클러스터에 연결하는 데 사용할 워크스테이션에 JSON 키를 업로드합니다.
Cloud Marketplace에서 처음으로 앱을 배포하는 경우 다음 단계에 따라 보안 비밀이 포함된
application-system
네임스페이스를 설정하여 Container Registry에 액세스합니다. 네임스페이스를 이미 설정한 경우 이 단계를 건너뛰세요.클러스터에서
application-system
네임스페이스를 작성합니다.다음 명령을 사용하여
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)"
다음 명령을 사용하여 이
imagePullSecret
을application-system
네임스페이스의 기본 ServiceAccount에 적용합니다.kubectl patch sa default -n application-system -p '"imagePullSecrets": [{"name": "gcr-json-key" }]'
앱을 배포하려는 각 네임스페이스에 대해 새 Kubernetes 보안 비밀을 생성하고 그 보안 비밀로 네임스페이스 주석을 추가해야 합니다. 다른 네임스페이스에서 보안 비밀을 재사용할 수 없습니다.
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
은 앱에 사용하려는 네임스페이스입니다.다음 명령어를 사용하여 앱의 네임스페이스에 주석을 추가합니다.
kubectl annotate namespace $NAMESPACE_NAME marketplace.cloud.google.com/imagePullSecret=$IMAGEPULLSECRET_NAME
Kubernetes 앱 배포에 설명된 대로 Cloud Marketplace에서 앱을 배포할 때 이 네임스페이스를 사용합니다.