Skip to content

Latest commit

 

History

History
115 lines (78 loc) · 3.36 KB

README-zh.md

File metadata and controls

115 lines (78 loc) · 3.36 KB

Flux KCL controller

English | 简体中文

介绍

flux-kcl-controller 是一个组件,用于集成 KCLFlux, 主要用来根据存储在 git/oci 仓库中的 KCL 程序定义的基础设施和工作负载,通过 source-controller 获取 KCL 程序,实现基础设施和工作负载的持续交付。

kcl-flux

特性

  • 定期监控存储 KCL 程序的 git/oci 仓库,并根据 git 仓库中的变化,调谐 k8s 集群状态。

快速开始

前提条件

  • k3d: 用于创建测试用的 k8s 集群,如果你已经有了 k8s 集群,可以忽略这一步。
  • Kustomize
  • Kubectl

创建测试用的 k8s 集群

通过如下命令创建集群:

k3d cluster create

下载 kcl-controller 并且安装到集群中

clone 本仓库到本地:

git clone https://github.com/kcl-lang/flux-kcl-controller.git

进入到本仓库的根目录:

cd flux-kcl-controller

将 kcl-controller 安装到集群中:

make deploy

监控一个 git 仓库

我们以仓库 https://github.com/awesome-kusion/kcl-deployment 为例,该仓库中存储了一个 KCL 程序,该程序定义了一个 Deployment,我们将使用 flux-kcl-controller 来部署该程序。

通过 gitrepo.yaml 文件,定义一个 GitRepository 对象,用来监控该仓库:

apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
  name: kcl-deployment
  namespace: source-system
spec:
  interval: 30s # 每隔 30s 检查一次仓库
  url: https://github.com/awesome-kusion/kcl-deployment.git
  ref:
    branch: main # 监控 main 分支
---
apiVersion: krm.kcl.dev.fluxcd/v1alpha1
kind: KCLRun
metadata:
  name: kcl-deployment
  namespace: source-system
spec:
  sourceRef:
    kind: GitRepository
    name: kcl-deployment

使用命令 kubectl apply -f gitrepo.yaml 将该对象部署到集群中。

查看部署结果

使用命令 kubectl get deployment 查看部署结果:

NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   1/1     1            0           28s

可以看到,kcl-controller 根据仓库中的 KCL 程序,创建了一个 Deployment。

更新仓库中的 KCL 程序

我们可以通过修改仓库中的 KCL 程序,来更新集群中的 Deployment。

修改仓库中的 KCL 程序,将 nginx 的版本从 1.7.7 修改为 1.7.8,将deployment的名字改为 nginx-deployment-1,并且提交到 main 分支。

具体变化可以参考: nginx:1.7.7 deployment -> nginx:1.7.8 deployment

使用命令 kubectl get deployment 查看部署结果:

NAME               READY   UP-TO-DATE   AVAILABLE   AGE
NAME                 READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment     1/1     1            1           20m
nginx-deployment-1   1/1     1            0           4s

可以看到,flux-kcl-controller 根据仓库中的 KCL 程序,创建了一个 nginx-deployment-1 资源。