容器中Secret的基础使用教程

背景:我们都知道yaml文件中可以定义启动容器时使用的镜像所在地址,这里分为两种情况,即公有镜像和私有仓库镜像。

公有镜像,我们可以直接在yaml文件中配置images参数即可,制作容器时会自动去对应的位置拉取镜像,例如:

containers:                
 - name: nginx              
 image: nginx:latest  

这里的镜像就是默认的去docker 镜像仓库拉取,具体拉取哪个仓库取决于你的docker 镜像仓库的配置。

自己搭建的私有镜像,或者是github tencenthub 之类的仓库,私有镜像,需要进行认证的,就不能只是配置镜像地址了,还需要结合Secret 来进行搭配使用。

如:镜像仓库地址:abc.lengxiaofeng.cn (自建harbor仓库)

镜像:abc.lengxiaofeng.cn/cyk/nginx:1.9.0

用户名:admin 密码:*********

实验步骤:

一. 使用当前的镜像仓库信息创建Secret (使用两种方法)

1. 命令行使用kubectl create 命令直接创建

kubectl -n default create secret  docker-registry registry-key   \
--docker-server=abc.lengxiaofeng.cn \
--docker-username=admin \
--docker-password=*********  \
--docker-email=17600****57@163.
注意:-n 参数不填写,默认也是default 这个命名空间内,docker-registry 参数后面接secret 名字。

完毕可以使用get 命令进行查看。

[root@CentOS ~]# kubectl get secret 
NAME                  TYPE                                  DATA      AGE
registry-key          kubernetes.io/dockerconfigjson        1         2h

2.使用yaml 文件的方式创建secret

[root@CentOS ~]# echo -n "admin"| base64 
YWRtaW4=
[root@CentOS ~]# echo -n "1f2d1e2e67df"| base64 
MWYyZDFlMmU2N2Rm

先将个人仓库的用户名和密码转码并保存

现在可以像这样写一个 secret 对象:

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  username: YWRtaW4=
  password: MWYyZDFlMmU2N2Rm

二:secret 创建完,接下来就需要在创建容器的yaml文件中引用secret 了。

apiVersion: v1      #指定api版本,此值必须在kubectl apiversion中,可通过命令kubectl api-versions 查看
kind: ReplicationController     #指定创建资源的角色/类型
metadata:                                       #资源的元数据/属性
  name: nginx-test                          #资源的名字,在同一个namespace中必须唯一
spec:
  replicas: 3                               #副本数量3
  template:                                 #这里Pod的定义
    metadata:
      labels:                               #Pod的label,可以看到这个label与spec.selector相同
        app: nginx-test
    spec:                                 #specification of the resource content 指定该资源的内容
      restartPolicy: Always     #表明该容器一直运行,默认k8s策略,在此容器退出后,会立即创建一个相同的容器
      containers:
      - name: nginx-test                            #容器的名字
        image: abc.lengxiaofeng.cn/cyk/nginx:1.9.0     #容器使用的镜像地址
        ports:
        - containerPort: 80     #容器开发对外的端口
      imagePullSecrets:
      - name: registry-key     #指定使用的secret 

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券