使用 Kubernetes 集群启动 Kubernetes Helm 图表

Kubernetes Helm chart initiation with Kubernetes cluster

我正在使用Ansible、Docker、Jenkins和Kubernetes实现持续集成和持续部署。我已经使用 Ansible 和 kubespray 部署创建了一个具有 1 个主节点和 2 个工作节点的 Kubernetes 集群。我有 30 - 40 个微服务应用程序。我需要创建那么多的服务和部署。

我的困惑

当我使用 Kubernetes 包管理器 Kubernetes Helm chart 时,我是否需要在主节点或我部署 kubernet 集群的基础机器上启动我的 chart?

  1. 如果我在 master 内部启动,那么我可以使用 kubectl 在远程工作节点上使用 ssh 进行部署吗?
  2. 如果我在 Kubernetes 集群节点之外启动,那么我可以使用 kubectl 命令在 Kubernetes 集群中部署吗?

你的困惑似乎在于 Helm 组件的配置和交互。 This explanation 提供了一个很好的图形来表示关系。

如果您使用传统的 Helm/Tiller 配置,Helm 将安装在您本地的机器上,假设您有正确的 kubectl 配置,您可以 "initialize" 您的集群运行宁 helm init 将 Tiller 安装到您的集群中。 Tiller 将 运行 作为 kube-system 中的部署,并具有对 create/modify/delete/view 图表资源的 RBAC 权限。 Helm 会自动为您管理所有 API 对象,kube-scheduler 会相应地将 pods 调度到您的所有节点。您不应该通过控制台直接与您的主节点和节点进行交互。

在任何一种配置中,您将始终从本地计算机进行 Helm 部署,并具有对集群的 kubectl 访问权限。

希望对您有所帮助!

如果您在 Kubernetes 集群中寻找 运行 helm 客户端的方式,请检查 Helm-Operator 的概念。

我建议您也四处寻找术语“GitOps”——将 Git 与 Kubernetes 相结合的一组实践,并将 Git 设置为您的真实来源声明式基础架构和应用程序。

有两个很棒的 OSS 项目实现了 GitOps 最佳实践:

  • flux(使用 Helm-Operator)
  • Jenkins-x (uses helm as a part of release pipeline, check out this 在 YT 上观看实际操作)