系統構件支援 Google Distributed Cloud (GDC) 實體隔離設備系統,並管理 GDC 部署作業。GDC 私人 Artifact Registry 會儲存系統構件。 系統構件的格式有很多種,包括但不限於:
- Anthos、KubeVirt 和 GDC 代管服務的容器映像檔
- 作業系統 (OS) 映像檔
- 韌體格式
- 黃金虛擬機器 (VM) 範本
- Helm 資訊套件
Artifact Registry 會參與各種 GDC 系統作業,例如安裝、升級及資源生命週期,確保作業安全無虞、可擴充且防竄改。
事前準備
如要修改系統構件,您必須取得診斷存取權。診斷存取權是特殊存取模式,可安全地為遇到問題的顧客提供支援。如要取得這項存取權,請建立支援單。
上傳 Docker 映像檔
如要修改系統構件,必須上傳新的 Docker 映像檔。上傳方法取決於您要將容器映像檔推送至下列哪個登錄檔:
- 將容器映像檔上傳至啟動機器的 Artifact Registry。
- 將容器映像檔上傳至管理員叢集中的 Artifact Registry。
以下各節說明這兩種登錄檔類型的上傳指示。
啟動機器中的 Artifact Registry
如要在啟動程序電腦中將容器映像檔上傳至 Artifact Registry,請完成下列步驟:
請確認您已修正重大問題,並取得修改後的 Docker 映像檔。
將新映像檔傳輸至無網路環境中的啟動節點。
登入啟動節點。
在啟動時間,於啟動機器中找出 Artifact Registry 的位址,並將其設為 REGISTRY_IP 環境變數:
REGISTRY=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}') REGISTRY_IP=${REGISTRY#https://}擷取存取 Artifact Registry 的憑證。使用下列指令擷取管理員帳戶和密碼:
ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin \ -o jsonpath="{.data.secret}" | base64 -d)登入 Artifact Registry:
docker login $REGISTRY_IP -u admin -p $ADMIN_PASS系統會列印
Login Succeeded訊息,確認您已成功登入 Artifact Registry。為新映像檔加上標記:
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:容器圖片標記。
- CONTAINER_IMAGE_URL:本機容器圖片網址,例如
將新映像檔推送至 Artifact Registry:
docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
管理員叢集中的 Artifact Registry
如要將容器映像檔上傳至管理員叢集的 Artifact Registry,請完成下列步驟。
請確認您已修正重大問題,並取得修改後的 Docker 映像檔。
將新映像檔傳輸至具有根存取權的節點,並使用根
kubeconfig檔案存取無網路環境中的管理員叢集。將管理員叢集
kubeconfig檔案路徑匯出為環境變數:export ADMIN_CLUSTER_KUBECONFIG=KUBECONFIG_FILE_PATH將 KUBECONFIG_FILE_PATH 替換為
kubeconfig檔案的路徑。找出叢集內 Artifact Registry 的位址,並設為 REGISTRY_IP 環境變數:
REGISTRY=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}') REGISTRY_IP=${REGISTRY#https://}確認 REGISTRY_IP 包含有效網址,例如:
10.200.0.36:10443echo ${REGISTRY_IP}檢查憑證授權單位 (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 $ADMIN_CLUSTER_KUBECONFIG) | openssl base64 -A -d > /etc/docker/certs.d/${REGISTRY_IP}/ca.crt chmod 755 /etc/docker/certs.d/${REGISTRY_IP}/ca.crt擷取存取 Artifact Registry 的憑證。使用下列指令擷取管理員帳戶和密碼:
ADMIN_PASS=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG \ -n harbor-system get secret harbor-admin \ -o jsonpath="{.data.secret}" | base64 -d)登入 Artifact Registry:
docker login $REGISTRY_IP -u admin -p $ADMIN_PASS系統會列印
Login Succeeded訊息,確認您已成功登入 Artifact Registry。為新映像檔加上標記:
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:容器圖片標記。
- CONTAINER_IMAGE_URL:本機容器圖片網址,例如
將新映像檔推送至 Artifact Registry:
docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG