
GitOps 是一种实现持续交付的现代方式。它的核心思想是拥有一个包含环境和应用程序配置的 Git 存储库。通过更改应用存储库中的文件,可以自动部署应用程序。应用 GitOps 的好处包括:
将KCL与ArgoCD等 GitOps 工具一起使用具有如下好处:
使用 GitOps ,开发人员和运维团队可以通过分别修改应用和配置代码来管理应用程序的部署,GitOps 工具链将自动同步对配置的更改,从而实现持续部署并确保一致性。如果出现问题,可以使用 GitOps 工具链快速回滚。
首先,我们执行 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" } 在上述代码中,我们定义使用Appschema 定义了应用的配置,其中我们配置了一个镜像为gcr.io/heptio images/ks guestbook demo:0.2容器,并启用了80端口。
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命令查看 argocd 控制器容器是否初始化完成进入运行( Running )状态。kubectl get pod -n argocd -l app.kubernetes.io/name=argocd-repo-server kubectl port-forward svc/argocd-server -n argocd 8080:443 https://localhost:8080输入用户名 "admin" 和密码登陆 ArgoCD UI ,密码可以通过如下命令得到:kubectl -n argocd get secret argocd-initial-admin-secret -o jsOnpath="{.data.password}" | base64 -d 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 ,您可以看到创建的应用程序尚未同步,您可以手动进行配置同步或设置为自动同步。
有关同步策略的更多信息,可以请参阅这里