从私有容器注册表部署镜像¶
您可以配置您的 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
服务帐户。注意
默认情况下,您的 Knative 集群的每个 命名空间 中的
default
服务帐户将由您的修订版本使用,除非指定了serviceAccountName
。例如,如果您将密钥命名为
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"