ie禁止访问网站,剪辑培训班,wap网站服务器,网站php源码secret 保存密码#xff0c;token#xff0c;敏感的k8s资源 configmap(重点) 1.2加入的新特征 这类数据可以存放在镜像当中#xff0c;但是放在secret当中可以更方便的控制#xff0c;减少暴露的风险#xff0c;保存加密的信息
secret的类型
docker-registry 存储docke…
secret 保存密码token敏感的k8s资源 configmap(重点) 1.2加入的新特征 这类数据可以存放在镜像当中但是放在secret当中可以更方便的控制减少暴露的风险保存加密的信息
secret的类型
docker-registry 存储docker仓库的认证信息以及docker组件认证信息私有 generic 是secret的默认模式Opaque base64加密编码的secret.用户自定义的密码密钥等等 tls TLS/SSL 用于存储证书和私钥https 还有一种系统自建的kubernetes.io/service-account-token用来访问系统的apiserver.pod会默认使用这个kubernetes.io/service-account-token创建的secret和apiserver通信自动挂载到 pod的/run/secret/kubernets.io/serviceaccount.
[rootmaster01 k8s]# kubectl get secret
NAME TYPE DATA AGE
default-token-zf8fj kubernetes.io/service-account-token 3 18d
nfs-client-provisioner-token-b5z8s kubernetes.io/service-account-token 3 3d21h
#查看secret中的加密信息
pod引用secret三种方式
1 挂载的方式secret挂载到pod当中的一个或者多个容器上的卷里面 2 把secret作为容器的环境变量 3 Docker-registry 可以作为集群拉取镜像时的使用使用secret可以实现免密登录
secret创建方式
陈述式
[rootmaster01 opt]# kubectl create secret generic mysecret --from-file/opt/username.txt --from-file/opt/password.txt
secret/mysecret created
#指定文件提取信息generic默认类型opaque加密类型 --from-file/opt/username.txt 从指定文件获取需要加密的信息
[rootmaster01 k8s]# kubectl get secrets
NAME TYPE DATA AGE
default-token-zf8fj kubernetes.io/service-account-token 3 19d
mysecret Opaque 2 80m
mysecret1 Opaque 2 7m22s
nfs-client-provisioner-token-b5z8s kubernetes.io/service-account-token 3 4d1h
#查看有哪些secrets
[rootmaster01 k8s]# kubectl describe secrets mysecret
Name: mysecret
Namespace: default
Labels: none
Annotations: noneType: OpaqueDatapassword.txt: 4 bytes
username.txt: 3 bytes
#查看secret详细信息[rootmaster01 k8s]# echo username.txt | base64
dXNlcm5hbWUudHh0Cg
[rootmaster01 k8s]# echo password.txt | base64
cGFzc3dvcmQudHh0Cg
#以64加密方式加密声明式
[rootmaster01 opt]# echo passwd.txt | base64
cGFzc3dkLnR4dAo
[rootmaster01 opt]# echo username.txt | base64
dXNlcm5hbWUudHh0Cg
#将格式转换为64加密方式[rootmaster01 k8s]# kubectl explain secret
KIND: Secret
VERSION: v1
#看一下secret的格式apiVersion: v1
kind: Secret
metadata:name: mysecret1
type:Opaque
data:username: dXNlcm5hbWUudHh0Cgpassword: cGFzc3dkLnR4dAo
#先要创建secret#挂载的方式实现
apiVersion: v1
kind: Pod
metadata:name: mypod
spec:containers:- name: nginximage: nginx:1.22volumeMounts:- name: secretsmountPath: /etc/secretsreadOnly: falsevolumes:- name: secretssecret:secretName: mysecret1[rootmaster01 k8s]# kubectl exec -it mypod bash
rootmypod:/etc/secrets# cd /etc/secrets/
rootmypod:/etc/secrets# ls
password username
rootmypod:/etc/secrets# cat password
passwd.txt
保存的内容是加密内容容器内部可以解密直接引用例2[rootmaster01 k8s]# kubectl create secret generic mysecret2 --from-file/etc/passwd --from-file/etc/shadowapiVersion: v1
kind: Secret
metadata:name: mysecret1
type:Opaque
data:username: MTIzCgpassword: NDU2CgapiVersion: v1
kind: Pod
metadata:name: mypod
spec:containers:- name: nginximage: nginx:1.22volumeMounts:- name: secretsmountPath: /etc/secretsreadOnly: falsevolumes:- name: secretssecret:secretName: mysecret2[rootmaster01 k8s]# kubectl exec -it mypod bash
rootmypod:/# cd /etc/secrets/
rootmypod:/etc/secrets# ls
passwd shadow
rootmypod:/etc/secrets# cat passwd把secret作为容器的环境变量
[rootmaster01 k8s]# echo 123 | base64
MTIzCg
[rootmaster01 k8s]# echo 456 | base64
NDU2Cg#创建secret
apiVersion: v1
kind: Secret
metadata:name: mysecret1
type:Opaque
data:username: MTIzCgpassword: NDU2Cg创建podapiVersion: v1
kind: Pod
metadata:name: mypod1
spec:containers:- name: nginximage: nginx:1.22env:- name: USERvalueFrom:secretKeyRef:name: mysecret1
#这里的name指的是secret的名称。
#表示需要用哪个secret来赋值给USERkey: username- name: USER1valueFrom:secretKeyRef:name: mysecret1key: username1
#给nginx:1.22这个容器里面传了两个环境变量。这两个变量的值从secret来。分别是两条mysecret1的加密信息docker-registry
kubectl create secret docker-registry myharbor --docker-server20.0.0.36 --docker-usernameadmin --docker-password123456
#创建docker-registry。指向harbur仓库的IP主机以及账号密码kubectl describe secrets myharbor
#查看docker-registry的详细信息apiVersion: v1
kind: Pod
metadata:name: mypod2
spec:containers:- name: nginx2image: hub.test.com/library/nginx:v1imagePullSecrets:- name: myharbornodeName: node01
#指定node不走调度策略
ConfigMap 保存的是不需要加密的信息configmap是1.2引入的功能应用程序会从配置文件命令行参数以及环境变量中读取配置信息通过configmap在创建容器中给它注入我们需要的配置信息既可以是单个的属性也可以使整个容器的配置文件
configmap的创建方式 1.陈述式 2.声明式 kubectl create configmap game --from-file/opt/configmap/123.txt --from-file/opt/configmap/456.txt
#创建configmapkubectl get cm
#查看configmap有多少个
kubectl describe cm game
#查看指定configmap的详细信息
#指定文件创建可以是一个也可以是多个
声明式
apiVersion: v1
kind: ConfigMap
metadata:name: bqb
data:gq: shuaiwdf: shua
#configmap是键值对形式。一个键对应一个值kubectl describe cm game
#查看详细信息
引用方式
apiVersion: v1
kind: Pod
metadata:name: mypod2
spec:containers:- name: nginx2image: nginx:1.22env:- name: USER1valueFrom:configMapKeyRef:name: et
#这里的name是configmap的名称key: tyu- name: USER2valueFrom:conigfMapKeyRef:name: etkey: tyu
挂载的方式
数据卷使用comfigmapkubectl create configmap nginx-con --from-file/opt/configmap/nginx.conf
#创建yaml文件
使用version/config触发滚动更新机制
kubectl patch deployment nginx1 --patch {spec: {template:{metadata: {annotations: {version/config: 20240116}}}}} 数据卷使用configMap 我们通过数据卷的形式把配置文件传给了pod内部容器Config的热更新zaipod运行的情况下对config的配置信息进行修改直接生效反应到容器当中Configmap的热更新不会触发pod的滚动更新机制deployment可以通过命令verion Secret主要是用来保存加密文件主要的使用方式就是挂载 ConfigMap主要作用是把配置信息传给容器主要方式也是挂载方式 ConfigMap的热更新热更新可以直接反映到容器的内部也不会触发pod的更新机制如果不是需要重启的配置都可以直接生效 Version/config来触发滚动更新 kubectl patch deployments.apps nginx1 --patch {spec: {template: {metadata: {annotations: {version/confgi: 20240116}}}}} Config和20240116可以自定义 需要重启可以重启pod 更新 就是把配置信息重新传到容器内重启也是一样 ConfigMap就是把配置信息传给容器键值对形式保存的非加密的信息为什么重要