ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

GitOps之Argo CD实践

2021-03-12 15:03:24  阅读:249  来源: 互联网

标签:GitOps 12d redis argocd TCP CD Running Argo server


GitOps之Argo CD实践

scofield 菜鸟运维杂谈

简介


Argo CD是用于Kubernetes的声明性GitOps连续交付工具。
关于 GitOps 相关的概念这里不做更多介绍,本文主要以实战为主,通过一个完整的使用示例,希望对大家实践 GitOps 有所帮助。

接来下就开干……

安装Argo CD


1、根据官网文档,其实安装很简单,两条命令搞定


kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

这里说明下,如果有私有仓库,可以先把需要的镜像下载下来传到自己的私有仓库,要不然可能会因为网络原因部署很慢甚至不成功,
a、需要如下四个镜像,我先下载到自己的仓库了。


image: hub.kubeops.net/dev/dex:v2.25.0
image: hub.kubeops.net/dev/haproxy:2.0.4
image: hub.kubeops.net/dev/argocd:latest
image: hub.kubeops.net/dev/redis:5.0.10-alpine

b、我这里直接修改argocd的Service类型为NodePort,方便测试。线上环境建议配置Ingress

2、部署完成如下所示


[root@ argo]# kubectl get po -n  argocd 
NAME                                       READY   STATUS    RESTARTS   AGE
argocd-application-controller-0            1/1     Running   0          12d
argocd-dex-server-58ff66cff7-nmgh5         1/1     Running   0          12d
argocd-redis-ha-haproxy-68c68f5664-bjp9b   1/1     Running   0          12d
argocd-redis-ha-haproxy-68c68f5664-crttm   1/1     Running   0          12d
argocd-redis-ha-haproxy-68c68f5664-xzckx   1/1     Running   0          12d
argocd-redis-ha-server-0                   2/2     Running   0          12d
argocd-redis-ha-server-1                   2/2     Running   0          12d
argocd-redis-ha-server-2                   2/2     Running   0          12d
argocd-repo-server-5f665db888-4pjzl        1/1     Running   0          12d
argocd-repo-server-5f665db888-vkvc2        1/1     Running   0          12d
argocd-server-78798c96c8-hpn4q             1/1     Running   0          12d
argocd-server-78798c96c8-j7frq             1/1     Running   0          12d

查看Service,这里看到argocd-server 的类型为NodePort
[root@ argo]# kubectl get svc  -n  argocd
NAME                         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
argocd-dex-server            ClusterIP   10.96.180.148   <none>        5556/TCP,5557/TCP,5558/TCP   12d
argocd-metrics               ClusterIP   10.110.44.191   <none>        8082/TCP                     12d
argocd-redis-ha              ClusterIP   None            <none>        6379/TCP,26379/TCP           12d
argocd-redis-ha-announce-0   ClusterIP   10.108.171.93   <none>        6379/TCP,26379/TCP           12d
argocd-redis-ha-announce-1   ClusterIP   10.99.64.124    <none>        6379/TCP,26379/TCP           12d
argocd-redis-ha-announce-2   ClusterIP   10.98.107.138   <none>        6379/TCP,26379/TCP           12d
argocd-redis-ha-haproxy      ClusterIP   10.101.136.77   <none>        6379/TCP                     12d
argocd-repo-server           ClusterIP   10.106.50.123   <none>        8081/TCP,8084/TCP            12d
argocd-server                NodePort    10.106.75.221   <none>        80:31016/TCP,443:30807/TCP   12d
argocd-server-metrics        ClusterIP   10.106.25.225   <none>        8083/TCP                     12d

3、现在可以通过浏览器进去Argo CD的管理界面了,用户名:admin,密码:server Pod 的名字,可以通过如下命令获取


[root@qd01-stop-k8s-master001 argo]# kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2
argocd-server-78798c96c8-hpn4q

登录后可以看到如下界面

GitOps之Argo CD实践

使用Argo CD创建应用


1、从git repo创建一个应用,这里就直接使用官方的示例https://github.com/argoproj/argocd-example-apps.git 我直接把项目克隆到内部私有的git上,地址变为了http://gogs.kubeops.net/scofield/argocd-example-apps.git 如果没有私有git可以直接用github的

2、通过Argo CD UI界面创建一个App
a、首先在管理界面设施repo,让Argo CD 能够连接到git仓库

GitOps之Argo CD实践
b、点击New APP,填写相关信息
GitOps之Argo CD实践

c、填写APP名字,项目:默认为Default,同步策略:可选Manual或者Auto
GitOps之Argo CD实践

d、选择源,点击输入框会自动出现刚才添加好的repo,选择其中一个项目即可
GitOps之Argo CD实践

e、选择目的,因为本文Argo CD 是部署到kubernetes中,直接能过读取到集群信息,然后输入Namespace
GitOps之Argo CD实践

f、最后可以按需修改参数,不需要修改默认也可。
GitOps之Argo CD实践

g、填写完信息,点击CREATE,创建好以后如下图
GitOps之Argo CD实践

注意,现在状态是OutOfSync,还没有同步git

运行APP


1、点击项目,进入详情

GitOps之Argo CD实践

2、现在我们来手动同步看下效果
GitOps之Argo CD实践

3、点击SYNC并确认以后,开始同步repo并根据部署文件把应用部署到kubernets集群中,所示,guestbook项目运行成功,现在可以访问项目了。
运行成功后,会自动生成项目拓扑图,简单明了。
GitOps之Argo CD实践

4、因为我创建项目时候修改了服务类型为NodePort,现在可以通过Node点IP+Port直接访问项目
GitOps之Argo CD实践

自动触发项目


现在我们来修改下项目,以实现我们提交完代码到git仓库,自动触发更新项目。
比如:现在项目pod的副本数为5,我们想扩容到10
1、修改项目同步模式,Sync Policy改成AUTO_SYNC

GitOps之Argo CD实践

2、修改git代码并提交代码到仓库
我这里用的是gogs,直接在网页上修改了,修改为直接commit
GitOps之Argo CD实践

3、观察应用变化,Pod数正在增加
GitOps之Argo CD实践

APP部署文件解析


现在我们来看下生产的这个APP的部署清单,直接点击项目详情即可看到


project: default
source:
  repoURL: 'http://gogs.kubeops.net/scofield/argocd-example-apps.git'
  path: helm-guestbook
  targetRevision: HEAD
  helm:
    parameters:
      - name: image.repository
        value: hub.kubeops.net/dev/ks-guestbook-demo
      - name: service.type
        value: NodePort
destination:
  server: 'https://kubernetes.default.svc'
  namespace: default
syncPolicy:
  automated: {}

从如上信息我们可以看到,上面定义的 Application 这个资源,就是 Argo CD 用于描述应用的 CRD 对象:


project:应用程序将被配置的项目名称,这是在 Argo CD 中应用程序的一种组织方式
repoURL:源代码的仓库地址
targetRevision:想要使用的 git 分支
path:Kubernetes 资源清单在仓库中的路径
destination:Kubernetes 集群中的目标

以上就是本文所有内容...

PS:文章会同步到dev.kubeops.net

标签:GitOps,12d,redis,argocd,TCP,CD,Running,Argo,server
来源: https://blog.51cto.com/15060545/2657211

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有