1. 什么是zadig

Zadig 是 KodeRover 公司基于 Kubernetes 自主设计、研发的开源分布式持续交付 (Continuous Delivery) 产品,具备灵活易用的高并发工作流、面向开发者的云原生环境、高效协同的测试管理、强大免运维的模板库、客观精确的效能洞察以及云原生 IDE 插件等重要特性,为工程师提供统一的协作平面。Zadig 内置了 K8s YAML、Helm Chart、主机等复杂场景最佳实践,适用大规模微服务、高频高质量交付等场景

总结就是

  • 开源的分布工持续交付产品
  • 面向开发、免运维,协作平台
  • 适合微服务交付场景

业务架构

2. 安装

前提:1.16.0 及以上版本的 Kubernetes 集群

2.1 安装模式

第一种模式:All in One 一键安装,适合测试使用,不建议生产环境使用,适用于只有主机没有K8S环境的情况下,All in One会自动安装一个k8s集群,并在此基础上安装zadig

第二种模式:基于现有 Kubernetes 安装

可以使用脚本安装,也可以使用helm安装,安装时可选择服务对外提供的方式,如ip+port的方式,也可通过ingress映射域名对外提供服务,同时,mysql、mongodb和minio也可选择集群安装(可选pvc持久化)也可以选择外部安装的环境

基于定制化安装考虑,这里使用helm安装

2.2 helm安装

Zadig 支持两种访问方式,一种是提供访问域名(ingress),另一种是直接使用 IP + PORT(nodeport) 的方式访问

这里安装,使用域名访问zadig,外部mysql、mongodb(已提前安装或使用云上数据库RDS等),minio这里也不安装,minio需要存储类提供持久化数据,用于存放工作流构建记录、缓存等,这里可以使用外部标准S3协议的产品,如公有云的对象存储(阿里OSS、腾讯cos等)

安装步骤如下

  • 安装mysql(可提前创建库dex和user,utf8)、mongodb略,创建阿里云oss bucket略
  • 添加 Zadig 官方 Chart 仓库
helm repo add koderover-chart https://koderover.tencentcloudcr.com/chartrepo/chart
  •  创建 namespace
kubectl create ns zadig
# 配置环境变量
export NAMESPACE=zadig
export DOMAIN=sre-zadig.test.cn  #这里使用域名的方式访问

# 安装
# 参数说明
--set tags.minio=false # 不安装minio
--set tags.ingressControlle=false # 不安装ingresscontrolle
--set tags.mongodb=false # 不安装mongodb,使用外置mongodb 
--set connections.mongodb.connectionString=mongodb://*** #mongodb url,修改成实际地址
--set tags.mysql=false # 不安装mysql,使用外置mysql,数据库配置修改成实际地址

# 安装命令如下

helm upgrade --install zadig koderover-chart/zadig --namespace ${NAMESPACE} --version=1.14.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" \
    --set tags.minio=false \
    --set tags.ingressControlle=false \
    --set ingress-nginx.controller.ingressClass=nginx \
    --set tags.mongodb=false \
    --set connections.mongodb.connectionString=mongodb://*** \
    --set connections.mongodb.db=zadig \
    --set tags.mysql=false \
    --set connections.mysql.host=***:3306 \
    --set connections.mysql.auth.user=zadig \
    --set connections.mysql.auth.password=***\
    --set dex.config.storage.config.host=*** \
    --set dex.config.storage.config.port=3306 \
    --set dex.config.storage.config.user=zadig \
    --set dex.config.storage.config.password=***
  •  配置ingress规则
# 默认会创建gateway-proxy svc, type为loadblance,自动绑定公有云lb
# 因此删除默认的gateway-proxy svc,创建type为clusterip的gateway-proxy svc,用于创建Ingress规则时映射使用
# yaml文件如下

apiVersion: v1
kind: Service
metadata:
  annotations:
    meta.helm.sh/release-name: zadig
    meta.helm.sh/release-namespace: zadig
  labels:
    app: gloo
    app.kubernetes.io/managed-by: Helm
    gateway-proxy-id: gateway-proxy
    gloo: gateway-proxy
    service.beta.kubernetes.io/hash: c0567e34286f2d7bb928e9f891905813c7bf515e3c443eee1c4b7356
  name: gateway-proxy
  namespace: zadig
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080
  - name: https
    port: 443
    protocol: TCP
    targetPort: 8443
  selector:
    gateway-proxy: live
    gateway-proxy-id: gateway-proxy
  sessionAffinity: None
  type: ClusterIP

# 手动创建ingress,将zadig通过域名的方式访问,创建过程略

安装完后即可访问zadig了


  • 配置对象存储(上面没有安装minio)

登入系统后-系统设置-基础设施-对象存储-新建

保存后即可

以上是helm安装的一个过程了,欢迎大家一起交流学习

 附:基于 Helm 命令安装 | Zadig 文档 (koderover.com)

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐