Kubernetes 和不安全的注册表

Ale*_*rov 5 kubernetes docker-registry

我想知道是否可以工作..

我们有服务 FOO 和 BAR,它们与 Docker 注册表在同一个集群上运行。假设该集群用于生产,而不是用于开发

我们有 CI/CD 系统,负责构建镜像并将它们推送到 docker 注册表。

Docker 注册表仅在 kubernetes 专用网络中使用,我们不会在集群之外推送或拉取镜像,因为……我为什么要这样做?

+-----------------------------------------------+
|                                               |
|                           KUBERNETES          |
|    +-------+                                  |
|    | VCS   |          +----------+            |
|    |       <----------+          |            |
|    |       |          | CI/CD    |            |
|    +-------+  +-------+          |            |
|               |       +----------+            |
|               |                               |
|               |             +-----+           |
|      +--------v-----+ <-----+FOO  |           |
|      | INSECURE     |       +-----+           |
|      | DOCKER       |           +-------+     |
|      | REGISTRY     | <---------+BAR    |     |
|      +--------------+           +-------+     |
+-----------------------------------------------+
                                      ^
                                      |
                                      |
                                      +
                                  USERS
Run Code Online (Sandbox Code Playgroud)

是否可以使用自签名证书创建 docker 注册表,并设置 kubernetes 来信任此注册表?

或者这是开销,最好使用好的证书并通过公共网络?

在哪里存储生产就绪的 docker 镜像以及在哪里进行暂存?

Kon*_*tin 3

嗯,这看起来是一个非常理论化的问题。唯一可以明确回答的问题是:

是否可以使用自签名证书创建 docker 注册表,并设置 kubernetes 来信任此注册表?

当然,您可以部署自己的 Docker 注册表,例如Artifactory或其他东西。您绝对可以创建自签名证书并使用它,也可以使用由证书颁发机构之一颁发的证书。(请注意,它可以是免费的,Let's Encrypt例如通过 )继续前进,是否信任注册表 - 这不是 Kubernetes 的任务。它是运行时的任务,例如DockerRkt。因此,如果您想使用私有注册表,则必须配置运行时的客户端才能使用您的注册表,无论安全与否。

其他一切并不像我们想象的那么明确。我唯一想说的是:实践表明,如果你要做某事,你就必须按照自己的方式去做