ConfigMap,Secret

风格不统一 提交于 2020-02-19 14:09:24

**

ConfigMap,Secret

**

secret

**
用来保存一些敏感信息,数据是比较少量的。比如数据库的用户名密码或者密钥
一条命令只能保存一条信息

创建secret的四种方式
例举:保存数据库的用户名和密码
用户名是root
密码是123.com
1.通过–from-literal:文字的方式
[root@master secret]# kubectl create secret generic(通用的,一般的) mysecret1 --from-literal=username=root --from-literal=password=123.com

2.通过–from-file:文件的方式
[root@master secret]# echo root > username
[root@master secret]# echo 123.com > password
[root@master secret]# kubectl create secret generic mysecret2 --from-file=username --from-file=password

3.通过–from-env-file:
[root@master secret]# vim env.txt
username=root
password=123.com
[root@master secret]# kubectl create secret generic mysecret3 --from-env-file=env.txt

4.通过yaml文件
把需要保存的数据加密
[root@master secret]# echo root | base64
cm9vdAo=
[root@master secret]# echo 123.com | base64
MTIzLmNvbQo=
[root@master secret]# vim secret4.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysecret4
data:
username: cm9vdAo=
password: MTIzLmNvbQo=
[root@master secret]# kubectl apply -f secret4.yaml

解码:
[root@master secret]# echo -n cm9vdAo= | base64 --decode

去使用secret也有两种方法一个是volumes挂载的方式一个是环境变量的方式

1.以volume挂载的方式
apiVersion: v1
kind: Pod
metadata:
name: pod-secret1
spec:
containers:

  • name: pod-secret1
    image: busybox
    args:
    • /bin/sh
    • -c
    • sleep 300000
      volumeMounts:
    • name: secret-test
      mountPath: “/etc/secret-test”
      readOnly: true
      volumes:
  • name: secret-test
    secret:
    secretName: mysecret1
    还可以自定义存放数据的文件名
    apiVersion: v1
    kind: Pod
    metadata:
    name: pod-secret2
    spec:
    containers:
  • name: pod-secret2
    image: busybox
    args:
    • /bin/sh
    • -c
    • sleep 300000
      volumeMounts:
    • name: secret-test
      mountPath: “/etc/secret-test”
      readOnly: true
      volumes:
  • name: secret-test
    secret:
    secretName: mysecret1
    items:
    • key: username
      path: my-group/my-class
    • key: password
      path: my-group/my-password
      如果想要更新文件的话可使用kubectl edit命令来修改
      2.以环境变量的方式
      apiVersion: v1
      kind: Pod
      metadata:
      name: pod-secret1
      spec:
      containers:
  • name: pod-secret1
    image: busybox
    args:
    • /bin/sh
    • -c
    • sleep 300000
      env:
    • name: SECRET_USERNAME
      valueFrom:
      secretKeyRef:
      name: mysecret1
      key: class
    • name: SECRET_PASSWORD
      valueFrom:
      secretKeyRef:
      name: mysecret1
      key: password
      如果引用secret数据的应用,要求会随着secret资源对象内保存的数据的更新,而实时更新,那么应该使用volumes挂载的方式引用资源。因为用环境变量的方式引用不会实时更新数据**

**

ConfigMap

和secret资源类似,不同之处在于,secret资源保存的是敏感信息,而configMap保存的是以明文方式存放的数据
创建的4种方式(configmap和secret的创建方式几乎一样)
举例:
Username:adam
Age:18
1.通过–from-literal:文字的方式
[root@master secret]# kubectl create configmap myconfigmap1 --from-literal=username=adam --from-literal=age=18

2.通过–from-file:文件的方式
[root@master secret]# echo adam > username
[root@master secret]# echo 18 > age
[root@master secret]# kubectl create configmap myconfigmap2 --from-file=username --from-file=age

3.通过–from-env-file:
[root@master secret]# vim env1.txt
username=adam
age=18
[root@master secret]# kubectl create configmap myconfigmap3 --from-env-file=env1.txt

4.通过yaml文件
[root@master secret]# vim configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: myconfigmap4
data:
username: adam
age: “18”

去使用configmap也有两种方法一个是volumes挂载的方式一个是环境变量的方式
使用vloumes的方式
apiVersion: v1
kind: Pod
metadata:
name: pod1
spec:
containers:

  • name: mypod
    image: busybox
    args:
    • /bin/sh
    • -c
    • sleep 300000
      volumeMounts:
    • name: cmp-test
      mountPath: “/etc/cmp-test”
      readOnly: true
      volumes:
  • name: cmp-test
    configMap:
    name: myconfigmap1

以环境变量的方式引用
apiVersion: v1
kind: Pod
metadata:
name: pod2
spec:
containers:

  • name: mypod
    image: busybox
    args:
    • /bin/sh
    • -c
    • sleep 300000
      env:
    • name: CONFIGMAP_NAME
      valueFrom:
      configMapKeyRef:
      name: myconfigmap2
      key: username
    • name: CONFIGMAP_PASSWORD
      valueFrom:
      configMapKeyRef:
      name: myconfigmap2
      key: age
      **
      1)总结configmap、与secret资源有什么相同和不同之处。
      相同处:configmap和secret的创建方式方式几乎相同
      不同处:configmap是明文而secret是密文(敏感信息)
      2)总结以volumes挂载、和环境变量方式引用资源的相同和不同之处。
      相同处:都是secret和configmap的数据持久化方式
      不同处:在于volumes挂载的方式引用资源会实时更新而环境变量的方式引用资源不会实时更新
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!