【问题标题】:Setup Ingress whith Helm using the chart stable/nginx-ingress使用图表 stable/nginx-ingress 使用 Helm 设置 Ingress
【发布时间】:2020-01-09 11:23:06
【问题描述】:

我想用 Helm 在我的 Kubernetes 集群上安装 Ingress,所以我做到了

$> helm install stable/nginx-ingress
... a lot of output
NOTES:
The nginx-ingress controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace default get services -o wide -w solemn-toucan-nginx-ingress-controller'

An example Ingress that makes use of the controller:

  apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    annotations:
      kubernetes.io/ingress.class: nginx
    name: example
    namespace: foo
  spec:
    rules:
 ...

因为我使用 Helm 安装所有东西,所以我不清楚应该如何安装 Ingress。正如您在 Helm 生成的输出中看到的那样,它们显示了一个示例 Ingress,但没有显示我应该如何提供它。

我能想到2:

  • 复制整个图表并将我的 ingress.yaml 移动到 templates 文件夹中
  • 使用 kubectl
  • 创建一个提供 Ingress 资源的 Helm Chart

从上面的3个我最喜欢最后一个,但也许还有另一种方式(可能有一些配置选项)?

【问题讨论】:

  • 您能否详细说明将创建哪些 Ingress 资源?是否有许多不同的人在使用这个集群来创建 Ingress 资源,还是只有你?您是否会超时创建许多 Ingress 资源来公开您在集群上运行的不同工作负载,还是只是一件事?您是否正在创建 Ingress 资源以公开一组 K8s 工作负载,然后您希望将整个事情(应用程序部署 YAML、Ingress 配置等)打包为一个工件,您可以在其他地方重复安装,甚至分发给其他人安装在自己的 K8s 上?
  • 我会说绝对不要第一个选择复制整个图表,99% 肯定你应该只使用 kubectl,但根据你对我之前评论中问题的回答,有 1%有机会创建一个单独的 Helm 图表是有意义的。
  • 考虑一下我的 k8s 设置了一个 Hello world,只有 1 个 Ingress、几个服务和 Pod。 nginx-ingress 图表会安装除 Ingress 资源 (kind: Ingress) 之外的所有内容。

标签: kubernetes kubernetes-helm kubernetes-ingress nginx-ingress


【解决方案1】:

这里有个粗略的类比,使用 Helm 安装 nginx Ingress 控制器就像使用 apt-getbrew 在机器上安装 nginx。但是您不会使用apt-get 为您的应用程序创建您的 nginx 配置并将其安装在该机器上。

如果您只有一个 Hello World 应用,请直接使用 kubectl 应用 Ingress 资源。如果您想将构成应用程序的所有资源(服务、入口、部署、角色、角色绑定、服务帐户等)封装到单个工件中,以便其他人可以使用来部署他们自己的副本您的应用程序在他们自己的 K8s 集群上,Helm 将是您可以探索使用的打包和分发选项。您可以将 您的 Ingress 资源的模板放在 Helm 图表中,您没有理由尝试修改 nginx 控制器 Helm 图表。

【讨论】:

    【解决方案2】:

    helm install stable/nginx-ingress 将安装 Ingress 控制器,但不会为您的服务(应用程序)创建 Ingress。如果你有一个服务,想要使用 Helm Charts 部署它,你需要在服务的 Helm Charts 的模板文件夹中添加 Ingress.yaml。例如,您可以查看Kubernetes-dashboard

    【讨论】:

    • 您的链接无效。此外,能够将 Ingress.yaml 添加到模板文件夹意味着您必须复制整个图表,这并不理想
    • 我修复了链接。我并不是说您需要复制整个图表,在您的情况下是 stable/nginx-ingress。如果您使用Kubectl 部署您的应用程序,那么您只需在应用程序的同一文件夹中为您的服务创建 Ingress.yaml,例如。 whoami-app。另一方面,如果使用 Helm 部署应用程序,则需要将 Ingress.ymal 添加到应用程序的模板中,而不是 nginx-ingress 的模板中。
    猜你喜欢
    • 1970-01-01
    • 2020-02-11
    • 2020-05-19
    • 2020-10-08
    • 2019-03-24
    • 1970-01-01
    • 2021-06-23
    • 2022-08-18
    • 1970-01-01
    相关资源
    最近更新 更多