我在[k8s]中尝试自动应用helm和kustomize来实现flux
首先
这篇文章是“创建您的家用Kubernetes环境”系列的一部分。上一篇文章介绍了如何使用Flux来搭建自动部署基础设施。
本次我们将使用之前介绍的flux来自动应用helm和kustomize。
我已经将完成的版本发布在这个仓库中。
https://github.com/piny940/infra
环境
柠檬和酸橙是机器的名称。它们在两台VPS集群上运行。
lemon: Kagoya Cloud VPS 2コア 2GB
lime: Kagoya Cloud VPS 2コア 2GB
デプロイツール: kubeadm
CRI: cri-dockerd
CNI: Weave Net
前提条件 tí
-
- kubernetesクラスタが動作している
- fluxがインストールされている
自定义配置的设置
请在 flux/kustomizations/hello-node 文件中按照以下方式进行编写。
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: hello-node
namespace: flux-system
spec:
interval: 10m0s
path: "./kubernetes/hello-node"
prune: true
sourceRef:
kind: GitRepository
name: flux-system
namespace: flux-system
spec.path指向放置了kustomization.yaml的应用目录。
当将此更改推送到main分支时,应用程序的kustomization.yaml文件将自动应用。
Helm发布的配置
本次我们以安装ingress-nginx为例,来展示相应的配置。
请将以下内容用中文进行本土化改写,只需要一种选项:
ingress-nginx/helm.yaml:
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: HelmRepository
metadata:
name: ingress-nginx
spec:
interval: 1h
url: https://kubernetes.github.io/ingress-nginx
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: ingress-nginx
spec:
interval: 1h
chart:
spec:
chart: ingress-nginx
sourceRef:
kind: HelmRepository
name: ingress-nginx
在HelmRepository中指定了ingress-nginx的chart仓库,在HelmRelease中定义了发布。
ingress-nginx/kustomization.yaml:
入口控制器-nginx/kustomization.yaml:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: ingress-nginx
resources:
- helm.yaml
flux/kustomizations/ingress-nginx.yaml 的翻译如下:
– 通量/定制/入口控制器.yaml
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: ingress-nginx
namespace: flux-system
spec:
interval: 10m0s
path: "./kubernetes/ingress-nginx"
prune: true
sourceRef:
kind: GitRepository
name: flux-system
namespace: flux-system
当将这些更改推送到主分支时,将安装 ingress-nginx。
到最後
这次我们使用Flux来自动适用Helm和Kustomize。下一步,我们希望能够建立起基础设施,使得Docker镜像的推送也能自动完成。
请查阅相关资料