从私有容器镜像仓库部署镜像¶
您可以配置您的 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"