我已经安装了 Hachicorp Vault 并设置了 TLS 配置。我现在的目标是vault.service
在 TLS 证书更新后自动重新加载。
官方文档状态:
tls_key_file (string: ,reloads-on-SIGHUP) – 指定证书私钥的路径。它需要 PEM 编码的文件。如果密钥文件已加密,系统将提示您在服务器启动时输入密码。使用 SIGHUP 重新加载配置时,密钥文件之间的密码必须保持不变。在 SIGHUP 上,Vault 启动时在此处设置的路径将用于重新加载证书;在 Vault 运行时修改此值对 SIGHUP 不起作用。
这是否意味着当发生更改时服务会自动重新加载tls_key_file
?或者我应该添加额外的逻辑?
vault.service
[Unit]
After=network.service hostname.service consul-init.service consul.service
Description="Hashicorp Vault - A tool for managing secrets"
Documentation=https://www.vaultproject.io/docs/
StartLimitInterval=200
StartLimitBurst=5
[Service]
User=vault
Group=vault
PermissionsStartOnly=true
ExecStart=/usr/bin/vault server -config="{{vault_server_config_file}}"
ExecReload=/usr/bin/kill -HUP $MAINIP
CapabilityBoundingSet=CAP_SYSLOG CAP_IPC_LOCK
LimitNOFILE=65536
LimitMEMLOCK=infinity
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
答案1
Vault 告诉您 tls_key_file 文件名在启动后无法更改,并且如果您向其发送 SIGHUP,则可以重新加载证书内容。
如果单元重新加载,systemd 单元会发送 SIGHUP,这是重新加载信号的服务的常见模式。
需要额外的逻辑,因为 Vault 不会监控文件是否发生变化。我建议在安装证书后,在证书更新脚本中重新加载 vault.service。