修改系統構件

本頁說明如何在 Google Distributed Cloud (GDC) 無網路連線裝置中修改系統構件。

在 GDC 中修改系統構件,管理及調整部署作業,

事前準備

如要修改系統構件,您必須取得診斷存取權,並具備必要的 Identity and Access 角色存取權:

  • 診斷存取權是一種特殊存取模式,可讓你在顧客遇到問題時,安全地提供支援。如要取得這項存取權,請建立支援單。
  • 系統構件登錄檔偵錯工具:具備所有 Harbor 資源的讀寫權限。請要求安全管理員授予您「系統構件登錄檔偵錯工具」(sar-debugger) 叢集角色。
  • 系統 Artifact Registry harbor-system 密鑰 Debugger:在 harbor-system 命名空間中具有偵錯工具存取權。請安全管理員授予您「系統構件登錄檔 harbor-system 密碼偵錯工具 (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. 將新映像檔傳輸至具有根存取權的節點,並使用根 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 組合。

詳情請參閱 gdcloud artifacts