使用 KCL 编程语言构建你的 GitOps 流程 - CD 篇

299 天前
 peefy

简介

什么是 GitOps

GitOps 是一种实现持续交付的现代方式。它的核心思想是拥有一个包含环境和应用程序配置的 Git 存储库。通过更改应用存储库中的文件,可以自动部署应用程序。应用 GitOps 的好处包括:

将 KCL 与 ArgoCD 一起使用

将 KCL 与 ArgoCD 等 GitOps 工具一起使用具有如下好处:

使用 GitOps ,开发人员和运维团队可以通过分别修改应用和配置代码来管理应用程序的部署,GitOps 工具链将自动同步对配置的更改,从而实现持续部署并确保一致性。如果出现问题,可以使用 GitOps 工具链快速回滚。

快速开始

1. 获取示例

首先,我们执行 git 命令获得用例

git clone https://github.com/kcl-lang/kcl-lang.io.git/
cd ./kcl-lang.io/examples/gitops

我们可以运行以下命令来显示配置

cat config/main.k

The output is

import .app

config = app.App {
    name = "kcl-guestbook-ui"
    containers.guestbook = {
        image = "gcr.io/heptio-images/ks-guestbook-demo:0.2"
        ports = [{containerPort = 80}]
    }
    service.ports = [{ port = 80 }]
    service.type = "LoadBalancer" 
}

在上述代码中,我们定义使用 App schema 定义了应用的配置,其中我们配置了一个镜像为 gcr.io/heptio images/ks guestbook demo:0.2 容器,并启用了 80 端口。

2. 安装 Kubernetes 和 GitOps 工具

配置 Kubernetes 集群和 ArgoCD 控制器

k3d cluster delete mycluster && k3d cluster create mycluster

注意:你可以在此方案中使用其他方式创建您自己的 Kubernetes 集群,如 kind, minikube 等。

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl apply -f ./install/kcl-cmp.yaml && kubectl -n argocd patch deploy/argocd-repo-server -p "$(cat ./install/patch-argocd-repo-server.yaml)"
kubectl get pod -n argocd -l app.kubernetes.io/name=argocd-repo-server
kubectl port-forward svc/argocd-server -n argocd 8080:443
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

安装 ArgoCD 客户端工具

argocd login localhost:8080

通过如下命令创建一个 ArgoCD KCL 应用

argocd app create guestbook \
--repo https://github.com/kcl-lang/kcl-lang.io \
--path examples/gitops/config \
--dest-namespace default \
--dest-server https://kubernetes.default.svc \
--config-management-plugin kcl-v1.0

如果创建成功,您可以看到如下输出:

After successfully creating, you can see the following output:

application 'guestbook' created

如果您使用的是私有存储库,则在执行 create 命令之前,需要使用私钥凭据配置专用私有存储库访问权限。请参阅这里以获取更多详细信息。

通过 ArgoCD UI ,您可以看到创建的应用程序尚未同步,您可以手动进行配置同步或设置为自动同步。

有关同步策略的更多信息,可以请参阅这里

852 次点击
所在节点    Kubernetes
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/958111

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX