<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Devops on Nick's Blog</title><link>https://ibelieving.com/tags/devops/</link><description>Recent content in Devops on Nick's Blog</description><generator>Hugo</generator><language>zh-cn</language><copyright>2014 ibelieving.com. All rights reserved.</copyright><lastBuildDate>Sat, 30 Jul 2022 11:00:00 +0800</lastBuildDate><atom:link href="https://ibelieving.com/tags/devops/index.xml" rel="self" type="application/rss+xml"/><item><title>Argo CD 实践 GitOps</title><link>https://ibelieving.com/posts/2022-07-30-argocd/</link><pubDate>Sat, 30 Jul 2022 11:00:00 +0800</pubDate><guid>https://ibelieving.com/posts/2022-07-30-argocd/</guid><description>&lt;h2 id="介绍"&gt;介绍&lt;/h2&gt;
&lt;p&gt;书接上文 &lt;a href="https://ibelieving.com/posts/2022-07-12-onedev/"&gt;OneDev 自建 Git 服务和 CI/CD&lt;/a&gt;，这次通过 ArgoCD 实现项目部署，项目编译、镜像构建依然通过 OneDev 流水线实现。当然用别的 Git 服务也是可以的。&lt;/p&gt;
&lt;p&gt;Argo CD 被实现为一个 kubernetes 控制器，它持续监控正在运行的应用程序并将当前的活动状态与所需的目标状态（如 Git repo 中指定的）进行比较。Argo CD 报告和可视化差异，同时提供自动或手动将实时状态同步回所需目标状态的工具。&lt;/p&gt;
&lt;p&gt;上次 git 仓库只有一个，这次 git 仓库分为两个&lt;/p&gt;
&lt;p&gt;wx-msg-push 为项目代码
gitops 应用部署定义&lt;/p&gt;
&lt;p&gt;整体流程为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;wx-msg-push 正常开发提交&lt;/li&gt;
&lt;li&gt;当创建 tag 推送时，触发 OneDev 流水线构建&lt;/li&gt;
&lt;li&gt;检出 wx-msg-push 代码，在容器中编译可执行文件，生成多平台可执行文件压缩包制品&lt;/li&gt;
&lt;li&gt;通过 kaniko 构建 wx-msg-push 项目镜像，推送至镜像仓库&lt;/li&gt;
&lt;li&gt;检出 gitops 代码，修改 wx-msg-push 项目 yaml 文件的镜像版本后 push&lt;/li&gt;
&lt;li&gt;在 argocd 中发现 gitops 配置变更&lt;/li&gt;
&lt;li&gt;同步应用最新状态&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="安装部署"&gt;安装部署&lt;/h2&gt;
&lt;p&gt;高可用配置请参考 &lt;a href="https://argo-cd.readthedocs.io/en/stable/operator-manual/high_availability/"&gt;High Availability&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl create namespace argocd
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装之后默认会启用 &lt;code&gt;TLS&lt;/code&gt; 验证和 &lt;code&gt;http&lt;/code&gt; 强制跳转至 &lt;code&gt;https&lt;/code&gt;。
我这里不需要，直接修改 &lt;code&gt;argocd-server&lt;/code&gt; 配置 &lt;code&gt;kubectl -n argocd edit deployments.apps argocd-server&lt;/code&gt;，增加运行 &lt;code&gt;insecure&lt;/code&gt; 运行参数，取消该限制。&lt;/p&gt;</description></item><item><title>OneDev 自建 Git 服务和 CI/CD</title><link>https://ibelieving.com/posts/2022-07-12-onedev/</link><pubDate>Tue, 12 Jul 2022 22:30:00 +0800</pubDate><guid>https://ibelieving.com/posts/2022-07-12-onedev/</guid><description>&lt;h2 id="介绍"&gt;介绍&lt;/h2&gt;
&lt;p&gt;今天介绍一个可以自建的开源 Git 服务 &lt;a href="https://github.com/theonedev/onedev"&gt;OneDev&lt;/a&gt;, 功能强大，资源占用少，国人 Java 开发。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开箱即用的符号跳转、符号搜索&lt;/li&gt;
&lt;li&gt;全功能的 CI/CD，支持 GUI&lt;/li&gt;
&lt;li&gt;强大易用的 Commit/Issue/Build/Pull Request 查询语言&lt;/li&gt;
&lt;li&gt;代码标注和讨论&lt;/li&gt;
&lt;li&gt;更多功能特性看官网说明&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;目前不足是全英文，文档简洁，还不知道什么时候支持中文，也不算什么大事。另外小 Bug 多，不过作者修复神速。&lt;/p&gt;
&lt;h2 id="部署安装"&gt;部署安装&lt;/h2&gt;
&lt;p&gt;运行环境 &lt;code&gt;k8s v1.21.5&lt;/code&gt;，容器运行时 &lt;code&gt;containerd&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;安装方式直接参考&lt;a href="https://docs.onedev.io/installation-guide/deploy-to-k8s"&gt;官方文档&lt;/a&gt; &lt;code&gt;helm&lt;/code&gt; 装就完事，除了在 &lt;code&gt;k8s&lt;/code&gt; 运行也可以直接 &lt;code&gt;docker run&lt;/code&gt; 和裸机跑。
&lt;code&gt;helm&lt;/code&gt; 安装完成会创建一个 &lt;code&gt;onedev&lt;/code&gt; 的 &lt;code&gt;service&lt;/code&gt; &lt;code&gt;type&lt;/code&gt; 是 &lt;code&gt;LoadBalancer&lt;/code&gt;，由于我使用 &lt;code&gt;apisix ingress&lt;/code&gt; 所以直接改成 &lt;code&gt;ClusterIP&lt;/code&gt; 然后外面再套负载均衡走流量。细节不展开了可以参考&lt;a href="https://ibelieving.com/posts/2022-07-05-apache_apisix_ingress/"&gt;实践 Apache APISIX Ingress&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id="符号跳转搜索"&gt;符号跳转、搜索&lt;/h2&gt;
&lt;p&gt;支持 Java, JavaScript, C, C++, CSharp, Go, PHP, Python, CSS, SCSS, LESS and R 语言，IDE 级别的功能。
据作者说使用 ANTLR 分析主流语言的语法，并提取符号定义进行增量存储，速度快，占用空间小。&lt;/p&gt;
&lt;p&gt;&lt;img alt="符号搜索" loading="lazy" src="https://ibelieving.com/images/onedev1.jpg"&gt;
&lt;img alt="符号跳转" loading="lazy" src="https://ibelieving.com/images/onedev2.jpg"&gt;&lt;/p&gt;</description></item></channel></rss>