简介: K8s 使用configmap作为程序的配置文件时,如果更改配置文件的话,则需要手动重新启动服务,从而加载新的配置。
现在由两种方式可以(额。。。本人测试的方式)
现在以nginx作为实践对象
一、使用secret设置配置文件(这个不确定是否对生产环境有影响)
[root@k-master test]# cat index.html
Hello world!!
# 使用 k create secret generic 的方式创建配置secret配置
k create secret generic myapp-secret --from-file=index.html
# 查看创建的secret
[root@k-master test]# k get secrets | grep myapp-secret
myapp-secret Opaque 1 106m
# 部署nginx服务
[root@k-master test]# cat nginx.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
volumeMounts:
- name: test-secret
mountPath: /usr/share/nginx/html/
volumes:
- name: test-secret
secret:
secretName: myapp-secret # secret的名称
# 部署svc 以nodeport的方式提供对外服务
[root@k-master test]# cat nginx-serice.yml
apiVersion: v1
kind: Service
metadata:
name: nginx-deployment
namespace: default
spec:
ports:
- port: 81 # 内网访问端口
nodePort: 31401 # 对外暴露端口
protocol: TCP
targetPort: 80 # 服务内部目标端口
selector:
app: nginx
type: NodePort
# 进行访问测试
# 内网svc ip + 81
[root@k-master test]# curl 10.103.45.211:81
Hello world!!
# 修改配置文件
vim index.html
CMCC
# 更新secret文件
这个命令的关键点是使用 --from-file
选项指定了要更新的文件。--dry-run=client -o yaml
用于生成更新的 Secret 配置,然后通过管道将其传递给 kubectl apply -f -
,以应用更新。
[root@k-master test]# k create secret generic myapp-secret --from-file=index.html=index.html --dry-run=client -o yaml | kubectl apply -f -
secret/myapp-test created
# 再次进行访问测试 (这个需要一些时间,需要稍微等一下配置更新)
[root@k-master test]# curl 10.103.45.211:81
CMCC