library(tidyverse)
d <- as_tibble(iris)
vt <- tibble(old_varname=c('Sepal.Length','Petal.Length'),
new_varname=c('a','b'))
d_new_names <- d %>% rename(!!set_names(vt$old_varname, vt$new_varname))
head(d_new_names)
然后我可以像这样包含它们:
apiVersion: v1
kind: Secret
metadata:
name: john-secret
data:
USERNAME: abc=
PASSWORD: def=
apiVersion: v1
kind: Secret
metadata:
name: jane-secret
data:
USERNAME: ghi=
PASSWORD: jkl=
并在{。{1}}等Node.js应用中使用它们。
这可行,但是是否有一种更清洁/更轻松的方法来为一群拥有多个字段的用户设置机密?我想如果说100个用户x 5个字段,那会很混乱。
答案 0 :(得分:3)
您可以mount the secret as a volume。从链接的Kubernetes文档改编示例:
apiVersion: v1
kind: Pod
metadata:
name: secret-test-pod
spec:
containers:
- name: test-container
image: nginx
volumeMounts:
- name: john-secret
mountPath: /etc/john-secret
volumes:
- name: secret-volume
secret:
secretName: john-secret
如果您有很多秘密,则需要将它们全部安装到pod规范中。这本身就是一个可维护性问题。
我认为没有任何实际阻止您使用结构化的数据对象(例如JSON或YAML文件)作为密钥的值。将其作为卷安装在一起可以合理地工作。
如果您确实有很多秘密-许多“用户”每个人都有很多值-那么对这些秘密进行某种外部存储可能是一个更好的主意。如果它们只是用户名和密码,通常在数据库中存储密码的单向哈希(这也使它们无需重新部署系统即可更新)。像Hashicorp的Vault之类的工具可能管理起来很复杂,但是优先考虑此内容的实际安全性,并且您可以更严格地控制谁可以访问实际机密。