如何在K8S中优雅的使用私有镜像库 (Docker版) (2)

.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 生效了。

针对 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 最后

如果大家的私有镜像库还没有采用认证,就赶紧行动起来吧!
血的教训,安全问题刻不容缓。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdgyx.html