我正在用jHipster开发基于微服务的应用程序(但问题一般是针对spring配置的),为了开发目的,我使用了docker,现在我正在上创建舞台环境。
在将注册表连接到bitbucket以下载文件时,我遇到了一个问题。使用docker,我正在挂载一个包含ssh键的卷,该卷是访问BitBucket所必需的:
services:
jhipster-registry:
image: jhipster/jhipster-registry:v3.2.3
volumes:
- /home/ubuntu/bb-key:/root/.ssh我不知道如何将这个密钥传递给在ECS中运行的容器?
我不能将它直接放在EC2上--我不知道集群注册表中的哪个实例会启动。也许我必须把它放在s3上并更改注册表映像,以便从s3下载它?但听起来有点不对。
发布于 2018-08-10 19:35:39
我知道这有点晚,但是您可以添加用户环境变量。instance.html
就像Linux中的导出命令一样,您可以使用ECS将这些变量传递给docker实例,就像使用-e开关命令一样。这让你可以传递秘密。也许有一个更好的方法,但由于您可以限制对这些变量的访问,这可能是一个好方法。您只需要在docker映像中使用任何脚本就可以使用这些环境变量,因为变量可以超时更改,而不是我的脚本通常用来接受/查找环境变量并记录这些变量的图像。
在您的示例中,您可以编写一个脚本来导出rsa密钥文件中的SSH键,并导出字符串,因为它都是一行,并且有一个脚本来输出导出到.ssh目录中的文件。
echo $SSH_KEY > ~/.ssh/some_key只是在entry.sh脚本或类似的代码中使用这一行代码,您应该很好。因此,当容器启动时,它将将密钥输出到.ssh文件中。
另一种方法是,如您所述,使用一个S3桶并将键值对保留在其中,或者在本例中保留一个ssh键,并且ECS可以通过任务脚本或通过码头容器中的AWS命令加载这些值。但是,最后一部分意味着您需要将AWS添加到您的映像中,这可能不是一个选项,取决于您需要该映像的内容,并且需要一个小脚本才能在启动IE时运行一个条目脚本。
如果这不能解决你的问题,让我知道,我会重新研究这个答案,以更好地适应你的问题。但据我所知,这应该能让你在球场上看到你需要的东西。
另一种方法是创建一个API密钥,允许您根据不断变化的需求访问bitbucket回购或其他回购,并按您想要执行SSH键的方式输入该密钥,然后只需使用git命令中的变量来提取映像并使用http(s) (如果这是您的设置的选项)。
https://stackoverflow.com/questions/49448410
复制相似问题