我在[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镜像的推送也能自动完成。

请查阅相关资料

 

广告
将在 10 秒后关闭
bannerAds