前提
业务环境进行服务构建或者部署时经常遇到一个问题,就是不同的环境要配置不同的资源信息.
有些资源信息还比较敏感,在构建过程总导出传递,容易产生信息泄露,存在较大的安全隐患.在容器化时代结合 K8S 集群运行服务,通常会依赖 Configmap 或者 Secret 来解决此类问题.
细分容器化配置场景如下:
1. 将配置文件直接打包到镜像中,但这种方式不推荐使用,因为修改配置不够灵活。
2. 通过定义Pod清单时,指定自定义命令行参数,即设定 args:["命令参数"],这种可在启动Pod时,传参来修改Pod的应用程序的配置文件.
3. 使用环境变量来给Pod中应用传参修改配置,但要使用此种方式,必须符合以下前提之一.
1) Pod中的应用程序必须是Cloud Native的应用程序,即支持直接通过环境变量来加载配置信息。
2) 通过定义Entrypoint脚本的预处理变量来修改Pod中应用程序的配置文件,这些Entrypoint脚本,可以使用set,sed,grep等工具来实现修改,但也要确保容器中有这些工具。
4. 存储卷: 我们可将配置信息直接放到存储卷中,如PV中,Pod启动时,自动挂载存储卷到配置文件目录,来实现给Pod中应用提供不同的配置。
5. Secret 或 ConfigMap
细聊 Secret 或 Conf应用程序安装异常103igMap
Secret
Secret类型有三种:
ConfigMap
ConfigMap :是一个 API 对象, 让你可以存储其他对象所需要使用的配置。
目标:
为了让镜像和配置文件解耦,以便实现镜像的可移植性和可复用性。
ConfigMap 使用方式:
可以使用四种方式来使用 ConfigMap 配置 Pod 中的容器:
在容器命令和参数内
容器的环境变量
在只读卷里面添加一个文件,让应用来读取
编写代码在 Pod 中运行,使用 Kubernetes API 来读取 ConfigMap
reloader简介
Reloader 可以观察 ConfigMap 和 Secret 中的变化,并通过相关的 deploymentconfiggs、 deploymentconfiggs、 deploymonset 和 statefulset 对 Pods 进行滚动升级。
reloader安装
当前版本:reloader-v0.0.104
安装空间:namespace: default
极简安装
$ kubectl apply -f https://raw.githubusercontent.com/stakater/Reloader/master/deployments/kubernetes/reloader.yaml
clusterrole.rbac.authorization.k8s.io/reloader-reloader-role created
clusterrolebinding.rbac.authorization.k8s.io/reloader-reloader-role-binding created
deployment.apps/reloader-reloader created
serviceaccount/reloader-reloader created
部署选项
验证服务
#启动中
[root@cnvskubmdev-101-169 <sub>]# kubectl get pod -n default
NAME READY STATUS RESTARTS AGE
reloader-reloader-6498bd576-8htd4 0/1 ContainerCreating 0 18s
#启动成功
[root@cnvskubmdev-101-169 </sub>]# kubectl get pod -n default
NAME READY STATUS RESTARTS AGE
reloader-reloader-6498bd576-8htd4 1/1 Running 0 92s
推荐使用方法
1:暴力模式:
服务添加注释:
reloader.stakater.com/auto: true
效果:
服务挂载使用的所有ConfigMap或Secret任意一个发生变更服务将会自动滚动更新
2: 兼容模式:
注意事项
参考信息:
https://blog.csdn.net/xzk9381/article/details/117462348
https://cloud.tencent.com/developer/article/1859051
https://github.com/stakater/Reloader
https://raw.githubusercontent.com/stakater/Reloader/master/deployments/kubernetes/reloader.yaml
发表评论