컨테이너 워크로드 배포

이 페이지에서는 컨테이너 이미지를 Harbor에 업로드하고 GDC 샌드박스 인스턴스에 해당 이미지를 배포하는 과정을 설명합니다.

준비

  1. 인스턴스에 연결의 안내에 따라 Linux 명령줄 액세스 권한으로 인스턴스에 연결합니다. 원격 데스크톱을 통해 게이트웨이에 연결하거나 Linux 머신에서 sshuttle를 실행할 수 있습니다.

  2. 다음 안내에서 사용할 환경 변수를 설정합니다.

    export TENANT_PROJECT=TENANT_PROJECT # Intended deployment project for the container workflow.
    export HARBOR_INSTANCE_NAME=HARBOR_INSTANCE_NAME # Harbor Container Registry instance name.
    export HARBOR_PROJECT=HARBOR_PROJECT # Container registry project name for your images.
    export AO_USER=AO_USER # Your user name in the instance, e.g.: fop-my-user@example.com.
    export INSTANCE_URL=${HARBOR_INSTANCE_NAME}-${TENANT_PROJECT}.org-1.zone1.google.gdch.test.
    export DOCKER_CONFIG_PATH=DOCKER_CONFIG_PATH # Path to docker config file e.g.: /root/.docker/config.json.
    
  3. Harbor 레지스트리 인스턴스를 만들려면 Harbor 레지스트리 인스턴스 만들기를 따르세요. 또는 미리 만들어진 샌드박스 Harbor 인스턴스를 사용할 수 있습니다. GDC 샌드박스의 기본 user-project에는 이미 배포된 Harbor 인스턴스 user-haas-instance가 포함되어 있으며, 이를 개발에 사용할 수 있습니다.

    export HARBOR_INSTANCE_NAME=user-haas-instance
    export TENANT_PROJECT=user-project
    export INSTANCE_URL=${HARBOR_INSTANCE_NAME}-${TENANT_PROJECT}.org-1.zone1.google.gdch.test
    

Harbor에 이미지 업로드

  1. Harbor 프로젝트 만들기에 따라 Harbor 프로젝트를 만듭니다.

    예:

    gdcloud harbor harbor-projects create HARBOR_PROJECT  \
    --project=TENANT_PROJECT \
    --instance=HARBOR_INSTANCE_NAME 
    
  2. Docker에 로그인합니다. CLI 비밀번호로 Docker 또는 Helm에 로그인에서 시작하세요.

  3. 컨테이너 이미지를 다운로드하거나 빌드하고 Google Distributed Cloud 오프라인 지침에 따라 이미지를 푸시하여 Harbor로 푸시합니다.

    예를 들어 Gitlab에서 가져오고 Harbor로 푸시하는 워크플로는 다음과 같습니다.

    1. 로그인하고 Gitlab Container Registry에서 가져옵니다.

      export GITLAB_ID=GITLAB_ID
      export GITLAB_PROJECT_NAME=GITLAB_PROJECT_NAME
      export GITLAB_IMAGE_PATH=registry.gitlab.com/GITLAB_ID/GITLAB_PROJECT_NAME
      docker login registry.gitlab.com
      docker pull ${GITLAB_IMAGE_PATH}
      
    2. Gitlab 이미지를 Harbor로 푸시합니다.

      export TAG=demo-image
      docker tag ${TAG} ${GITLAB_IMAGE_PATH}
      docker push ${INSTANCE_URL}/${HARBOR_PROJECT}/${TAG}
      

역할 부여

사용자에게 보안 비밀 및 배포를 만들 수 있는 권한을 부여합니다.

  1. secret-admin 역할을 추가하여 사용자에게 보안 비밀을 만들 수 있는 권한을 부여합니다.

      gdcloud projects add-iam-policy-binding PROJECT \
        --member="user:${AO_USER}" \
        --role=secret-admin
    
  2. namespace-admin 역할을 추가하여 사용자에게 컨테이너 워크로드를 배포할 수 있는 권한을 부여합니다.

      gdcloud projects add-iam-policy-binding PROJECT \
        --member="user:${AO_USER}" \
        --role=namespace-admin
    

컨테이너 앱 배포

Kubernetes 이미지 가져오기 보안 비밀 만들기로 계속 진행하여 보안 비밀을 만들고 앱을 배포합니다.