kubernetes基础知识之secret环境变量

kubernetes secret资源对象可以通过secret.yaml创建出来:

apiVersion: v1

kind: Secret

metadata:

name: mysecret

namespace: default

type: Opaque

data:

username: YWRtaW4K

password: MTIzCg==

kubectl create -f secret.yaml

可以通过deployment类型的控制器创建pod,调用secret资源对象进行使用:

apiVersion: v1

kind: Deployment

metadata:

labels:

app: opaque-secret-env

name: opaque-secret-env-deploy

namespace: default

spec:

replicas: 3

selector:

matchLabels:

app: op-se-env-pod

template:

metadata:

labels:

app: op-se-env-pod

spec:

containers:

- image: nginx

name: myapp-container

ports:

- containerPort: 80

env:

- name: TEST_USER

valueFrom:

secretKeyRef:

name: mysecret

key: username

- name: TEST_PASSWORD

valueFrom:

secretKeyRef:

name: mysecret

key: password

secret增加了获取密码的难度。

可以执行kubectl命令创建secret的pod:

kubectl create -f deployment.yaml或者:

kubectl apply -f deployment.yaml

删除所有的deployment控制器的命令:

kubectl delete deployment --all

查看所有的pod:

kubectl get pod --all-namespaces -n default | grep opaque

进入pod容器的命令:

kubectl exec -it $pod_name -n $namespace_name -- /bin/bash

输入env| egrep -i 'user|password'

可以看到secret资源对象中定义的数据段里面的键值,就可以看到两个环境变量的值了,这两个值是已经填写的secret资源对象它的value值解码之后的值了。

Secret资源对象的key值是明文,但是value必须通过base64算法先编码后才能使用。

key不能编码,但是secret的value必须编码。

如果对没有编码的数据进行解码,会报错误。通过base64算法进行编码和解码的过程是可逆的。

拿一个没有编码过的数据去解码,会出现乱码。原因是解码编码以后的数据,我们去拿着它去对照编码表去解码,没有这个字符或者是并不符合格式要求。

在secret资源对象中,一定要把secret对象的value值经过base64编码之后,才可以去使用。

secret增加了密码获取的难度。

当secret资源对象被使用时,它的value会被自动解码,而且不可选。

鼓励的话语:一个人的起点不决定终点,出身的差距,终能用勤奋和智慧弥补!

相关文章

Nginx后端服务器组的配置(nginx访问后端服务器超时)

Nginx服务器支持设置一组服务器作为后端服务器,在学习Nginx服务器的反向代理、负载均衡等重要功能时会经常涉及后端服务器。服务器组的设置包括几个指令,它们是由标准HTTP模块ngx_http_up...

Kubernetes学习笔记(十四)Pod详解(环境变量env/端口设置)

环境变量env创建pod-env.yamlapiVersion: v1 kind: Pod metadata:   name: pod-command...