系統構件位於管理員叢集的 Artifact Registry 中。如果系統出現錯誤或中斷,而您可透過修補新構件修正問題,請推送新的系統構件。
本文說明如何將個別構件從一個叢集推送至另一個叢集。
事前準備
如要取得權限,以管理員身分存取系統 Artifact Registry 專案中的資源,請要求安全管理員根據您要推送容器映像檔的叢集,授予下列角色:
- 機構組織管理員叢集:如要將容器映像檔推送至機構組織管理員叢集的系統 Artifact Registry,您需要「機構組織系統 Artifact 管理管理員」角色 (
organization-system-artifact-management-admin)。 - 根管理員叢集:如要將容器映像檔推送至根管理員叢集的系統 Artifact Registry,您需要「系統 Artifact 管理員」(
system-artifact-management-admin) 角色。
取得必要權限後,請完成下列步驟,再將映像檔推送至根管理員叢集或機構管理員叢集的系統 Artifact Registry:
按照「gdcloud 指令列介面 (CLI)」的說明,下載並安裝 Distributed Cloud CLI。
按照「安裝元件」的指示安裝
docker-credential-gdcloud元件。gdcloud components install docker-credential-gdcloud-
gdcloud auth login 匯出 kubeconfig 檔案。
gdcloud clusters get-credentials CLUSTER_NAME將 CLUSTER_NAME 替換為叢集名稱。
設定 Docker。
gdcloud auth configure-docker
從 S3 bucket 下載容器映像檔
如要取得從 S3 bucket 下載容器映像檔所需的權限,請要求安全管理員在專案的命名空間中,授予您專案 bucket 物件檢視者 (project-bucket-object-viewer) 角色。
安全管理員會建立角色繫結,授予您存取權:
kubectl create rolebinding IO_USER-bor-rb \
--role=project-bucket-object-viewer \
--user=USER \
-n PROJECT_NAMESPACE
更改下列內容:
- USER:需要角色繫結的使用者帳戶名稱。
- PROJECT_NAMESPACE:S3 bucket 的專案命名空間。
您將取得專案內值區和該值區中物件的唯讀存取權。
取得必要權限後,請按照下列步驟,從專案命名空間的 S3 bucket 下載容器映像檔:
取得 bucket 的密鑰名稱。密鑰名稱如下所示:
object-storage-key-std-user-ID密鑰名稱包含存取 bucket 的專屬
ID值。複製 bucket 的密鑰名稱。
取得值區存取憑證,並設定 s3cmd CLI 工具。
SECRET_NAME=SECRET_NAME ACCESS_KEY=$(kubectl get secret ${SECRET_NAME} -n object-storage-access-keys -o=jsonpath='{.data.access-key-id}' | base64 -d) SECRET_KEY=$(kubectl get secret ${SECRET_NAME} -n object-storage-access-keys -o=jsonpath='{.data.secret-access-key}' | base64 -d) S3_ENDPOINT=objectstorage.$(kubectl get configmap dnssuffix -n gpc-system -o jsonpath='{.data.dnsSuffix}') echo "Access Key: ${ACCESS_KEY}" \ && echo "Secret Key: ${SECRET_KEY}" \ && echo "S3 Endpoint: ${S3_ENDPOINT}" s3cmd --configure將
SECRET_NAME換成您在上一步複製的值。將容器映像檔從 S3 bucket 下載到工作站。
s3cmd get s3://BUCKET_NAME /g/CONTAINER_IMAGE_NAME更改下列內容:
- BUCKET_NAME:含有容器映像檔的 S3 bucket 名稱。
- CONTAINER_IMAGE_NAME:要從 S3 bucket 下載的容器映像檔名稱。
將映像檔推送至系統 Artifact Registry
請按照下列步驟,將工作站中的容器映像檔推送至管理員叢集中的系統 Artifact Registry:
開啟控制台。
取得要推送容器映像檔的叢集系統 Artifact Registry 端點路徑。
export REGISTRY_ENDPOINT=harbor.$(kubectl get configmap dnssuffix -n gpc-system -o jsonpath='{.data.dnsSuffix}')將容器映像檔載入、加上標記,然後推送至叢集的系統 Artifact Registry 端點。
docker load --input CONTAINER_IMAGE_PATH docker tag CONTAINER_IMAGE_PATH ${REGISTRY_ENDPOINT}/CONTAINER_IMAGE_PATH docker push ${REGISTRY_ENDPOINT}/CONTAINER_IMAGE_PATH將 CONTAINER_IMAGE_PATH 替換為本機檔案系統中的容器映像檔路徑。這個路徑的有效值範例為
oracle_db.tar。