我正在尝试为我的本地kubernetes集群设置一个helmfile部署,该集群使用'kind'(minikube的轻量级替代方案(运行。我为我的应用程序设置了图表,这些图表都正确部署,但我需要一个nginx入口控制器。幸运的是,"kind"提供了一个,我目前正在使用命令:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
我应该设置其他一切,只需按一下按钮即可部署,但仍然必须"记住"(并训练我的同事记住…(才能运行这个额外的命令,这似乎有些反常。
我意识到我可以复制、粘贴并创建自己的版本,但我想跟上源代码的任何更改。是否可以创建一个引用外部模板的图表?
我正在寻找使用helm或helmfile的解决方案。
链接的YAML文件似乎是从ingress nginx图表生成的。
子图表
通过将ingress nginx作为依赖项添加到您自己的图表中,您可以将其作为Helm 3中的一个子部分。在Helm 3中,这是用Chart.yaml
中的dependencies
字段完成的,例如:
apiVersion: v2
name: my-chart
version: 0.1.0
dependencies:
- name: ingress-nginx
version: ~4.0.6
repository: https://kubernetes.github.io/ingress-nginx
condition: ingress-nginx.enabled
但是,如果您需要在同一集群中安装多个版本的自己的图表,这可能会有问题。要处理此问题,您需要考虑多个Ingress控制器的含义。
图表
入口控制器能够处理来自多个命名空间的各种版本的入口。因此,我建议将ingress nginx与依赖它的您自己的版本分开维护。这意味着像您已经安装的一样或作为一个单独的图表(指南(安装ingress nginginx。
如果你走这条路,有一些工具可以帮助开发人员更容易地采取不干涉的方法来设置他们的K8s环境。一些流行的包括Skafold、DevSpace、Tilt和Helmfile。