我最近一直在研究 GITOPS 和 FLUX,并且正在努力弄清楚如何安装本地 HELM 图表。
我的设置是 AKS,使用 GITOPS/FLUX 插件,我通过门户进行配置以保持简单。
它可以使用 kustomization.yaml 和 k8s 清单,但 HELM 打败了我 🤦u200d♂️
这是我的基本文件夹结构,如果更容易可视化,它也在这里https://github.com/rhod3rz/temp。
+---1-kustomize
| +---base
| | kustomization.yaml
| | pod.yaml
| |
| \---overlays
| +---dev
| | kustomization.yaml
| |
| \---prd
| kustomization.yaml
|
\---2-helm
| Chart.yaml
| values.yaml
|
\---charts
\---app1
| Chart.yaml
|
\---templates
pod.yaml
如果我创建一个指向 1-kustomize/overlays/dev 的 FLUX kustomization,一切都很好。
如果我创建一个指向 2-helm 的 FLUX kustomization,我认为它会安装图表,但它只是错误:
无法从 /tmp/kustomization-3631900086/2-helm/Chart.yaml 解码 Kubernetes YAML:对象 {{v2 } {{ } map[] map[]}} 中缺少种类
我已经进行了大量搜索并找到了信息,并使其适用于托管舵图,但不是本地的。
有人有什么想法吗? 🙏
Taledor的建议是准确的。发生错误
failed to decode Kubernetes YAML from /tmp/kustomization-3631900086/2-helm/Chart.yaml: missing kind in object
是因为 Kustomization 错误地指向包含 Helm 图表的目录,而它无法处理该目录,因为它需要标准 Kubernetes YAML 文件。
如何解决?
正确的方法涉及创建一个
HelmRelease
资源,指定如何从存储库安装 Helm 图表。此资源告诉 Flux 在 Git 存储库中哪里可以找到 Helm 图表、要从 values.yaml
应用的任何配置以及同步详细信息。
确保您的
HelmRelease
YAML 指向 Git 存储库中 Chart.yaml
所在的正确目录。如有必要,请更新 chart.spec.chart
字段中的路径。例如,如果您的 Helm 图表位于 charts/myapp/
下
示例
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: myapp-release
namespace: default
spec:
interval: 1m
chart:
spec:
chart: ./charts/myapp
sourceRef:
kind: GitRepository
name: flux-helm-aks
namespace: flux-system
values:
replicaCount: 1
提交
HelmRelease
YAML 并将其推送到您的 Git 存储库
完成。
Flux 将自动从您的 Git 存储库中获取更改并根据
HelmRelease
配置应用它们。
确保所有配置正确并推送后验证安装
kubectl get helmrelease -n default