蛮子哥 蛮子哥
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)

蛮子哥

业精于勤,荒于嬉
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)
  • ansible系列文章

  • Kubernetes笔记

  • elk

  • jenkins

  • GitLabCI_CD

  • AI编程

  • 提示词

  • ArgoCD

    • argocd部署
    • argocd+gitlab应用自动发布
      • 添加仓库地址
      • 创建应用
      • 验证应用部署状态
      • 版本更新
      • 版本回退
    • ArgoCD仓库管理
    • ArgoCD集群管理
    • ArgoCD项目管理
    • ArgoCD监控
  • 专题
  • ArgoCD
蛮子哥
2024-03-13
目录

argocd+gitlab应用自动发布

# gitlab仓库配置

推荐gitlab创建空仓库后,拉取到本地编辑好以后再提交,不要直接编辑gitlab的yaml文件,因为gitlab在线编辑时,换行与tab空格在argocd上可能存在识别失败,不是标准的yaml文件,无法创建应用。
创建一个最简单的仓库,仅包含应用的yaml文件,文件内容如下

[root@localhost argo]# tree argo-demo
argo-demo
├── README.md
└── manifests
    ├── cms.yaml
    ├── deployment.yaml
    └── svc.yaml
[root@localhost argo]# cat argo-demo/manifests/deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-deployment
  labels:
    app: php-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: php-app
  template:
    metadata:
      labels:
        app: php-app
    spec:
      containers:
      - name: php
        image: docker.cnb.cool/zzppjj/docker-images/php_k8s:v6
        ports:
        - containerPort: 80
        volumeMounts:
        - name: app-config
          mountPath: /app/config/database.php
          subPath: database.php
        resources:
          requests:
            memory: "128Mi"
            cpu: "100m"
          limits:
            memory: "256Mi"
            cpu: "200m"
      volumes:
      - name: app-config
        configMap:
          name: app-config-files
          items:
          - key: database.php
            path: database.php
[root@localhost argo]# cat argo-demo/manifests/cms.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config-files
data:
  database.php: |
    <?php

    return [
    // 数据库类型
    'type'            => 'mysql',
    // 服务器地址
    'hostname'        => '192.168.51.51',
    // 数据库名
    'database'        => 'vmq_new',
    // 用户名
    'username'        => 'root',
    // 密码
    'password'        => '2023W#@qGhsd',
    // 端口
    'hostport'        => '13306',
    // 连接dsn
    'dsn'             => '',
    // 数据库连接参数
    'params'          => [],
    // 数据库编码默认采用utf8
    'charset'         => 'utf8',
    // 数据库表前缀
    'prefix'          => '',
    // 数据库调试模式
    'debug'           => true,
    // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
    'deploy'          => 0,
    // 数据库读写是否分离 主从式有效
    'rw_separate'     => false,
    // 读写分离后 主服务器数量
    'master_num'      => 1,
    // 指定从服务器序号
    'slave_no'        => '',
    // 自动读取主库数据
    'read_master'     => false,
    // 是否严格检查字段是否存在
    'fields_strict'   => true,
    // 数据集返回类型
    'resultset_type'  => 'array',
    // 自动写入时间戳字段
    'auto_timestamp'  => false,
    // 时间字段取出后的默认时间格式
    'datetime_format' => 'Y-m-d H:i:s',
    // 是否需要进行SQL性能分析
    'sql_explain'     => false,
    // Builder类
    'builder'         => '',
    // Query类
    'query'           => '\\think\\db\\Query',
    // 是否需要断线重连
    'break_reconnect' => false,
    // 断线标识字符串
    'break_match_str' => [],
    ];

[root@localhost argo]# cat argo-demo/manifests/svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: php-service
spec:
  selector:
    app: php-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: ClusterIP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122

gitlab仓库内容如下:

2eb241a66555b688.jpg

# argocd配置

# 添加仓库地址

添加仓库地址,Settings → Repositories,点击 Connect Repo using HTTPS 按钮:

8ce7541c48d7260d.jpg

填写以下信息

6197a9d75a2dff83.jpg

验证通过后显示如下,点击创建应用

28f827d9d809275a.jpg

# 创建应用

填写以下内容

9106d5966f1f6507.jpg

5a5b2c31cc989868.jpg

创建完后如下所示:

a36dec337f0a931b.jpg

# 访问验证

# 验证应用部署状态

查看k8s创建的资源信息,发现已经成功创建了对应的资源

[root@k8s-master test-git]# kubectl get pod 
NAME                                               READY   STATUS    RESTARTS         AGE
myapp-68c8648d6d-54brv                             1/1     Running   0                62s
[root@k8s-master test-git]# kubectl get svc
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)    AGE
myapp        ClusterIP      10.97.189.71    <none>           80/TCP     70s
[root@k8s-master test-git]# kubectl get ingressroute
NAME     AGE
myapp    78s
1
2
3
4
5
6
7
8
9

访问web页面验证

4df641bf42ca7527.jpg

# 版本更新

接下来模拟配置变更,将镜像版本从v1改为v2

cf18eba0acb5a576.jpg

查看argocd信息,发现已经自动同步了yaml文件,并且正在进行发布

2548c800bee72a15.jpg

访问web页面状态,发现已经完成了发布工作。

08504735e1d74486.jpg

此时整个应用关联关系如下

6fe956b320167775.jpg

# 版本回退

点击history and rollback即可看到整个应用的所有发布记录,并且可以选择指定版本进行回退操作。

a28064654ad1ddaa.jpg

再次访问发现已经回退到v1版本

84b07ff0130b4bfc.jpg


原文链接 (opens new window)

微信 支付宝
上次更新: 2026/05/18, 11:45:08

← argocd部署 ArgoCD仓库管理→

最近更新
01
kubernetes证书续签到100年
05-04
02
istio入门
04-29
03
ES故障排查命令
04-29
更多文章>
Theme by Vdoing | Copyright © 2019-2026 | 点击查看十年之约 | 鄂ICP备2024072800号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式