本文主要介绍如何使用 Helm 来安装 Zadig 系统。建议使用官网 Helm 安装命令生成工具基于 Helm 命令安装 - 图1 (opens new window)进行安装。

温馨提示

使用 Helm 命令在现有 Kubernetes 集群上安装 Zadig。适合对 Helm 有一定了解的用户。

前置条件

  1. 安装 Helm v3.5+,这是一个简单的命令行工具,可以从此处基于 Helm 命令安装 - 图2 (opens new window)获取。
  2. Kubernetes 集群版本:v1.16~v1.21。

步骤 1:创建 Namespace

添加 Zadig 官方 Chart 仓库。

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

创建 namespace。

  1. kubectl create ns zadig

步骤 2:安装 Zadig

Zadig 支持两种访问方式,一种是提供访问域名,另一种是直接使用 IP + PORT 的方式访问。不同的访问方式需要设置不同的变量,可用参数请参考可选参数列表

域名访问

请确保您有已备案的域名。

  1. export NAMESPACE=<Zadig 安装的 NAMESPACE>
  2. export DOMAIN=<DOMAIN>
  3. helm upgrade --install zadig koderover-chart/zadig --namespace ${NAMESPACE} --version=1.10.0 --set endpoint.FQDN=${DOMAIN} \
  4. --set global.extensions.extAuth.extauthzServerRef.namespace=${NAMESPACE} \
  5. --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"

IP + PORT 访问

IP 为 Kubernetes 任一节点的外网可访问 IP。

  1. export NAMESPACE=<Zadig 安装的 NAMESPACE>
  2. export IP=<IP>
  3. export PORT=<PORT>
  4. helm upgrade --install zadig koderover-chart/zadig --namespace ${NAMESPACE} --version=1.10.0 --set endpoint.type=IP \
  5. --set endpoint.IP=${IP} \
  6. --set gloo.gatewayProxies.gatewayProxy.service.httpNodePort=${PORT} \
  7. --set global.extensions.extAuth.extauthzServerRef.namespace=${NAMESPACE} \
  8. --set gloo.gatewayProxies.gatewayProxy.service.type=NodePort \
  9. --set "dex.config.staticClients[0].redirectURIs[0]=http://${IP}:${PORT}/api/v1/callback,dex.config.staticClients[0].id=zadig,dex.config.staticClients[0].name=zadig,dex.config.staticClients[0].secret=ZXhhbXBsZS1hcHAtc2VjcmV0"

Zadig Chart 可选参数列表

Zadig Chart 除了 Zadig 系统外,还内置了一些必要的组件 Ingress Controller、MongoDB、Minio,可以根据您的安装环境实际情况选择是否安装这些组件

Gateway Proxy 可选参数

Key说明Value 示例默认值
gloo.gatewayProxies.gatewayProxy.service.typeGateway Proxy 服务的暴露方式,可选项为 LoadBalancer 或者 NodePortLoadBalancerLoadBalancer

Ingress Controller 可选参数

  • 安装内置 Ingress Controller
Key说明Value 示例默认值
tags.ingressController是否安装内置 ingress controllertruetrue
ingress-nginx.controller.service.typeIngress nginx controller 服务的暴露方式,可选项为 LoadBalancer 或者 NodePortLoadBalancerNodePort
  • 不安装内置 Ingress Controller

如果您有自己的 Ingress Controller,可以选择不安装,具体配置参数如下。

Key说明Value 示例默认值
tags.ingressController是否安装内置 ingress controllerfalsetrue
ingress-nginx.controller.ingressClassingress controller classingress classzadig-nginx

MongoDB 可选参数

  • 安装内置 MongoDB
Key说明Value 示例默认值
tags.mongodb是否安装内置的 MongoDBtruetrue
mongodb.persistence.enabledMongoDB 持久化开关truetrue
mongodb.persistence.sizeMongoDB 的存储空间大小20 Gi20 Gi
mongodb.persistence.storageClassMongoDB 的 PVC 使用的 Storage Class,如果开启持久化的情况下,不提供 Storage Class 和 existingClaim,将使用集群默认的 Storage class。 在此情况下,如果集群没有默认的 Storage Class, 安装将会失败。alicloud-disk-efficiencynil
mongodb.persistence.existingClaim如果安装的 MongoDB 需要使用已经存在的 PVC,使用这个字段指定 Claim Namemyclaimnil
  • 不安装内置的 MongoDB

如果您有自己的 MongoDB,可以选择不安装 MongoDB,具体配置参数如下。

Key说明Value 示例默认值
tags.mongodb是否安装内置的 MongoDBfalsetrue
connections.mongodb.connectionStringZadig 系统业务数据库连接串,配置多个地址时需要进行转义mongodb://user:password@8.10.20.20\,8.10.20.30mongodb://zadig-mongodb:27017
connections.mongodb.dbZadig 系统使用的默认 DBzadigzadig

Minio 可选参数

  • 安装内置 Minio
Key说明Value 示例默认值
minio.persistence.enabledMinIO 对象存储持久化开关truetrue
minio.persistence.sizeMinIO 的存储空间大小20 Gi20 Gi
minio.persistence.storageClassMinIO 的 PVC 使用的 Storage Class,如果开启持久化的情况下,不提供 Storage Class 和 existingClaim,将使用集群默认的 Storage class。 在此情况下,如果集群没有默认的 Storage Class, 安装将会失败。storage_classnil
minio.persistence.existingClaim如果安装的 MinIO 需要使用已经存在的 PVC,使用这个字段指定 Claim Namemy_pvcnil
  • 不安装内置 Minio

如果您有自己的 S3 对象存储,可以选择不安装 Minio,具体配置参数如下。
后续可在访问系统 系统设置 -> 对象存储 配置,配置过程详见对象存储

Key说明Value 示例
tags.minio是否安装内置的 MinIO 对象存储false

MySQL 可选参数

  • 安装内置 MySQL
Key说明Value 示例默认值
tags.mysql是否安装内置 MySQLtruetrue
connections.mysql.hostMySQL 连接地址zadig-mysql:3306zadig-mysql:3306
connections.mysql.auth.userMySQL 用户名rootroot
connections.mysql.auth.passwordMySQL 密码zadigzadig
dex.config.storage.config.hostDex MySQL Hostzadig-mysqlzadig-mysql
dex.config.storage.config.portDex MySQL 端口33063306
dex.config.storage.config.userDex MySQL 用户名rootroot
dex.config.storage.config.passwordDex MySQL 密码zadigzadig
  • 不安装内置 MySQL

如果您有自己的 MySQL,可以选择不安装内置的 MySQL,版本要求 5.7+。 安装前需要手动在该 MySQL 实例中创建名为 dex 的 database。 具体配置如下。

Key说明Value 示例默认值
tags.mysql是否安装内置 MySQLfalsefalse
connections.mysql.hostMySQL 连接地址10.0.0.1:3306zadig-mysql:3306
connections.mysql.auth.userMySQL 用户名rootroot
connections.mysql.auth.passwordMySQL 密码zadigzadig
dex.config.storage.config.hostDex MySQL Host10.0.0.1zadig-mysql
dex.config.storage.config.portDex MySQL 端口33063306
dex.config.storage.config.userDex MySQL 用户名rootroot
dex.config.storage.config.passwordDex MySQL 密码zadigzadig

其他参数

Key说明Value 示例默认值
kubernetes.serverZadig 安装集群的 Kubernetes API Server 地址https://10.0.0.1:6443nil
init.adminPassword初始化系统管理员密码zadigzadig
init.adminEmail初始化系统邮箱admin@example.comadmin@example.com

Helm Charts 卸载

注意:只有当您完全知晓每项操作所带来的结果,再去执行该操作。

  1. helm list -n zadig # 获得 Zadig 的 release name
  2. helm uninstall <release name> -n zadig