相关疑难解决方法(0)

在Kubernetes pod中克隆一个安全的git仓库

我遇到了一个有趣的情况,我需要将私有github repo克隆到我在Kubernetes中运行的docker容器中.最初我尝试使用gitRepo挂载,但是,在我的部署清单中有一个OAuth密钥是不可接受的,我想使用repo deploy密钥而不是附加到我的GitHub帐户的OAuth密钥.

理想情况下,我会使用一个使用秘密进行身份验证的gitRepo挂载,但在撰写本文时此功能尚不可用.

约束

我需要以下内容:

  • 容器内的回购,我可以在容器运行时间歇性地拉出
  • 必须使用GitHub部署密钥访问repo
  • 密钥必须保持安全(在Kubernetes秘密中)并且不存储在docker镜像中
  • repo必须在同一个pod中的两个容器之间共享 - 一个写入,一个读取

可能的解决方案:

将SSH密钥挂载为机密和克隆:

我尝试使用在单独的pod中运行的bash脚本将repo克隆到emptydir中(无论如何这个脚本都必须运行,我也将它用于其他事情),然后我遇到了将ssh键放入其中的问题.荚.这个问题是关于这个问题的,但它似乎没有办法实现.我能够使用秘密安装获取密钥,但随后权限设置为777.为了解决这个问题,我将密钥安装到/test/目录中,然后尝试将cp它们插入/root/.ssh/.这给了我这些奇怪的错误:

cp: '/test/id_rsa' and '/root/.ssh/id_rsa' are the same file
cp: '/test/id_rsa.pub' and '/root/.ssh/id_rsa.pub' are the same file
Run Code Online (Sandbox Code Playgroud)

我也尝试使用cat并将它们管道到他们的文件但是没有用.当我遇到错误的路径时,它首先给了我这些错误:

cat: /keys/id_rsa: input file is output file
cat: /keys/id_rsa.pub: input file is output file
Run Code Online (Sandbox Code Playgroud)

一旦我修复了路径,它就什么也没做,而且默默地失败了.kubectl exec进入容器显示没有文件/root/.ssh/.

我想我已经走到了这条道路的尽头,所以我认为这不是解决方案.

配置ssh以忽略密钥权限

如果SSH有办法忽略密钥的权限 - 默认情况下它强制执行644或更少,我相信 - 然后上述解决方案是可能的.我很惊讶我没有找到任何方法来做到这一点,但我的google-fu总是出现结果,说你只需要正确设置权限.

将钥匙安全地放入容器的其他方法

理想情况下,我希望在容器中有一个密钥,用于使用其他回购项目进行此项目的未来扩展.可能还有其他一些方法可以做到这一点,我没有想过或尝试过.

在容器中使用OAuth密钥进行克隆

我曾考虑尝试在环境变量中使用OAuth密钥,然后使用它来通过HTTPS克隆repo.这不太理想,但如果它有效,我会接受它.现在唯一阻止我这样做的是我无法使用部署密钥.如果有一种方法可以使用部署密钥使用OAuth,我还没有找到它,但如果有人知道更多,它可能是解决方案.

克隆在docker图像中

回购中没有任何东西我会在码头图像中感到不舒服,所以我可以走这条路.这个问题是我需要能够下载回购的更新.如果我把它放在容器中,我将无法在没有钥匙的情况下拉动它.可能有一些解决方法,我没有尝试过.

我觉得我什么都没有尝试,所以任何建议都值得一试.


类似的问题

这个问题与我正在尝试的问题 …

git ssh github docker kubernetes

7
推荐指数
1
解决办法
2997
查看次数

标签 统计

docker ×1

git ×1

github ×1

kubernetes ×1

ssh ×1