繁体   English   中英

在Amazon ECS上部署jhipster注册表

[英]Deploying jhipster registry on Amazon ECS

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

我在将注册表连接到bitbucket上下载Spring云配置文件时遇到问题。 使用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下载它? 但这听起来不对。

我知道这有点晚了,但是您可以添加用户环境变量。 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_container_instance.html

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM