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"

參考文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章