Kubernetes学习记录(七):Secret和Configmap

1. Secret

加密数据并存放在etcd中,让pod内容器以挂载volume方式访问

应用场景:凭据、用户名密码、https证书、docker仓库认证

 

pod使用secret的两种方式:

  • 变量注入
  • 挂载

 

1.1 secret使用

首先创建一个secret来保存一个常规的用户名和密码

如果我们要存放一个用户名和密码的话,也不建议直接在YAML文件中体现,一般而言会做一个简单的编码,这样在查看资源配置的时候不至于直接输密码

echo -n 'admin' | base64
echo -n '1f2d1e2e67df' | base64

 

然后编写一个最简单的Secret资源,可以把data字段中的值理解为key-value形式

 

创建资源

kubectl apply -f secret_var.yaml

 

如果想要以变量注入的形式来让pod使用这个用户名和密码,我们需要在创建pod的YAML文件中选择使用env字段

valueFrom指明这个变量值来自于哪个资源,secretKeyRef表示这个值来自于名为mysecret的secret资源,key为username

这样就完成了username和password的变量注入,而在容器中就可以使用SECRET_USERNAME和SECRET_PASSWORD

 

以挂载的方式使用secret,需要在创建pod的YAML文件中声明要使用的secret资源

这样一来secret所保存的用户名和密码都会被挂载到pod内的/etc/foo目录下,容器只需要读取这个目录下的文件就可以完成配置

文件名就是key的名字,即username

 

2. Configmap

Configmap和Secret的使用几乎是一样的,不过其应用场景是多用于配置信息的分发

 

3. 应用程序如何动态更新配置

configmap和secret修改了,如何在pod中实现更新?

  • 重建pod
  • 应用程序实现watch etcd中的配置文件,发现变化更新配置信息
  • 使用sidecar的逻辑监听配置更新,启用一个辅助容器来监听

如果脱离k8s,可以采用配置中心的方式

 

posted @ 2022-04-09 13:44  aganippe  阅读(62)  评论(0编辑  收藏  举报