【发布时间】:2020-03-20 13:12:45
【问题描述】:
我有一个应用程序,例如以下结构,其中多个服务有自己的 Dockerfile。我想通过 Jenkins 使用 Helm 将我的应用程序部署到 kubernetes,但我无法确定处理此问题的最佳方法是什么?
如果是,我应该尝试使用多阶段构建,我该如何处理? 我应该为它们中的每一个创建两个掌舵图,还是使用一个掌舵图来处理这个问题?
└── app-images-dashboard
├── Readme.md
├── cors-proxy
│ ├── Dockerfile
│ ├── lib
│ │ ├── cors-anywhere.js
│ │ ├── help.txt
│ │ ├── rate-limit.js
│ │ └── regexp-top-level-domain.js
│ ├── package.json
│ └── server.js
└── app-images-dashboard
├── Dockerfile
├── components
│ └── image_item.js
├── images
│ └── beta.png
├── index.html
├── main.js
└── stylesheets
└── style.css
【问题讨论】:
-
@lindhe,感谢您的友好回复。也许我的错没有清楚地解释我的困惑。坦率地说,我有机会通过 helm 和 kubernetes 部署多个应用程序,但每个项目只有一个 docker 文件而不是多阶段。这就是为什么如果项目有两个 dockerfile,什么是最佳实践让我感到困惑?
-
执行多阶段 Dockerfile 是最佳实践,但仅适用于相当复杂的设置。如果有一个单一的构建阶段工作正常,那就去吧。 :) Helm 是一个帮助您在 Kubernetes 中部署(运行)容器的工具,您可以将所有内容放在一个容器中,也可以将所有内容放在执行不同任务的多个容器中。
-
@lindhe,是的,但我不想在一个 pod 中有多个容器。我想为每个 dockerfile 创建两个单独的 pod。有没有办法在 helm 中处理这个问题?因为我找不到任何在 deployment.yaml 中指定多个容器的示例,其中两个容器低于规范。
-
啊,我想我现在明白你的问题了。一个部署描述了一组相同的 pod(即一个或多个 pod),但是如果你想要多个 pod,你应该有多个 deployment.yaml。喜欢
cors-proxy-deployment.yaml和dashboard.yaml。 -
子图也能涵盖这个吗?
标签: docker kubernetes kubernetes-helm