K8S对象-Secret及应用

1. 概述

1.1 作用

  • 用来保存敏感信息,例如密码、OAuth 令牌和 ssh key等等

而ConfigMap只能使用明文保存,因此不适合保存这些。

1.2 三种类型

看帮助文件可知:
image.png

  • docker registry
    作用:为用户提供docker仓库帐号密码
  • generic
    创建基于key value的secret。
  • tls
    从给定的(public/private)公钥/私钥对创建TLS secret 。

2. docker registry

k8s连接镜像仓库,如果是http或者https没有证书,则不能直接下载,需要使用如下方法:

2.1 http库的使用

  • 创建secrete
# kubectl create secret docker-registry  abc-habor-xf --namespace=xinfa --docker-server=10.252.97.209:80 --docker-username=admin --docker-password=Habor209 --docker-email=40010355@qq.com
  • 使用secret
    添加imagePullSecrets一段。
    spec:
      containers:
      - name: web-iot
        image: 10.252.97.57/iot/web-k8sdev:1.2.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          protocol: TCP
          name: web-port
      imagePullSecrets:
      - name: docker-registry

2.2 https仓库的使用

2.2.1 获取config.json的编码

  • 登录https的镜像仓库,生成对应的config.json文件

  • 查看如图:
    添加 /root/.docker/config.json文件如下:

{
	"auths": {
		"10.252.97.57": {
			"auth": "YWRtaW46MVcyM2x5YzQ1ag=="
		}
	},
	"HttpHeaders": {
		"User-Agent": "Docker-Client/18.06.1-ce (linux)"
	}
  • 将json文件生成base64编码
#cat /root/.docker/config.json|base64 -w 0
ewoJImF1dGhzIjogewoJCSIxMC4yNTIuOTcuNTciOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2TVZjeU0yeDVZelExYWc9PSIKCQl9Cgl9LAoJIkh0dHBIZWFkZXJzIjogewoJCSJVc2VyLUFnZW50IjogIkRvY2tlci1DbGllbnQvMTguMDYuMS1jZSAobGludXgpIgoJfQp9

2.2.2 创建secret

  • yaml文件
    创建yml文件如下:
apiVersion: v1
kind: Secret
metadata:
  name: my-harbor
  namespace: iot-01
type: kubernetes.io/dockerconfigjson
data:
    .dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxMC4yNTIuOTcuNTciOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2TVZjeU0yeDVZelExYWc9PSIKCQl9Cgl9LAoJIkh0dHBIZWFkZXJzIjogewoJCSJVc2VyLUFnZW50IjogIkRvY2tlci1DbGllbnQvMTguMDYuMS1jZSAobGludXgpIgoJfQp9
  • 创建secrete
# kubeclt create -f secrete.yaml

2.2.3 使用

同 2.1

3. generic

- 语法

generic NAME [--type=string] [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run]

- 示例

  • 本地文件创建
    创建一个名为my-secret的secret,指定文件内容作为某key的值。
# kubectl create secret generic my-secret --from-file=ssh-privatekey=~/.ssh/id_rsa --from-file=ssh-publickey=~/.ssh/id_rsa.pub
  • 指定键值对创建
    用key1 = supersecret和key2 = topsecret创建一个名为my-secret的secret
kubectl create secret generic my-secret --from-literal=key1=supersecret --from-literal=key2=topsecret
  • 指定evn文件创建
    从env文件创建名为my-secret的secret
# kubectl create secret generic my-secret --from-env-file=path/to/bar.env

4. tls

- 语法

tls NAME --cert=path/to/cert/file --key=path/to/key/file [--dry-run]

- 示例

使用指定的key创建名为tls-secret的TLS secret

kubectl create secret tls tls-secret --cert=path/to/tls.cert --key=path/to/tls.key

posted on 2022-06-07 16:09  运维开发玄德公  阅读(21)  评论(0编辑  收藏  举报  来源

导航