Skip to main content
版本: 0.10

KPT KCL SDK

简介

kpt 是一个以包为中心的工具链,可实现配置原地编辑、自动化和交付,通过将声明性配置作为数据进行操作,从而简化 Kubernetes 平台和 KRM 驱动的基础设施(例如,Config Connector、Crossplane)的大规模管理,以实现 Kubernetes 配置编辑的自动化包括转换和验证。

KCL 可用于创建函数来转换和/或验证 YAML Kubernetes 资源模型 (KRM) 输入/输出格式,但我们提供 KPT KCL SDK 来简化函数编写过程。

先决条件

快速开始

让我们编写一个仅向 Deployment 资源添加 annotation managed-by=kpt 的 KCL 函数

1. 获取示例

git clone https://github.com/kcl-lang/kpt-kcl-sdk.git/
cd ./kpt-kcl-sdk/get-started/set-annotation

2. 显示 KRM

kpt pkg tree

输出为

set-annotation
├── [kcl-fn-config.yaml] KCLRun set-annotation
└── data
├── [resources.yaml] Deployment nginx-deployment
└── [resources.yaml] Service test

3. 显示和更新 KCL FunctionConfig

cat ./kcl-fn-config.yaml

输出为

# kcl-fn-config.yaml
apiVersion: krm.kcl.dev/v1alpha1
kind: KCLRun
metadata: # kpt-merge: /set-annotation
name: set-annotation
spec:
# 编辑此源代码
# 您在此的 KCL 代码将 `ResourceList` 预加载到 `option("resource_list")`
source: |
[resource | {if resource.kind == "Deployment": metadata.annotations: {"managed-by" = "kpt"}} for resource in option("resource_list").items]

4. 测试和运行

通过 kpt 运行 KCL 代码

kpt fn eval ./data -i docker.io/kcllang/kpt-kcl:v0.2.0 --fn-config kcl-fn-config.yaml

# 验证 annotation 是否添加到 `Deployment` 资源并且其他资源 `Service` 没有这个 annotation。
cat ./data/resources.yaml | grep annotations -A1 -B0

输出为

  annotations:
managed-by: kpt

可以看出,我们确实成功添加了 managed-by=kpt 标签

更多文档和示例