首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GAE激活-服务帐户从无人驾驶管线(无人驾驶飞机在k8s上):无法检测到密钥

GAE激活-服务帐户从无人驾驶管线(无人驾驶飞机在k8s上):无法检测到密钥
EN

Stack Overflow用户
提问于 2018-01-18 07:09:07
回答 2查看 1.5K关注 0票数 3

我有无人机在k8s集群上运行。我的管道之一是用于GAE应用程序。

我和秘密斗争有一段时间了。把我的秘密公诸于众是个小任务。我最后所做的是将我的密钥文件名和内容作为一对秘密加载到无人机中,然后在我的管道中这样做:

代码语言:javascript
运行
复制
  - echo $GOOGLE_KEY_CONTENTS > "/etc/google-keys/$${GOOGLE_KEY_NAME}.json"

如果我是lscat,那么文件就在那里,一切似乎都井井有条。

然后我跑:

代码语言:javascript
运行
复制
- gcloud auth activate-service-account --key-file=/etc/google-keys/$${GOOGLE_KEY_NAME}.json

结果是:

代码语言:javascript
运行
复制
ERROR: gcloud crashed (ValueError): No key could be detected.

钥匙在那里,在我看来很好

我也试过:

代码语言:javascript
运行
复制
- gcloud info --run-diagnostics

得到了以下输出:

代码语言:javascript
运行
复制
Network diagnostic detects and fixes local network connection issues.
Checking network connection...
done.
Reachability Check passed.
Network diagnostic (1/1 checks) passed.

如果我试图在本地机器上使用相同的密钥文件进行身份验证,它就能正常工作。

当无人机实例不在k8s中运行时,当秘密密钥文件位于共享卷中时,我还设法从无人机构建中对gcloud进行身份验证。(不幸的是,在k8s上使用这样的卷是不切实际的,因为无人机想让我将秘密提供给每个集群节点的基本系统,而我不想这么做)

因此,要么是k8s系统阻止gcloud进行身份验证。或者我在装钥匙的时候做错了什么。或者其他的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-19 04:09:57

我唯一能做得对的方法是:

  1. 将所有密钥复制到集群中位于同一位置的每个节点。
  2. 使用drone.yml中的卷使用键访问目录

注意明显缺乏k8s秘密和k8s卷。

原因是无人机代理可能会出现在任何节点上(如果我坚持只将密钥放在一个节点上,那么就可以使用节点标签,但我认为一个节点与集群中的下一个节点一样安全,并且秘密很小……)。所以简单地把他们带到他们需要去的地方。

无人机代理无法访问任何k8s安装的卷。只有来自基本系统的卷。我想无人驾驶飞机不是为k8s而造的

票数 0
EN

Stack Overflow用户

发布于 2018-01-18 15:49:30

如本链接所述,如果您使用服务帐户在运行在Kubernetes上的应用程序中进行身份验证,则需要使用秘密资源。

正如在步骤5中所描述的,这个秘密将被用作环境变量。只有安装了机密卷的应用程序才能访问该秘密。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48315623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档