我有一个kubernetes集群,安装了保险库(通过头盔图表)。
我想将机密从vault填充到pod中的文件(例如nginx),并每5分钟刷新一次机密。
我使用以下配置对其进行了测试(使用适当的vault策略/后端身份验证):
namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: web
Service_account.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: nginx
namespace: web
secrets:
- name: nginx
nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
namespace: web
labels:
app: nginx
run: nginx
version: vault-injector
spec:
replicas: 1
selector:
matchLabels:
run: nginx
version: vault-injector
template:
metadata:
labels:
app: nginx
run: nginx
version: vault-injector
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "nginx"
#vault.hashicorp.com/agent-inject-status: "update"
vault.hashicorp.com/agent-inject-secret-nginx.pass: "infrastructure/nginx/"
spec:
serviceAccountName: nginx
containers:
- name: nginx
image: nginx
ports:
- name: http
containerPort: 80
当我将此配置应用于kubernetes集群时,将创建部署,并将我的机密填充到/vault/secret/nginx.pass中(如预期的那样)。
kubectl exec -it pod/nginx-69955d8744-v9jm2 -n web -- cat /vault/secrets/nginx.pass
Password1: MySecretPassword1
Password2: MySecretPassword2
我试图更新kv并在nginx kv上添加密码,但我的pods不会刷新 /vault/secrets/nginx.pass.上的文件,如果我重新启动我的秘密被填满
是否可以动态刷新kv?最好的方法是什么?我希望使用vault作为配置管理器,并且能够在不重新启动POD的情况下修改kv。
通过指定TTL值,可以在kv secret上定义TTL。例如:
vault kv put infrastructure/nginx ttl=1m Password1=PasswordUpdated1 Password2=PasswordUpdated2
每分钟都会使您的基础架构/nginx机密过期。Vault sidecar将自动检查新值,并将文件刷新到播客中。
root@LAP-INFO-28:/mnt/c/Users/cmonsieux/Desktop/IAC/kubernetes/yaml/simplePod# k logs nginx-69955d8744-mwhmf vault-agent -n web
renewal process
2020-09-06T07:16:42.867Z [INFO] sink.file: token written: path=/home/vault/.vault-token
2020-09-06T07:16:42.867Z [INFO] template.server: template server received new token
2020/09/06 07:16:42.867793 [INFO] (runner) stopping
2020/09/06 07:16:42.867869 [INFO] (runner) creating new runner (dry: false, once: false)
2020/09/06 07:16:42.868051 [INFO] (runner) creating watcher
2020/09/06 07:16:42.868101 [INFO] (runner) starting
2020-09-06T07:16:42.900Z [INFO] auth.handler: renewed auth token
2020/09/06 07:18:26.268835 [INFO] (runner) rendered "(dynamic)" => "/vault/secrets/nginx.pass"
2020/09/06 07:19:18.810479 [INFO] (runner) rendered "(dynamic)" => "/vault/secrets/nginx.pass"
2020/09/06 07:24:41.189868 [INFO] (runner) rendered "(dynamic)" => "/vault/secrets/nginx.pass"
2020/09/06 07:25:36.095547 [INFO] (runner) rendered "(dynamic)" => "/vault/secrets/nginx.pass"
2020/09/06 07:29:11.479051 [INFO] (runner) rendered "(dynamic)" => "/vault/secrets/nginx.pass"
2020/09/06 07:31:00.715215 [INFO] (runner) rendered "(dynamic)" => "/vault/secrets/nginx.pass"
root@LAP-INFO-28:/mnt/c/Users/cmonsieux/Desktop/IAC/kubernetes/yaml/simplePod# k exec -it pod/nginx-69955d8744-mwhmf -n web -- cat /vault/secrets/nginx.pass
Password1: PasswordUpdated1
Password2: PasswordUpdated2
ttl: 1m
当与后台程序集关联的Kubernetes Pod的configmap更新时,如何自动重新启动它们? 根据kubernetes文档,当configmap卷挂载更新时,它会自动更新POD。但是,我并不认为后台进程集会发生这种情况。我错过了什么? 当我更新configmap中的字段以读取另一个日志文件时,虽然我看到卷挂载正在更新,但我看不到POD正在接收更改,除非我删除并重新创建后台启动。 有没有一种方
当我在一个节点上做了一个紧凑的工作时,它会抛出以下例外情况:
问题内容: 如何在不重新启动servlet容器的情况下刷新Spring配置文件? 我正在寻找JRebel以外的解决方案。 问题答案: 对于那些最近在这上面绊脚石的人来说,解决此问题的当前和现代方法是使用Spring Boot的Cloud Config。 只需添加注释你刷新豆类和你的主/配置。 因此,例如,以下Controller类: 在Spring Boot Actuator上(通过HTTP端点或
问题内容: 我的速度宏正在缓存中,我不希望它们存在……至少不在开发过程中。 我在属性文件中设置了以下属性… …但这似乎并没有解决问题 使用速度属性,如何配置速度以不缓存宏? (我正在使用速度1.6.4) 编辑: 我不认为这条线… …与速度有关 问题答案: 我一直在NVelocity(速度的C#端口)遇到相同的问题。深入研究它们的来源,我发现全局名称空间中宏的重新加载由以下属性控制。 我没有用速度进
我读了几个类似的问题,这似乎是我能做的最好的。是否可以在dist上启用实时重新加载而无需完全重新启动应用程序? 顺便说一下,我的IDE是IntelliJ。我开始怀疑IntelliJ是否需要排除dist目录。如果是这样的话我会跟进的。
我们正在使用JBoss Enterprise Application Platform server(即JBoss EAP 6.1)来开发使用Logback进行日志记录的新web应用程序。我们已经使用JBoss EAP好几个月了,一切都很好。此外,正如您所知,您可以在运行时在JBOSS上部署和取消部署应用程序和配置文件(如mail service.xml),也就是说,无需重新启动服务器。 但是,如