Serving 如何使用私有镜像仓库

Kubernetes 原生给 Pod 添加 imagePullSecrets 有两种方式:

  • 通过 Spec.imagePullSecrets 指定目标私有镜像仓库的 secret
  • 通过 ServiceAccount 关联 目标私有镜像仓库的 secret

无论是哪种方式首先都需要创建一个私有镜像仓库的 secret,可以通过如下命令创建:

kubectl create secret docker-registry regcred --docker-server=registry.cn-beijing.aliyuncs.com --docker-username=user-name --docker-password='password' [email protected]

通过 Spec.imagePullSecrets 指定目标私有镜像仓库的 secret 的方式示例如下:

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: <your-private-image>
  imagePullSecrets:
  - name: regcred

但是 Knative Serving 的 CRD 中没有设计 imagePullSecrets 这个字段, 也就是无法在 revisionTemplate 里面直接指定 imagePullSecrets。但是我们可以在 RevisionTemplate 指定 serviceAccount。只要把 imagePullSecrets 关联到 ServiceAccount 就可以了。示例如下

apiVersion: v1
kind: ServiceAccount
metadata:
  name: bj-image-pull
secrets:
  - name: bj-image-pull-token-t99g6
imagePullSecrets:
  - name: regcred
apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
  name: helloworld-go
  namespace: default
spec:
  runLatest:
    configuration:
      revisionTemplate:
        spec:
          serviceAccountName: "bj-image-pull"
          container:
            image: registry.cn-beijing.aliyuncs.com/cnstarter/helloworld-go:latest
            env:
              - name: TARGET
                value: "Go Sample v1"

参考文档

猜你喜欢

转载自yq.aliyun.com/articles/700595