运用git+jenkins+argocd实现简单gitops

半日闲 2020年11月14日 23次浏览

前言

本次测试只是简单的测试下argocd的功能而已,正确的gitops应该是在argocd中使用自带的CRD资源来创建,即将imageyaml的资源通通写成文件,先由git保存代码,然后jenkins根据Dockerfile等文件编译镜像,推送至镜像仓库,最后由argocd根据yaml的声明式定义来自动部署

可参考

https://www.qikqiak.com/post/gitlab-ci-argo-cd-gitops/

环境准备

gitea

jenkins

argocd

示意图gitops如下

image-20201114002857477

argocd安装

  1. 按照以下的方法安装argocd server即可

    kubectl create ns argocd
    ubectl apply -f https://raw.githubusercontent.com/argoproj/argo-cd/v1.7.8/manifests/ha/install.yaml
    # 由于天朝屏蔽了githubusercontent.com,所有上述的install.yaml可以通过https://github.com/argoproj/argocd/blob/v1.7.8/manifests/ha/install.yaml手动获取
    
  2. 安装argocdCLI工具

     wget https://github.com/argoproj/argo-cd/releases/download/v1.7.8/argocd-linux-amd64
     mv argocd-linux-amd64 /usr/bin/argocd && chmod +x /usr/bin/argocd
    
  3. web端登录argocd

    由于默认的argocd-server的端口是svc,所以需要转发出来

    kubectl port-forward svc/argocd-server -n argocd --address 0.0.0.0 28080:443
    

    直接从浏览器的host_ip:28080端口登录即可

    默认账户是admin,密码是argocd-serverpod名字,可执行以下获取

    kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2
    

    也可以使用argocdCLI工具登录并修改密码

    argocd login 
    # 登录argocd server
    argocd  account update-password
    # 修改密码
    

giteajenkinsd的配置

gitea和jenkins的自动化配置

argocd配置

点击+ NEW APP后,

Application Name 为任务名

Projectgitea中的repo

SYNC POLICY为同步策略,如果是测试环境可以选择Automatic,但是生产环境,建议使用Manual

image-20201114004404026

Repository URLgitearepo的路径

Revision为版本号,可以写master或者HEAD之类的,可点击右边的?查看

Pathkubernetes中资源的目录

image-20201114005123393

一般来讲,生产环境和测试环境用到的yaml文件都放在不同的目录下区分开,而且,一般的docker file文件和kubernetesyaml文件都是分开存放的,即镜像文件和资源文件是一个仓库中分开存放的,如下nginx-argocd为资源文件目录

image-20201114005324027

Cluster URLhttps://kubernetes.default.svc

Namespace填写要部署到的namespace即可

image-20201114005642789

点击CREATE即可

完成后,该任务的状态应该是OutOfSync,此时需要手动同步一下

点击SYNCSYNCHRONIZE即可

image-20201114005857205

等待argocd自行同步并部署podk8s即可,点击任务名,可以看到部署的情况如下

image-20201114010054979