有没有办法在运行时更新容器(或者更准确地说是特定应用程序的所有正在运行的容器)配置文件?
让我们说我有一个配置文件,我的应用程序每次需要访问一些配置值时都会读取,我决定在应用程序运行时更改该值,以便下次读取值时它将更新值。
从查看kubernetes文档感觉应该有一些kubectl命令允许它,但我无法找到它。
另外我猜我可以通过滚动更新这些容器来实现类似的结果,对吗?
答案 0 :(得分:1)
您需要查看confmaps
和secrets
。
许多应用程序需要通过配置文件,命令行参数和环境变量的某种组合进行配置。这些配置工件应与图像内容分离,以保持容器化应用程序的可移植性。
您可以使用confmap
存储让我们说nginx配置,然后编辑配置图,编辑将在正在运行的容器上生效。 (在nginx情况下,您需要重新加载nginx服务,以便新配置生效。)
示例Yaml:
kind: ConfigMap
apiVersion: v1
metadata:
creationTimestamp: 2016-02-18T19:14:38Z
name: example-config
namespace: default
data:
example.property.1: hello
example.property.2: world
example.property.file: |-
property.1=value-1
property.2=value-2
property.3=value-3
从exitsting配置文件创建configmap
:
kubectl create configmap <confmap name> --from-file=path/to/config.conf
要修改configmap
:
kubectl edit configmap <confmap name>
Secrets
与configmaps类似,它们仅用于安全数据,如私钥,密码等。