我已经获得了Redhat OpenShift在线入门vps,用于托管我的不和谐机器人。我已经将其上传到github,减去了我的不和谐令牌和其他API密钥,当然:^)
我将如何让OpenShift使用存储和读取客户端机密?
如果有帮助,我正在使用nodejs8框架。
最佳答案
像GitHub这样的源代码版本控制托管服务中没有秘密。
关于OpenShift,它包括Secrets,这是一个编码64位的配置图,您可以在其中注入机密信息。
但是,应该将长期的机密信息存储(将注入OpenShift机密中)存储在适当的保险柜中。
例如,如文章“ Hashicorp Vault”所述的Managing Secrets on OpenShift – Vault Integration
其余部分介绍了该解决方案,但是即使您不使用该特定主机,总体想法(外部保管库类型的存储)仍然保持:
Init Container(在启动Pod的主容器之前运行)通过加密连接从Vault Controller中请求wrapped token。
包装的凭证使您可以传递凭证,而无需任何中间人实际看到凭证。
Vault Controller从Kubernetes API服务器检索容器详细信息。
如果该窗格存在并且包含vaultproject.io/policies批注,则Vault控制器将调用Vault并生成一个唯一的包装令牌,该令牌可以访问批注中提到的Vault策略。此步骤需要信任Pod作者以习惯正确的策略。生成的令牌具有可配置的TTL。
Vault Controller使用通过加密连接从Kubernetes API获得的Pod IP来“回调” Init容器,并将新创建的包装令牌传递给它。注意,Vault Controller不信任容器,它仅信任主API。
Init容器会解开令牌,以获取一个Vault令牌,该令牌将允许访问凭据。
将Vault令牌写入两个容器(emptyDir)之间共享的卷中的一个知名位置,并且Init容器出口。
主容器从令牌文件中读取令牌。现在,主容器可以使用令牌来检索创建令牌时考虑的策略所允许的所有机密。
如果需要,主容器会更新令牌以防止令牌过期。
关于node.js - 在线阅读Redhat OpenShift内部的 secret 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53687446/