<?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>Gitops on Nick's Blog</title><link>https://ibelieving.com/tags/gitops/</link><description>Recent content in Gitops 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/gitops/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></channel></rss>