我目前正在将我的docker部署迁移到k8s清单,我想知道如何处理秘密。目前,我的docker容器获取/run/secrets/app_secret_key以env-var的形式获取容器内的敏感信息。但与k8s机密处理相比,这有什么好处吗?因为在另一方面,我也可以在我的声明中这样做。yaml:
env:
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-password
key: password
然后直接将秘密作为env变量放入容器中...我能够注意到的唯一区别是,如果我在容器内提取/run/secrets/app_secret_key,如下所示(docker-entrypoint.sh):
export APP_SECRET_KEY="$(cat /run/secrets/app_secret_key)"
当我在部署后访问容器时,看不到env var,似乎env var只在docker-entrypoint.sh最初被触发的“会话”中可用(在容器/pod启动时)。
所以我现在的问题是,在这里什么更有意义:只需使用上面显示的env:语句,或者在容器中手动获取/run/secrets/app_secret_key。。。
先谢谢你
将secret公开为env var或file只是以k8s方式使用secret的一种方式。
一些机密(如password)只是一行长的字符串,因此将其用作env-var很方便。其他机密(如ssh私钥或TLS证书)可以是多行,这就是为什么您可以将机密装载为卷的原因。
尽管如此,还是建议将您的秘密声明为k8s的秘密资源。这样您就可以通过kubectl获取所需的值,而无需进入容器内部。您还可以制作一个模板,如helm图表,在部署时生成秘密清单。使用RBAC,您还可以控制谁可以读取秘密清单。
根据您的评论,是的,任何可以进入容器内部的用户都将有权访问shell用户可用的资源。
坦率地说,两者都是同一件事不同实现,你可以选择任何一个,但我更喜欢kubernetes approch作为安装秘密,而不是仅仅因为可见性而在运行时读取容器。
如果你寻找一个容器并不重要,但是当我们有30-40个微服务在4-5个环境中运行并且有100甚至200个秘密时。在这种情况下,一个部署出错,我们可以查看部署清单并找出整个应用程序。我们不必搜索docker文件来了解发生了什么。
是否有任何可能的方法,我可以更新AWS秘密管理器中的密钥/值,而不必检索当前值,然后更新它们? 我找到的当前解决方案首先从secrets Manager中检索值: 但我不想检索秘密值。首选语言是Python。
一些秘密需要通过PODS获取,秘密存储在GCP秘密管理器中,什么是安全有效的方法来获取pod中的秘密? 谢谢你!
将来自Google secret Manager的秘密注入Kubernetes部署的最佳实践是什么?我已将Grafana实例的管理员密码存储到Google Secret Manager中。Grafana实例是使用Google Kubernetes引擎上的helm图表部署的。我确实尝试过使用kube secrets init,这是一个Kubernetes变异的网络钩子,它变异了任何引用秘密Googl
一、简介 内容的添加,删除,修改,审核,移动等管理 。 二、功能演示 1.添加内容 这里介绍5个难点,其他相对比较简单,这里不做介绍。 A,同时发布到其他栏目 点击“同时发布到其他栏目”按钮时弹出如下页面: 选择需要同时发布到的栏目,提交后。在你选择的栏目中会存在此内容。 B,推荐位 可以同时选择多个推荐位,你只需根据推荐位ID进行模板调用。(详情请参考V9标签使用说明) C,添加投票 一篇内容只
使用PS3™或电脑,将视频影像/音乐/图像等内容复制至PS Vita,或管理游戏等应用程序数据的应用程序。亦可备份/还原PS Vita的数据。 内容管理的LiveArea™ PS3™ 复制视频影像/音乐/图像等内容(PS3™) 复制/删除游戏等应用程序(PS3™) 备份/还原PS Vita的应用程序(PS3™) 电脑 安装内容管理助手 复制视频影像/音乐/图像等内容(电脑) 复制/删除游戏等应用程
创建容器docker run 创建容器 # docker run --name rhel7.4 registry.access.redhat.com/rhel7-atomic:7.4-119docker run 创建容器并进入命令行 # docker run --name rhel7.4 -it registry.access.redhat.com/rhel7-atomic:7.4-119 /b