Argo CD 实践 GitOps

介绍 书接上文 OneDev 自建 Git 服务和 CI/CD,这次通过 ArgoCD 实现项目部署,项目编译、镜像构建依然通过 OneDev 流水线实现。当然用别的 Git 服务也是可以的。 Argo CD 被实现为一个 kubernetes 控制器,它持续监控正在运行的应用程序并将当前的活动状态与所需的目标状态(如 Git repo 中指定的)进行比较。Argo CD 报告和可视化差异,同时提供自动或手动将实时状态同步回所需目标状态的工具。 上次 git 仓库只有一个,这次 git 仓库分为两个 wx-msg-push 为项目代码 gitops 应用部署定义 整体流程为: wx-msg-push 正常开发提交 当创建 tag 推送时,触发 OneDev 流水线构建 检出 wx-msg-push 代码,在容器中编译可执行文件,生成多平台可执行文件压缩包制品 通过 kaniko 构建 wx-msg-push 项目镜像,推送至镜像仓库 检出 gitops 代码,修改 wx-msg-push 项目 yaml 文件的镜像版本后 push 在 argocd 中发现 gitops 配置变更 同步应用最新状态 安装部署 高可用配置请参考 High Availability $ kubectl create namespace argocd $ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml 安装之后默认会启用 TLS 验证和 http 强制跳转至 https。 我这里不需要,直接修改 argocd-server 配置 kubectl -n argocd edit deployments.apps argocd-server,增加运行 insecure 运行参数,取消该限制。 ...

July 30, 2022 · 3 min · 443 words · Nick

OneDev 自建 Git 服务和 CI/CD

介绍 今天介绍一个可以自建的开源 Git 服务 OneDev, 功能强大,资源占用少,国人 Java 开发。 开箱即用的符号跳转、符号搜索 全功能的 CI/CD,支持 GUI 强大易用的 Commit/Issue/Build/Pull Request 查询语言 代码标注和讨论 更多功能特性看官网说明 目前不足是全英文,文档简洁,还不知道什么时候支持中文,也不算什么大事。另外小 Bug 多,不过作者修复神速。 部署安装 运行环境 k8s v1.21.5,容器运行时 containerd。 安装方式直接参考官方文档 helm 装就完事,除了在 k8s 运行也可以直接 docker run 和裸机跑。 helm 安装完成会创建一个 onedev 的 service type 是 LoadBalancer,由于我使用 apisix ingress 所以直接改成 ClusterIP 然后外面再套负载均衡走流量。细节不展开了可以参考实践 Apache APISIX Ingress。 符号跳转、搜索 支持 Java, JavaScript, C, C++, CSharp, Go, PHP, Python, CSS, SCSS, LESS and R 语言,IDE 级别的功能。 据作者说使用 ANTLR 分析主流语言的语法,并提取符号定义进行增量存储,速度快,占用空间小。 ...

July 12, 2022 · 2 min · 416 words · Nick