zoukankan      html  css  js  c++  java
  • kubernetes实战篇之为默认账户创建镜像拉取密钥

    系列目录

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

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

    其实知道了原理,并且有了上一节的基础,做法也非常简单,只需要一行命令即可

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

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

    完了之后,大家可以自己验证一下,重新编排一个yml文件,拉取本地没有的镜像,可以看到,yml文件里没有声明imagePullSecrets,也同样可以拉取镜像.我的编排文件如下,非常简单,供大家参考

    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.

    上述操作虽然看似非常简单,却要求非常高,否则很容易出错,当然大家可以选择记住这个命令,然后类似的命令越来越多时,全部记起来显然不是一个好的办法,我们需要一种可行的操作方法.

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

    内容看起来类似如下:

    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
    
  • 相关阅读:
    vue 虚拟列表
    图片验证
    md5 文件上传
    js中apply方法的使用
    js通过replace()方法配合正则去除空格
    使用bind()方法扩充作用域
    取数组最大最小值得方法
    css穿透点击
    为什么选择器li#id名/li.类名的写法
    子元素与父元素等高
  • 原文地址:https://www.cnblogs.com/tylerzhou/p/11113721.html
Copyright © 2011-2022 走看看