k8s使用SA和Secret配置私有仓库镜像拉取凭证

我们目前使用的containerd,之前有在config.toml文件中配置私有仓库镜像拉取所需要的账户和密码,实际我们也可以在k8s中配置拉取镜像的认证问题,这样可以不用动config.toml的配置也能拉取到镜像。
实际上有两种方法也可以在k8s中拉取镜像所需的登录状态或者是拉取镜像的凭证

1.使用secret仓库认证信息拉取镜像

1.1.创建Secret

创建Secret类型的资源来存储镜像仓库信息,注意Secret需要和后面引用secret资源的pod命名空间空间一致
kubectl create secret -n <namespace> private-registry-secret \
--docker-server=10.0.1.184:30002 \
--docker-username=admin \
--docker-password=admin12345

1.2.验证Secret

kubectl get secret -n <namespace> private-registry-secret -o yaml

1.3.在pod中引用

然后就可以在镜像中进行引用了,大致示例如下:

apiVersion: v1
kind: Pod
metadata:
  name: private-pod
  namespace: <namespace>
spec:
  containers:
  - name: app
    image: 10.0.1.184:30002/test/ubuntu:latest
  imagePullSecrets:
  - name: private-registry-secret

2.通过SA自动关联Secret

2.1.创建SA并关联Secret

所有使用该SA的Pod会自动继承镜像拉取凭据,注意需要创建的sa和pod命名空间一致。
kubectl create serviceaccount -n <namespace> registry-sa
kubectl patch serviceaccount -n <namespace> registry-sa \
  -p '{"imagePullSecrets": [{"name": "private-registry-secret"}]}'

2.2.验证SA配置

kubectl describe serviceaccount registry-sa -n <namespace>

2.3.在pod中引用

apiVersion: v1
kind: Pod
metadata:
  name: sa-private-pod
  namespace: <namespace>
spec:
  serviceAccountName: registry-sa
  containers:
  - name: app
    image: 10.0.1.184:30002/test/ubuntu:latest

实际以上两种方式都需要创建Secret,推荐的话一般使用第二种方式。

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

转载注明出处:https://sulao.cn/post/1122

评论列表

0%