在Amazon ECS上部署jhipster注册表

时间:2018-03-23 11:13:11

标签: amazon-web-services docker spring-boot spring-cloud-config jhipster-registry

我正在使用jHipster开发基于微服务的应用程序(但问题是一般的Spring云配置),出于开发目的,我使用的是docker-compose,现在我正在Amazon Elastic Container Service上创建舞台环境。

我在将注册表连接到bitbucket以下载spring cloud配置文件时遇到问题。使用docker-compose我安装了一个包含ssh密钥的卷,这是访问BitBucket所必需的:

services:
jhipster-registry:
    image: jhipster/jhipster-registry:v3.2.3
    volumes:
         - /home/ubuntu/bb-key:/root/.ssh

我不知道如何将此密钥传递给在ECS中运行的容器?

我不能直接把它放在EC2上 - 我不知道集群注册表中的哪个实例会启动。也许我必须把它放在s3上并更改注册表图像以从s3下载它?但听起来不太合适。

1 个答案:

答案 0 :(得分:1)

我知道这有点晚了,但是您可以添加用户环境变量。 UTF-16

类似于Linux中的导出命令,您可以使用ECS将这些变量传递给docker实例,就像使用-e switch命令一样。这使您可以传递秘密。也许有更好的方法,但是由于您可以限制对这些变量的访问,因此可以解决。您只需要在docker映像中使用任何脚本来使用这些环境变量,因为变量可以随时间变化,但是映像不能更改,我通常使我的脚本接受/查找环境变量并记录这些变量。

在您的情况下,您可以编写一个脚本来导出rsa密钥文件中的SSH密钥,并导出字符串(因为它全部都是一行),并具有一个脚本来将导出的结果输出到文件中。 ssh目录。

echo $SSH_KEY > ~/.ssh/some_key只需在entry.sh脚本或类似内容中包含以下代码行,您应该会很好。因此,无论何时容器启动,它都会将密钥输出到.ssh文件中。

另一种方式是,如您所述,使用S3存储桶并将键值对保留在其中,在这种情况下为ssh键,ECS可以通过任务脚本或通过AWS cli命令加载这些值。泊坞窗容器。但是,最后一部分意味着您需要将AWS CLI添加到映像中,这可能不是一个选择,这取决于您需要映像的用途,并且需要小的脚本才能在启动IE时运行输入脚本。

如果这不能解决您的问题,请告诉我,我将重新设计此答案以更好地解决您遇到的问题。但是从我的阅读中,这应该使您处于所需的基础上。

另一种方法是制作一个API密钥,该密钥将允许您根据不断变化的需求访问bitbucket存储库或其他存储库,并以您考虑使用SSH密钥的相同方式来馈送该密钥,并且仅使用git命令中的变量来提取图像并使用http(s)(如果这是设置的选项)。