跳到內容

從私有容器登錄檔部署映像檔

您可以設定您的 Knative 叢集,以從多個服務和修訂版本中的私有登錄檔部署映像檔。若要執行此動作,您必須使用您的登錄檔憑證建立 Kubernetes 密碼清單 (imagePullSecrets)。然後,您必須將這些密碼新增至所有服務的預設服務帳戶,或單一服務的修訂版本範本。

先決條件

  • 您必須擁有已安裝 Knative Serving 的 Kubernetes 叢集。
  • 您必須有權存取儲存容器映像檔的私有容器登錄檔的憑證。

步驟

  1. 建立一個 imagePullSecrets 物件,其中包含您的憑證作為密碼清單

    kubectl create secret docker-registry <registry-credential-secrets> \
      --docker-server=<private-registry-url> \
      --docker-email=<private-registry-email> \
      --docker-username=<private-registry-user> \
      --docker-password=<private-registry-password>
    

    其中

    • <registry-credential-secrets> 是您想要用於密碼的名稱 (imagePullSecrets 物件)。例如,container-registry

    • <private-registry-url> 是儲存容器映像檔的私有登錄檔 URL。例如,Google Container RegistryDockerHub

    • <private-registry-email> 是與私有登錄檔關聯的電子郵件地址。

    • <private-registry-user> 是您用來存取私有容器登錄檔的使用者名稱。

    • <private-registry-password> 是您用來存取私有容器登錄檔的密碼。

    範例

    kubectl create secret docker-registry container-registry \
      --docker-server=https://gcr.io/ \
      --docker-email=my-account-email@address.com \
      --docker-username=my-grc-username \
      --docker-password=my-gcr-password
    
  2. 選用。建立 imagePullSecrets 物件後,您可以執行下列指令來檢視密碼

    kubectl get secret <registry-credential-secrets> -o=yaml
    
  3. 選用。將 imagePullSecrets 物件新增至 default 命名空間中的 default 服務帳戶。

    注意

    預設情況下,除非指定serviceAccountName,否則您的修訂版本會使用 Knative 叢集命名空間中的每一個default服務帳戶。

    例如,如果您將您的密碼命名為 container-registry,您可以執行下列指令來修改 default 服務帳戶

    kubectl patch serviceaccount default -p "{\"imagePullSecrets\": [{\"name\": \"container-registry\"}]}"
    

    現在,在 default 命名空間中建立的新 Pod 會包含您的憑證,並且可以存取私有登錄檔中的容器映像檔。

  4. 選用。將 imagePullSecrets 物件新增至服務

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: hello
    spec:
      template:
        spec:
          imagePullSecrets:
          - name: <secret-name>
          containers:
            - image: ghcr.io/knative/helloworld-go:latest
              ports:
                - containerPort: 8080
              env:
                - name: TARGET
                  value: "World"
    

我們使用分析和 Cookie 來瞭解網站流量。您使用我們網站的資訊會與 Google 分享,以用於該目的。瞭解更多。