.dockerconfigjson 是base64之后的字符串, 具体内容参考 "编写 Docker 配置文件" 节中的内容
kubectl apply -f docker-reader-secret.yaml 设置 ServiceAccount 的 imagePullSecrets apiVersion: v1 kind: ServiceAccount metadata: name: service1 namespace: basic secrets: - name: service1-token-mp4qs imagePullSecrets: - name: docker-reader-secret 将资源的 serviceAccountName 设置为该 ServiceAccount 的名称 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 serviceAccountName: service1 如何针对命名空间内的所有Pod?K8S 中有个默认的机制,会在命名空间中创建一个名称为 default 的 ServiceAccount (sa) 资源。
并且在资源没有单独指定 serviceAccountName 时, 默认使用 default 作为serviceAccountName。
所以我们只需设置 default ServiceAccount 的 imagePullSecrets 即可对该命名空间中没有特殊指定 serviceAccountName 字段的 Pod 生效了。
创建一个 Docker 注册表机密资源
设置 Pod 的 imagePullSecrets
创建一个 Docker 注册表机密资源参考 "创建一个 Docker 注册表机密资源" 节中的内容
一个具体的 Pod apiVersion: v1 kind: Pod metadata: name: foo namespace: awesomeapps spec: containers: - name: foo image: janedoe/awesomeapp:v1 imagePullSecrets: - name: docker-reader-secret 针对具有 PodTemplate 内容的资源 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 imagePullSecrets: - name: docker-reader-secret 最后如果大家的私有镜像库还没有采用认证,就赶紧行动起来吧!
血的教训,安全问题刻不容缓。