如何在Azure容器服务中使用Mesos和Marathon安全地分享私有Docker仓库登录凭据

6
我已经使用DC/OS + Marathon设置了Azure容器服务以部署Docker容器。目前看起来不错,我可以使用SSH隧道连接到主节点并访问Mesos和Marathon WebUI,以及命中REST API。
接下来,我正在尝试从我的私有Docker仓库部署Docker容器,并在Marathon网站上找到了以下文章。

https://mesosphere.github.io/marathon/docs/native-docker-private-registry.html

请查看上述URL中的“注意”部分-
注意:URI必须可被启动应用程序的所有节点访问。方法可能包括通过RSYNC/SCP将文件分发到所有节点的本地文件系统,或将其存储在共享网络驱动器上,例如Amazon S3。值得考虑您选择的方法的安全性影响。
Azure提供了哪些选项来在所有节点之间共享docker.tar.gz文件?
谢谢
3个回答

5
将您的docker.tar.gz放入Azure存储并创建已签名网址。我已经使用Azure Storage Explorer创建了一个。
输出: https://xyzds.file.core.windows.net/docker/docker.tar.gz?...url-params 为了能够马拉松式地提取它,您需要添加文件扩展名。 x=.tar.gz “uris”:[     “https://xyzds.file.core.windows.net/docker/docker.tar.gz?...url-params&x=.tar.gz” ] 您可以开始了。

1

谢谢Ross。如果没有其他Azure提供的方法,那么我们将不得不使用这个选项。我知道Azure容器服务相对较新。我不确定这个论坛是否合适,但我可以问一下您关于微软解决这个问题的长期计划吗?或者您认为这个问题属于Mesos/Marathon吗? - Anurag Sharma
1
这个论坛很合适。我们(微软)的计划是解决这个问题。我没有可以分享的日期,但无论我们决定是 DC/OS(Mesos/Marathon)还是 ACS 的事情,我们都是上游项目的贡献者,所以如果没有其他人解决它,你可以期待我们来修复它。 - rgardler
谢谢Ross,期待修复。 - Anurag Sharma
这个有更新了吗?我能否以某种方式自动挂载驱动器/运行一个脚本,在每个节点上都挂载Azure存储驱动器(包括创建新节点)? - elmalto
目前还没有确定日期,但是工作正在进行中。上面链接的CLI工具有如何在每个节点上挂载Azure文件存储共享的示例。Blob存储即将到来。 - rgardler

1
我们的做法是使用parallel-scp将文件推送到所有的Mesos代理,类似于以下方式:
parallel-scp -h ~/pssh_all_ips ./docker.tar.gz /etc/docker.tar.gz

其中pssh_all_ips是一个以换行分隔的内部IP地址文件(在我们的情况下为10.0.*.*10.32.*.*)。

如果您已经通过隧道连接到您的集群,您可以在localhost:2000/mesos/#/slaves找到您的代理IP。

这将使该文件在所有代理上可用,路径为file:///etc/docker.tar.gz,然后您可以使用Marathon的URI字段将其提供给docker pull系统。


谢谢提供信息。如果我们知道所有代理的IP地址,那么这种方法是可行的。但是随着Azure对它们进行扩缩容,从而从数量上变化的从属机会有所不同。我正在尝试使用Jenkin通过调用Marathon API来进行部署。我不确定首先查询所有代理的IP地址是否是可行的。我希望Azure容器服务能够提供类似于AWS ECS的功能,即使用IAM角色可以从S3存储桶共享文件。 - Anurag Sharma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接