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

Kubernetes 애플리케이션을 GKE 이외의 클러스터 구성 (예 : Anthos GKE 온프렘을 실행하는 Anthos 또는 Istio를 실행하는 클러스터)에 배포하려면, 해당되는 경우 이 섹션의 작업을 완료해야 합니다.

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

Cloud Marketplace의 Anthos 앱으로 이동

Istio 실행 클러스터에 배포

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

Anthos GKE On-Prem에 배포하기

애플리케이션을 Anthos GKE 온프렘 클러스터에 배포하는 경우 애플리케이션을 배포하기 전에 다음 태스크를 완료해야 합니다.

  • Cloud Marketplace에서 애플리케이션을 배포할 경우 Kubernetes cluster-admin 역할이 있는 Kubernetes 서비스 계정(KSA)의 토큰 또는 사용자 인증 정보를 사용하여 Anthos GKE On-Prem 클러스터에 로그인해야 합니다.

  • 명령줄을 사용하여 배포하는 경우 Anthos GKE 온프렘 클러스터에 대한 cluster-admin 역할이 있어야합니다.

  • 클러스터가 애플리케이션의 컨테이너 이미지를 다운로드할 수 있도록 Container Registry에 대한 네트워크 액세스를 설정해야합니다.

  • 애플리케이션의 이미지에 액세스하려면 컨테이너 레지스트리에 액세스하려면 Anthos GKE 온 프레미스 클러스터에서 Docker 인증을 설정해야 합니다.

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

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

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

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

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

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

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

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

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

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

  3. 해당되는 경우 Anthos GKE 온프렘 클러스터에 연결하기 위해 사용하는 워크스테이션에 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에서 앱을 배포할 때 이 네임스페이스를 사용합니다.