部署容器工作负载

本页介绍了将容器映像上传到 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 Secret 登录 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}
      

授予角色

为您的用户授予创建 Secret 和部署的权限。

  1. 通过添加 secret-admin 角色,向用户授予创建 Secret 的权限。

      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 映像拉取 Secret,以创建 Secret 并部署应用。