從私有容器登錄檔部署映像檔¶
您可以設定您的 Knative 叢集,以從多個服務和修訂版本中的私有登錄檔部署映像檔。若要執行此動作,您必須使用您的登錄檔憑證建立 Kubernetes 密碼清單 (imagePullSecrets
)。然後,您必須將這些密碼新增至所有服務的預設服務帳戶,或單一服務的修訂版本範本。
先決條件¶
- 您必須擁有已安裝 Knative Serving 的 Kubernetes 叢集。
- 您必須有權存取儲存容器映像檔的私有容器登錄檔的憑證。
步驟¶
-
建立一個
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 Registry 或 DockerHub。 -
<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
-
-
選用。建立
imagePullSecrets
物件後,您可以執行下列指令來檢視密碼kubectl get secret <registry-credential-secrets> -o=yaml
-
選用。將
imagePullSecrets
物件新增至default
命名空間中的default
服務帳戶。注意
預設情況下,除非指定
serviceAccountName
,否則您的修訂版本會使用 Knative 叢集命名空間中的每一個default
服務帳戶。例如,如果您將您的密碼命名為
container-registry
,您可以執行下列指令來修改default
服務帳戶kubectl patch serviceaccount default -p "{\"imagePullSecrets\": [{\"name\": \"container-registry\"}]}"
現在,在
default
命名空間中建立的新 Pod 會包含您的憑證,並且可以存取私有登錄檔中的容器映像檔。 -
選用。將
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"