在 Amazon ECS 上部署 jhipster registry
Deploying jhipster registry on Amazon ECS
我正在使用 jHipster 开发基于微服务的应用程序(但问题是 spring 云配置一般),出于开发目的,我使用 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 中的导出命令非常相似,您可以使用 ECS 将这些变量传递给 docker 实例,就像使用 -e switch 命令一样。这允许您传递秘密。可能有更好的方法,但由于您可以限制对这些变量的访问,这可能是一个不错的解决方法。您只需要在 docker 图像中运行任何脚本即可使用这些环境变量,因为这些变量会随着时间的推移而改变,但我通常将我的脚本制作为 accept/look 用于环境变量并记录这些图像。
在您的情况下,您可以编写一个脚本来导出在 rsa 密钥文件中找到的 SSH 密钥,并导出字符串,因为它都是一行,并有一个脚本将导出的内容输出到一个文件中.ssh 目录。
echo $SSH_KEY > ~/.ssh/some_key
只需将这行代码放在 entry.sh 脚本或类似的东西中,您就可以了。因此,每当容器启动时,它都会将密钥输出到 .ssh 文件中。
另一种方法,如您所述,使用 S3 存储桶并将键值对留在其中,或者在本例中为 ssh 密钥,ECS 可以通过任务脚本或通过 AWS cli 命令加载它们在 docker 容器中。但是,最后一部分意味着您需要将 AWS CLI 添加到您的图像中,这可能不是一个选项,具体取决于您需要图像的目的,并且需要一个小脚本 运行 在启动时 IE 一个入口脚本。
如果这不能解决您的问题,请告诉我,我会修改此答案以更好地解决您遇到的问题。但是从我读到的内容来看,这应该可以让您大致了解所需的内容。
另一种方法是制作一个 API 密钥,允许您访问 bitbucket 存储库,或根据不断变化的需求访问其他存储库,并以您想要的相同方式提供该密钥SSH 密钥并仅使用 git 命令中的变量来拉取图像并使用 http(s)(如果这是您的设置的选项)。
我正在使用 jHipster 开发基于微服务的应用程序(但问题是 spring 云配置一般),出于开发目的,我使用 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 中的导出命令非常相似,您可以使用 ECS 将这些变量传递给 docker 实例,就像使用 -e switch 命令一样。这允许您传递秘密。可能有更好的方法,但由于您可以限制对这些变量的访问,这可能是一个不错的解决方法。您只需要在 docker 图像中运行任何脚本即可使用这些环境变量,因为这些变量会随着时间的推移而改变,但我通常将我的脚本制作为 accept/look 用于环境变量并记录这些图像。
在您的情况下,您可以编写一个脚本来导出在 rsa 密钥文件中找到的 SSH 密钥,并导出字符串,因为它都是一行,并有一个脚本将导出的内容输出到一个文件中.ssh 目录。
echo $SSH_KEY > ~/.ssh/some_key
只需将这行代码放在 entry.sh 脚本或类似的东西中,您就可以了。因此,每当容器启动时,它都会将密钥输出到 .ssh 文件中。
另一种方法,如您所述,使用 S3 存储桶并将键值对留在其中,或者在本例中为 ssh 密钥,ECS 可以通过任务脚本或通过 AWS cli 命令加载它们在 docker 容器中。但是,最后一部分意味着您需要将 AWS CLI 添加到您的图像中,这可能不是一个选项,具体取决于您需要图像的目的,并且需要一个小脚本 运行 在启动时 IE 一个入口脚本。
如果这不能解决您的问题,请告诉我,我会修改此答案以更好地解决您遇到的问题。但是从我读到的内容来看,这应该可以让您大致了解所需的内容。
另一种方法是制作一个 API 密钥,允许您访问 bitbucket 存储库,或根据不断变化的需求访问其他存储库,并以您想要的相同方式提供该密钥SSH 密钥并仅使用 git 命令中的变量来拉取图像并使用 http(s)(如果这是您的设置的选项)。