kubernetes实战篇之为默认帐户建立镜像拉取密钥

系列目录html

上一节咱们分别使用纯文本帐户密码和docker的config文件一建立一个kubernetes secret对象,而且把它添加到containers的imagePullSecrets字段用以拉取私仓镜像.这一节咱们讲解另外一种方法:即把secret附加到default这个serviceaccount上,这样拉取镜像的时候就不须要每次都在yml文件里声明imagePullSecrets字段.nginx

至于为何把镜像的拉取secret附加到default这个serviceaccont上就能够实现无密钥拉取,实际上这里涉及到了kubernetes的RBAC权限,本教程其它章节有介绍过,这里再也不详细介绍.默认状况下,拉取镜像使用的是default这个帐户,若是给这个帐户添加了镜像拉取secret,则它会在拉取镜像时自动使用附加的secret,这样就不用在每一个yml文件里都声明imagePullSecrets字段了.docker

其实知道了原理,而且有了上一节的基础,作法也很是简单,只须要一行命令便可api

kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "regcred"}]}'

regcred是咱们上一节生成的密钥.bash

完了以后,你们能够本身验证一下,从新编排一个yml文件,拉取本地没有的镜像,能够看到,yml文件里没有声明imagePullSecrets,也一样能够拉取镜像.个人编排文件以下,很是简单,供你们参考ui

apiVersion: v1
kind: Pod
metadata:
  name: testport
spec:
  containers:
  - name: cat-hosts
    image: 192.168.124.43:8002/rancher/nginx-ingress-controller-defaultbackend:1.4
    imagePullPolicy: IfNotPresent

使用修改yml的方式为default用户增长imagePullSecrets.

上述操做虽然看似很是简单,却要求很是高,不然很容易出错,固然你们能够选择记住这个命令,而后相似的命令愈来愈多时,所有记起来显然不是一个好的办法,咱们须要一种可行的操做方法.spa

  1. 把sa的编排文件导出到其它文件
kubectl get serviceaccounts default -o yaml > ./sa.yaml

内容看起来相似以下:3d

apiVersion: v1
kind: ServiceAccount
metadata:
  creationTimestamp: 2015-08-07T22:02:39Z
  name: default
  namespace: default
  resourceVersion: "243024"
  selfLink: /api/v1/namespaces/default/serviceaccounts/default
  uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6
secrets:
- name: default-token-uudge
  1. 咱们编辑这个文件,增长一个imagePullSecrets字段,并把regcred赋给它,这样两者之间就创建了关联
apiVersion: v1
kind: ServiceAccount
metadata:
  creationTimestamp: 2015-08-07T22:02:39Z
  name: default
  namespace: default
  selfLink: /api/v1/namespaces/default/serviceaccounts/default
  uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6
secrets:
- name: default-token-uudge
imagePullSecrets:
- name: regcred
  1. 更新default这个帐户
kubectl replace serviceaccount default -f ./sa.yaml

原文出处:https://www.cnblogs.com/tylerzhou/p/11113721.htmlcode

相关文章
相关标签/搜索