修改系统制品

本页面介绍了如何在 Google Distributed Cloud (GDC) 气隙设备中修改系统制品。

在 GDC 中修改系统制品,以管理和优化部署,

准备工作

如需修改系统制品,您必须获得诊断访问权限,并拥有必要的身份和访问权限角色:

  • 诊断访问权限是一种特权访问模式,用于在客户遇到问题时安全地为其提供支持。您必须创建支持请求,才能获得此访问权限。
  • 系统制品注册表调试器:拥有对所有 Harbor 资源的读取和写入权限。请让您的 Security Admin 为您授予 System Artifact Registry Debugger (sar-debugger) 集群角色。
  • 系统 Artifact Registry harbor-system Secret Debugger:在 harbor-system 命名空间中具有调试器访问权限。请让您的 Security Admin 为您授予 System Artifact Registry harbor-system secret Debugger (sar-harbor-system-secret-debugger) 角色。

上传 Docker 映像

如需修改系统制品,您必须上传新的 Docker 映像。上传方法取决于您将容器映像推送到以下哪个注册表:

以下部分展示了这两种注册表的上传说明。

在引导机器中上传容器映像

如需在引导机器中将容器映像上传到 Artifact Registry,请完成以下步骤:

  1. 确保您拥有已修正重大问题的修改版 Docker 映像。

  2. 将新映像转移到 GDC 环境中的引导节点。

  3. 登录引导节点。

  4. 在引导时在引导机器中找到 Artifact Registry 的地址,并将其设置为 REGISTRY_IP 环境变量:

    REGISTRY=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
    
    REGISTRY_IP=${REGISTRY#https://}
    
  5. 检索用于访问 Artifact Registry 的凭据。检索管理员账号和密码:

    ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin \
        -o jsonpath="{.data.secret}" | base64 -d)
    
  6. 登录 Artifact Registry:

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    系统会输出 Login Succeeded 消息,以验证是否已成功登录 Artifact Registry。

  7. 标记新映像:

    docker image tag CONTAINER_IMAGE_URL \
        $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

    替换以下内容:

    • CONTAINER_IMAGE_URL:本地容器映像网址,例如 gcr.io/repository/image:tag
    • PROJECT_NAME:Artifact Registry 项目名称。
    • IMAGE_NAME:容器映像名称。
    • TAG:容器映像标记。
  8. 将新映像推送到 Artifact Registry:

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

将容器映像上传到组织基础架构集群

如需将容器映像上传到组织基础架构集群上的 Artifact Registry,请完成以下步骤:

  1. 确保您拥有已修正重大问题的修改版 Docker 映像。

  2. 将新映像转移到具有 root 访问权限的节点,该节点具有 root kubeconfig 文件,可访问隔离环境中的组织基础架构集群。

  3. 将组织基础架构集群 kubeconfig 路径导出为环境变量:

    export ORG_INFRA_KUBECONFIG=KUBECONFIG_FILE_PATH
    

    KUBECONFIG_FILE_PATH 替换为 kubeconfig 文件的路径。

  4. 找到集群内 Artifact Registry 地址,并将其设置为 REGISTRY_IP 环境变量:

    REGISTRY=$(kubectl --kubeconfig $ORG_INFRA_KUBECONFIG get harborcluster /
    harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
    
    REGISTRY_IP=${REGISTRY#https://}
    
  5. 确保 REGISTRY_IP 包含有效的网址,例如 10.200.0.36:10443

    echo ${REGISTRY_IP}
    
  6. 检查证书授权机构 (CA) 证书是否存在:

    ls -al /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    

    如果证书不存在,请创建并配置它:

    mkdir -p /etc/docker/certs.d/${REGISTRY_IP}/
    
    chmod 755  /etc/docker/certs.d/${REGISTRY_IP}/
    
    echo $(kubectl get secret harbor-cert-secret -n istio-system -o jsonpath='{.data.ca\.crt}' --kubeconfig $ORG_INFRA_KUBECONFIG) | openssl base64 -A -d >  /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    
    chmod 755 /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    
  7. 检索用于访问 Artifact Registry 的凭据。使用以下命令检索管理员账号和密码:

    ADMIN_PASS=$(kubectl --kubeconfig $ORG_INFRA_KUBECONFIG \
        -n harbor-system get secret harbor-admin \
        -o jsonpath="{.data.secret}" | base64 -d)
    
  8. 登录 Artifact Registry:

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    系统会输出 Login Succeeded 消息,以验证是否已成功登录 Artifact Registry。

  9. 标记新映像:

    docker image tag CONTAINER_IMAGE_URL \
        $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

    替换以下内容:

    • CONTAINER_IMAGE_URL:本地容器映像网址,例如 gcr.io/repository/image:tag
    • PROJECT_NAME:Artifact Registry 项目名称。
    • IMAGE_NAME:容器映像名称。
    • TAG:容器映像标记。
  10. 将新映像推送到 Artifact Registry:

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

修改系统制品

使用 gdcloud artifacts 命令修改 GDC 中的系统制品。通过执行替换软件包、调整配置和应用补丁等操作,更新、自定义和保护您的部署。

执行以下操作:

  • 管理 apt 软件包。
  • 从 OCI 软件包构建和提取映像。
  • 列出根 OCI 映像的可用版本。
  • 修补现有软件包。
  • 将 OCI 软件包拉取到注册表或从注册表推送 OCI 软件包。
  • 显示 OCI 软件包的结构。
  • 解压缩 OCI 软件包。

如需了解详情,请参阅 gdcloud artifacts