我想在我的 Kubernetes 集群上使用 Helm 安装 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
- 创建提供入口资源的 Helm 图表
从上面的 3 个中,我最喜欢最后一个,但也许还有另一种方法(也许有一些配置选项(?
这里一个粗略的类比是,使用 Helm 安装 nginx Ingress 控制器就像使用apt-get
或brew
在机器上安装 nginx 一样。但是您不会使用apt-get
为您的应用程序创建nginx配置并将其安装在该计算机上。
如果您只有一个 Hello World 应用,请使用kubectl
直接应用入口资源。如果您想要将构成应用程序的所有资源(服务、入口、部署、角色、角色绑定、服务帐户等(封装到单个工件中,以便其他人可以使用在他们自己的 K8s 集群上部署他们自己的应用程序副本,那么 Helm 将是一个打包和分发选项,您可以探索使用。您可以将入口资源的模板放在Helm 图表中,没有理由尝试修改 nginx 控制器 Helm 图表。
helm install stable/nginx-ingress
将安装入口控制器,但它不会为您的服务(应用程序(创建入口。如果您有服务并希望使用 Helm 图表部署它,则需要在服务的 Helm 图表的模板文件夹中添加 Ingress.yaml。例如,您可以查看 Kubernetes-dashboard。