ngrok forward本地argocd并设置为github repo webhook

为什么需要ngrok

我们刚学了argocd的安装和部署应用,但是argocd什么时候部署部署我们的应用,就取决于repo的sync机制。我们采用以下cmd设置为autosync。

复制代码
argocd app list # to get our app
argocd app set argocd/tekton-learning-nginx  --sync-policy automated # argocd/tekton-learning-nginx  is my app_name

这样配置的话,argocd默认每三分钟就去检测,如果有更新就自动sync。

而通常我们希望,可以定制什么时候sync,也就是可以通过github的webhook,去决定什么时候触发sync。

本地argocd没有外网的ip,无法设置为webhook,ngrok就为了解决此问题。

安装和使用ngrok

注册用户,并登陆,就可以看到installation and setup。就可以轻松安装了。我的操作系统是macos。所以我用到的指令是:

复制代码
sudo unzip ~/Downloads/ngrok-v3-stable-darwin.zip -d /usr/local/bin
ngrok config add-authtoken **** # *** is my token key. You just need to copy yours
ngrok http https://localhost:8000

这里需要说明的是,https://localhost:8000是我的argocd local url。我可以通过web browser访问。这里你需要换成你的argocd local url。

设置github repo webhook

找到your_external_argocd_url

查看ngrok http your_argocd_local_url 的输出,我的输出如下:

复制代码
Session Status                online                                                                                             
Account                       my_account (Plan: Free)                                                                       
Version                       3.15.1                                                                                             
Region                        Asia Pacific (ap)                                                                                  
Latency                       74ms                                                                                               
Web Interface                 http://127.0.0.1:4040                                                                              
Forwarding                    https://6d91-111-201-230-65.ngrok-free.app -> https://localhost:8000                               
                                                                                                                                 
Connections                   ttl     opn     rt1     rt5     p50     p90                                                        
                              18      0       0.00    0.00    0.79    91.04                                                      
                                                                                                                                 
HTTP Requests                                                                                                                    
-------------                                                                                                                    

这里,Forwarding后面的https://...app就是ngrok为我们local argocd提供的外网入口,我们称它为your_external_argocd_url。

我们把他粘贴到我们的浏览器中,确保我们可以看到argocd的dashboard。

添加webhook

打开你的github repo的配置页,将webbook设置为your_external_argocd_url/api/webhook, content_type设置为application/json,点击保存即可。

当你保存后,这个hook前端回显示一个内部是感叹号的红色三角,其表示还未曾触发过该hook。

修改代码并查看hook

修改代码并提交,这时候回到github webhook界面,看hook是否能正常工作。正常工作的话,会出现绿色对号。

回到argocd dashboard,也可以看到sync已经完成并且部署最新的代码。

查看ngrok输出

复制代码
Session Status                online                                                                                             
Account                       wlin@redhat.com (Plan: Free)                                                                       
Version                       3.15.1                                                                                             
Region                        Asia Pacific (ap)                                                                                  
Latency                       73ms                                                                                               
Web Interface                 http://127.0.0.1:4040                                                                              
Forwarding                    https://6d91-111-201-230-65.ngrok-free.app -> https://localhost:8000                               
                                                                                                                                 
Connections                   ttl     opn     rt1     rt5     p50     p90                                                        
                              18      0       0.00    0.00    0.79    91.04                                                      
                                                                                                                                 
HTTP Requests                                                                                                                    
-------------                                                                                                                    
                                                                                                                                 
18:52:31.916 CST POST /api/webhook                                 200 OK                                                        
18:40:54.285 CST POST /api/webhook                                 200 OK                                                        
18:04:59.508 CST POST /api/webhook                                 200 OK        

我们同样可以看到api/webhook 200的成功的信息。

相关推荐
heimeiyingwang2 天前
【GitOps·ArgoCD篇】同步策略:自动同步、手动同步与同步钩子
argocd·gitops
heimeiyingwang5 天前
【GitOps·入门篇】工具生态:ArgoCD、Flux、Jenkins X 对比选型
jenkins·flux·argocd·gitops
xiaoxiangsiyan15 天前
GitLab CI/CD 自托管(EE 企业版)+ Kubernetes Runner 集群 + ArgoCD(GitOps 部署)
运维·网络·ci/cd·容器·kubernetes·gitlab·argocd
nvd1115 天前
ArgoCD 双层轮询深入拆解:从 redis-app.yaml 注册到缓存重建的完整链路
redis·缓存·argocd
meijinmeng16 天前
EKS 集群 ArgoCD `v3.0.6 → v3.1.x → v3.2.x` 备份,恢复,升级,巡检手册
argocd·cicd
运维大师18 天前
【K8S 运维实战】32-GitOps实践ArgoCD
运维·kubernetes·argocd
spider_xcxc18 天前
Argo CD Webhook 完全指南:从原理到实战,实现 Git 变更即时同步
argocd
啊真真真20 天前
ArgoCD:我的GitOps探索之旅与未来展望
java·算法·argocd
nvd1124 天前
基于 ArgoCD 优雅落地 K8s Gateway API 与 Kong 控制器(KIC)
kubernetes·gateway·argocd
求知若渴,虚心若愚。2 个月前
GitOps 部署实战指南(CICD)
argocd