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"
}
在上述代码中,我们定义使用 App
schema 定义了应用的配置,其中我们配置了一个镜像为 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 ,您可以看到创建的应用程序尚未同步,您可以手动进行配置同步或设置为自动同步。
有关同步策略的更多信息,可以请参阅这里
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.