使用Zadig从0到1搭建持续交付平台(上)

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 使用Zadig从0到1搭建持续交付平台

什么是Zadig


相信有不少朋友已经听过Zadig,但是有更多的朋友还没有听过,或者说听过但是没仔细去了解过,这里我还是简单介绍一下什么是Zadig。


Zadig是一个持续交付的平台,它集CI、CD、自动化测试于一身,致力于构建一个云原生开源的软件交付平台。


使用Zadig,可以轻松地实现本地联调、微服务并行构建、集成测试与持续部署,开发可以更专注于业务开发、运维也可以更专注于稳定性维护。


部署


说了那么多,下面就进入正题,开始Zadig的使用之旅。


安装


其实Zadig的安装参考官方文档的安装篇就行。但是为了保持文章的完整性,我这里简单介绍一下。


下面是我的环境说明:


Kubernetes:v1.18.8

Helm:v3.5.4

Linux:CentOS 7.9

PS:我这里是基于现有的Kubernetes,使用Helm进行安装部署。


安装MySQL


为什么要安装MySQL呢?


使用Zadig默认的安装方式,安装的MySQL是8.+版本,而且有时候死活起不来(踩过坑,没找到起不来的原因),所以我不论是在生产使用还是在测试环境测试都是自己安装的MySQL 5.7的版本,当然,你们需要根据自己的实际情况进行选择。


(1)添加MySQL的Helm repo


$ helm repo add stable https://charts.helm.sh/stable


(2)下载MySQL chart包到本地(我个人习惯,随君选择)


$ helm pull stable/mysql --version 1.6.9


(3)自定义value.yaml文件


mysqlUser: root@'%'
mysqlPassword: Joker@Zadig123
persistence:
  enabled: true
  storageClass: "rbd"
  accessMode: ReadWriteOnce
  size: 50Gi
configurationFiles:
  mysql.cnf: |-
    [mysql]
    default-character-set=utf8
    [mysql.server]
    default-character-set=utf8
    [mysqld_safe]
    default-character-set=utf8
    [client]
    default-character-set=utf8
    [mysqld]
    character_set_server=utf8
    init_connect='SET NAMES utf8'
    max_connections=3000
    slow_query_log=ON
    slow_query_log_file=/tmp/mysql-slow.log
    long_query_time=1
    sql_mode=NO_UNSIGNED_SUBTRACTION,NO_ENGINE_SUBSTITUTION
    lower_case_table_names=1


(4)安装MySQL


$ kubectl create ns zadig
$ helm install mysql -n zadig -f my-vaule.yaml .


(5)安装完成过后查看MySQL安装情况


$ kubectl get all -n zadig | grep mysql
pod/mysql-6b64454fd9-nhlqd            2/2     Running   1          57d
service/mysql             LoadBalancer   10.233.7.155    192.168.100.81   3306:32703/TCP,9104:32514/TCP         57d
deployment.apps/mysql             1/1     1            1           57d
replicaset.apps/mysql-6b64454fd9             1         1         1       57d


安装Zadig


上面已经安装好了MySQL,下面就开始安装Zadig(其他的组件就用Zadig自带的,目前使用起来没发现任何问题)。


(1)添加Zadig Helm Chart


$ helm repo add koderover-chart https://koderover.tencentcloudcr.com/chartrepo/chart


(2)下载Zadig Chart包 我这里先下载v1.11.0版本,因为后续还准备了一个升级的过程。


$ helm pull koderover-chart/zadig --version 1.11.0


(3)自定义value.yaml文件,主要是修改mysql的配置


tags:
  mysql: false
connections:
  mysql:
    host: mysql:3306
    auth:
      user: root
      password: Joker@Zadig123
dex:
  config:
    storage:
      type: mysql
      config:
        host: mysql
        port: 3306
        database: dex
        user: root
        password: Joker@Zadig123
        ssl:
          mode: "false"


(4)安装Zadig 官方指出可以使用域名或者IP访问,我这里采用的是域名。


$ export NAMESPACE=zadig
$ export DOMAIN=zadig.jokerbai.com
$ helm upgrade --install zadig . -f my-value.yaml --namespace ${NAMESPACE} --version=1.10.0 --set endpoint.FQDN=${DOMAIN}     --set global.extensions.extAuth.extauthzServerRef.namespace=${NAMESPACE}     --set "dex.config.staticClients[0].redirectURIs[0]=http://${DOMAIN}/api/v1/callback,dex.config.staticClients[0].id=zadig,dex.config.staticClients[0].name=zadig,dex.config.staticClients[0].secret=ZXhhbXBsZS1hcHAtc2VjcmV0"


(5)查看安装情况


$ kubectl get pod -n zadig 
NAME                              READY   STATUS    RESTARTS   AGE
aslan-5d6b86ccdf-st7w9            2/2     Running   0          10d
config-7d6654fb8-xcfmk            1/1     Running   0          10d
cron-67f77f54bc-fvrgp             2/2     Running   0          10d
dind-0                            1/1     Running   0          49d
discovery-68d76c5bf4-nrl5r        1/1     Running   0          57d
gateway-645958c96c-gnltp          1/1     Running   0          57d
gateway-proxy-5d6bcc677f-njvdk    1/1     Running   0          57d
gloo-7955b997b-br9m2              1/1     Running   0          57d
hub-server-7b5cc9bdb6-t6zkw       1/1     Running   0          10d
mysql-6b64454fd9-nhlqd            2/2     Running   1          57d
nsqlookup-0                       1/1     Running   0          57d
nsqlookup-1                       1/1     Running   0          57d
nsqlookup-2                       1/1     Running   0          57d
opa-69d5c669f6-s784f              1/1     Running   0          57d
picket-55685b94d9-czm7b           1/1     Running   0          10d
podexec-868c677548-mks74          1/1     Running   0          10d
policy-5c5bd995c8-pfxnp           1/1     Running   0          10d
resource-server-c87c4cddd-ptq45   1/1     Running   0          10d
user-77b5585554-n2cm4             1/1     Running   0          10d
warpdrive-55c46595d5-hvkc2        2/2     Running   0          10d
warpdrive-55c46595d5-mn9d8        2/2     Running   0          10d
zadig-dex-d9df5944f-vgdkc         1/1     Running   0          10d
zadig-minio-5c576d44c8-rnkmp      1/1     Running   0          57d
zadig-mongodb-6dfb6f676f-9v5rq    1/1     Running   0          57d
zadig-portal-69d8f946b8-wqrpz     1/1     Running   0          10d


然后可以根据域名http://zadig.jokerbai.com进行访问。


640.png


使用账号密码 admin:zadig 进行登录。


升级


Zadig是非常活跃的项目,社区迭代是非常快的,而且功能会越来越多,体验越来越好,所以升级Zadig算是一个日常需求了。


PS:虽然Zadig每个版本的兼容性做的不错,但是在升级的时候不建议跨版本升级。


(1)下载新版本的zadig


$ helm pull koderover-chart/zadig --version 1.12.0


(2)自定义value.yaml 获取集群zadig配置信息


helm get values zadig -n zadig  > zadig.yaml


修改zadig.yaml,添加自定义mysql配置


USER-SUPPLIED VALUES:
tags:
  mysql: false
connections:
  mysql:
    host: mysql:3306
    auth:
      user: root
      password: Joker@Zadig123
dex:
  config:
    storage:
      type: mysql
      config:
        host: mysql
        port: 3306
        database: dex
        user: root
        password: Joker@Zadig123
        ssl:
          mode: "false"
    staticClients:
    - id: zadig
      name: zadig
      redirectURIs:
      - http://zadig.jokerbai.com/api/v1/callback
      secret: ZXhhbXBsZS1hcHAtc2VjcmV0
endpoint:
  FQDN: zadig.ustax.tech
global:
  extensions:
    extAuth:
      extauthzServerRef:
        namespace: zadig


(3)备份数据库


具体信息根据实际情况填写


1、备份mongo数据库


$ mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径


2、备份mysql数据库


$ mysqldump -h <HOST> -P <PORT> -u root -p user > user.sql
$ mysqldump -h <HOST> -P <PORT> -u root -p dex > dex.sql


(4)升级zadig


$ helm upgrade zadig -n zadig -f zadig.yaml .


升级后,查看Pod是否正常启动,然后使用浏览器登录看是否正常。


系统集成


集成的功能很丰富,可以集成代码源、账号系统、Jenkins、Jira等,但是并不是所有的都有用,选择自己需要的集成就行。


640.png


我这里也不会把全部的集成都写一遍,那样没有意义,不如直接看官方文档。我只写我用到的系统:代码源和账号系统。


集成代码源


代码源的选择非常多,可以使用现成的saas平台,比如gitlab、gitee、github等,这些zadig都支持集成。由于我们公司是使用的自建的gitlab,所以这里只介绍gitlab的集成方法。


(1)创建OAuth。我这里创建的是组织类型的OAuth,也就是可以有全局的权限。


640.png


按图配置,如下:


640.png



创建完成之后,记住Application IDSecret


(2)在zadig上配置Gitlab集成


640.png


填入如下信息:


  • 代码源:此处选择 GitLab
  • 代码源标识:自定义,方便在 Zadig 系统中快速识别出该代码源,该信息在整个系统内唯一
  • GitLab 服务 URL:GitLab 地址
  • Application ID:步骤 3 应用创建成功后返回的 Application ID
  • Secret:步骤 3 应用创建成功后返回的 Secret


待确认无误后,点击前往授权,会跳到Gitlab进行授权,点击Authorize即可。


640.png


到此,Gitlab集成完成。


640.png


集成账户系统


Zadig本身自带账户系统,但是在企业内部一般也会有自己的账户系统,比如LDAP,为了统一管理,这时候就需要集成这些账户系统。


我这里不是集成的LDAP,而是集成的Gitlab,所以这里只介绍Gitlab的集成方法。


(1)创建Gitlab OAuth


640.png


填入如下信息:



(2)在Zadig账户系统进行集成


640.png


Gitlab需要通过自定义的方式进行集成,相关配置需要通过YAML的方式进行自定义,如下:


baseURL: http://gitlab.jokerbai.com    <Gitlab地址>
clientID: xxxxx    <Gitlan OAuth的Applicaton ID>
clientSecret: xxxxx  <Gitlab OAtuth的secret>
groups:
  - xxxx    <Gitlab组>
redirectURI: http://zadig.jokerbai.com/dex/callback  <Zadig回调地址>
useLoginAsID: false


自定义账户系统使用Dex实现,所以Gitlab等自定义账户系统的集成,可以参考Dex的文档(https://dexidp.io/docs/connectors/gitlab/


信息填写完成过后,点击保存。


(3)登录验证 退出当前账户,使用Gitlab账户进行登录。


选择第三方登录,如下:


640.png


然后会跳到Gitlab登录界面,填写用户名密码,如果在当前浏览器已经登录了Gitlab,则会直接跳转到授权界面,如下:


640.png


点击Authorize过后,会回跳到Zadig用户界面。不过当前用户只是登录到Zadig,并没有任何权限,需要管理授权才能进行其他操作。


到此集成系统已经完成。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
存储 监控 数据可视化
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
3675 0
|
移动开发 应用服务中间件 Linux
Apache Guacamole教程之安装部署
Apache Guacamole教程之安装部署
8923 0
Apache Guacamole教程之安装部署
|
存储 安全 开发工具
App隐私合规评估实务和要点
随着移动互联网的高速发展及监管部门针对移动互联网应用程序(以下简称“App”)隐私合规监管趋严,特别是在个人信息保护法的实施下。本文将深入探讨App隐私合规评估的要点和难点,提供详细的信息,并提供一套轻量级和自动化的App隐私合规治理方案,降低App业务被通报和下架等合规风险,以保障企业App业务正常运营。
1580 0
|
Kubernetes 监控 Java
发布策略:蓝绿部署、金丝雀发布(灰度发布)、AB测试、滚动发布、红黑部署的概念与区别
发布策略:蓝绿部署、金丝雀发布(灰度发布)、AB测试、滚动发布、红黑部署的概念与区别
3637 1
|
存储 Kubernetes 应用服务中间件
Ingress-Nginx使用指南上篇
关于Ingress-Nginx在Kubernetes中的使用指南,涵盖了从基础安装到高级特性配置的详细步骤和实战案例。
5574 3
Ingress-Nginx使用指南上篇
|
存储 运维 Kubernetes
k8s学习笔记之StorageClass+NFS
k8s学习笔记之StorageClass+NFS
|
存储 Kubernetes API
k8s学习-ConfigMap(创建、使用、更新、删除等)
k8s学习-ConfigMap(创建、使用、更新、删除等)
3953 0
|
SQL 关系型数据库 Go
Golang ORM框架介绍及比较
Golang ORM框架介绍及比较
|
监控 前端开发 关系型数据库
|
JavaScript jenkins 应用服务中间件
Jenkins + Github + Nginx 自动化部署 Vue 项目
Jenkins + Github + Nginx 自动化部署 Vue 项目
1199 0

热门文章

最新文章