Secret
Configmap
Secret:保存密码,token,敏感的k8s资源
这类数据可以存放在镜像当中,但是防止secret当中可以更方便控制,减少暴露的风险
保存加密的信息
Docker-registry:存储docker仓库认证信息,以及docker组件认证成功(私有)
Generic:是secret的默认模式,opaque base64加密编码的secret用户自定义的密码,密钥等等
Tls: tls/SSL用于存储证书和私钥,https
系统自建的kubenetes.io/server-account-token用来访问系统的apiVersion,pod会使用kubenetes.io/server-account-token创建的secret和apiversion通信,自动挂载到pod的/run/secret/kubenetes.io/serveraccount
三种使用方式:
陈述式创建:
声明试创建:
Date里面保存的是加密的核心信息,到了容器内部可以直接引用,解密状态
再举一例:
加密
查看详情
陈述式演示:
将刚刚创建的pod
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: nginx
image: nginx:1.22
volumeMounts:
- name: secrets
mountPath: "/etc/secrets"
readOnly: false
volumes:
- name: secrets
secret:
secretName: mysecret2
去容器内验证:
kubectl create secret docker-registry myharbor --docker-server=20.0.0.74 --docker-username=admin --docker-password=123456
apiVersion: v1
kind: Pod
metadata:
name: mypod2
spec:
containers:
- name: nginx1
image: hub.test.com/library/nginx:v1
imagePullSecrets:
- name: myharbor
退出登录,方便演示
指定节点
apiVersion: v1
kind: Pod
metadata:
name: mypod3
spec:
containers:
- name: nginx1
image: hub.test.com/library/nginx:v1
imagePullSecrets:
- name: myharbor
nodeName: master01
总结secret的三种方式:
创建可以时陈述式创建和声明试创建
引用方式:
挂载使用
设定环境变量
Docker-register
保存的是不需要加密的信息,configMap是1.2引入的功能,应用程序会从配置文件,命令参数,以及环境变量当中读取配置信息
Configmap在创建容器中,给他注入我们需要的配置信息,既可以是单个的属性也可以是整个容器的配置文件
创建方式:陈述式和声明式
kubectl create configmap game --from-file=/opt/configmap/wang.txt --from-file=/opt/configmap/zhao.txt
从指定文件创建,可以是一个文件,还可以是多个文件
使用字面值创建
信息不再是加密的
演示声明式:
创建已完成,如何使用;
apiVersion: v1
kind: Pod
metadata:
name: mypod5
spec:
containers:
- name: nginx
image: nginx:1.22
env:
- name: USER
valueFrom:
configKeyRef:
name: game5
key: wdf
- name: UESR1
valueFrom:
configKeyRef:
name: game5
key: kb
1.我们通过数据卷的形式,把配置文件传给了pod内部容器
2.Configmap的热更新,热更新是不会重启的,在pod运行的情况下,对configmap的部署进行修改,直接生效(反应到容器当中)
3.Configmap的热更新不会触发pod的滚动更新机制(deployment)
4.Version/configmap来触发滚动更新
worker_processes 2;
events {
worker_connections 1024;
}
http {
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8081;
server_name localhost;
charset utf-8;
location / {
root html;
index index.html index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
kind: Deployment
metadata:
name: nginx1
labels:
app: nginx1
spec:
replicas: 3
selector:
matchLabels:
app: nginx1
template:
metadata:
labels:
app: nginx1
spec:
containers:
- name: nginx1
image: nginx:1.22
ports:
- containerPort: 8081
volumeMounts:
- name: nginx-config
mountPath: /etc/nginx
- name: nginx-mount
mountPath: /usr/share/nginx/html
volumes:
- name: nginx-config
configMap:
name: nginx-con
- name: nginx-mount
hostPath:
path: /opt/html
type: DirectoryOrCreate
1.我们通过数据卷的形式,把配置文件传给了pod内部容器
2.Configmap的热更新,热更新是不会重启的,在pod运行的情况下,对configmap的部署进行修改,直接生效(反应到容器当中)
3.Configmap的热更新不会触发pod的滚动更新机制(deployment)
4.Version/configmap来触发滚动更新
显示还是404,配置文件没有重启
kubectl patch deployments.apps nginx1 --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20240116"}}}}}'
Secret:主要保存加密文件,主要使用方式就是挂载方式
Configmap:把配置文件传送给容器,主要方式也是挂载方式
Configmap的热更新:热更新可以直接反应到容器的内部,也不会触发pod的更新机制,如果不是需要重启的配置,都可以直接生效
Version/configmap来触发滚动更新
kubectl patch deployments.apps nginx1 --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20240116"}}}}}'
需要重启时,可以重启pod
更新:就是把配置信息传送给容器内,重启也是一样
Configmap:就是把配置信息传送给容器,键值对形式保存的,非加密的信息