部署容器工作負載

本頁說明如何將容器映像檔上傳至 Harbor,並在 GDC Sandbox 執行個體中部署該映像檔。

準備

  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 登錄檔執行個體」一文的說明操作,也可以使用預先建立的 Sandbox Harbor 執行個體:GDC Sandbox 中的預設 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 容器登錄檔提取。

      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 映像檔提取密鑰」,建立密鑰並部署應用程式。