Zadig 面试题
50 道题- 分类
- DevOps
- 题目数
- 50 道
1 Zadig 是什么
答案:
Zadig 是基于 Kubernetes 的云原生 CI/CD 平台,提供持续交付、自动化测试和运维管理能力。
[分层展开]
- 定位:面向 DevOps 和 SRE 团队的 K8s-native 交付平台
- 核心能力:工作流引擎、多环境管理、服务编排、代码扫描、质量门禁
- 部署模式:K8s YAML、Helm Chart、Kustomize
- 集成生态:GitHub、GitLab、Jenkins、SonarQube、ArgoCD
2 Zadig 核心架构组件
答案:
Zadig 架构由五大核心组件组成:Portal、Workflow Engine、Environment Manager、Template Hub、Integration Layer。
| 组件 | 职责 |
|---|---|
| Portal | 用户界面,提供项目管理、工作流配置、环境视图 |
| Workflow Engine | 驱动构建、测试、部署、发布全流程 |
| Environment Manager | 管理 K8s 命名空间级别多环境 |
| Template Hub | 维护服务模板、构建模板、工作流模板 |
| Integration Layer | 对接 SCM、镜像仓库、审批系统、监控系统 |
3 工作流引擎设计原理
答案:
工作流引擎采用 DAG(有向无环图)模型编排任务,每个 Workflow 由多个 Stage 组成,Stage 间支持串行和并行执行。
- Stage 类型:构建、测试、代码扫描、部署、发布审批、自定义任务
- 执行策略:支持人工审批、自动触发、定时触发、Webhook 触发
- 状态管理:每个 Stage 独立记录状态和日志,支持重试和跳过
- 上下文传递:Stage 间通过 Env Vars 和 Artifacts 传递构建产物
4 工作流类型及适用场景
答案:
Zadig 提供四种工作流类型:
| 工作流类型 | 用途 | 触发方式 |
|---|---|---|
| 构建工作流 | 编译、打包、镜像构建 | Git Push、PR、手动 |
| 测试工作流 | 单元测试、集成测试、E2E 测试 | PR、定时、手动 |
| 部署工作流 | 服务部署到指定环境 | 工作流输出自动触发 |
| 发布工作流 | 多环境灰度发布+审批 | 人工确认+自动部署 |
5 多环境管理机制
答案:
Zadig 通过 K8s Namespace 隔离实现多环境管理,每个环境对应一个独立的 Namespace。
- 环境类型:开发环境、测试环境、预发布环境、生产环境
- 环境配置:每个环境独立维护 ConfigMap、Secret、Ingress 配置
- 环境克隆:基于已有环境快速克隆出全新环境
- 环境基线:指定基准环境,用于比对配置差异
- 环境状态:实时展示各服务版本、健康状态、Pod 列表
6 环境克隆实现原理
答案:
环境克隆基于 K8s 资源 Deep Copy 机制实现,支持跨集群复制。
- 克隆范围:Deployment、Service、ConfigMap、Secret、Ingress、PVC
- 变量替换:自动替换 Namespace 名称、Label 标签、镜像版本
- 依赖处理:自动识别 Service 间依赖关系,按拓扑顺序创建
- 注意事项:不克隆 PersistentVolume 实际数据,仅复制 PVC 声明
7 服务编排和服务发现
答案:
Zadig 支持服务编排和服务发现能力,通过 Service Graph 展示服务间调用关系。
- 服务注册:部署时自动将服务注册到注册中心
- 服务依赖:在 Service Spec 中声明依赖服务,编排时按依赖顺序部署
- 服务发现:集成 K8s Service 和 Ingress,通过 DNS 实现服务发现
- 流量管理:支持 Service Mesh 集成,实现灰度流量控制
8 三种部署方式对比
答案:
| 对比维度 | K8s YAML | Helm Chart | Kustomize |
|---|---|---|---|
| 配置管理 | 原生 YAML 文件 | 模板化配置 | 基准+覆盖 |
| 环境差异 | 每个环境独立文件 | Values 文件区分 | Overlay 目录区分 |
| 复杂度 | 低 | 中 | 中 |
| 灵活性 | 低 | 中 | 高 |
| 社区生态 | 内置支持 | 广泛 | 原生 K8s |
| 模板复用 | 无 | 有 | 有 |
9 Zadig 服务配置定义规范
答案:
Zadig 服务配置使用 Service.yaml 定义,包含元数据、构建配置和部署配置。
apiVersion: zadig.io/v1beta1
kind: Service
metadata:
name: order-service
project: ecommerce
spec:
type: helm
container:
name: order
port: 8080
build:
dockerfile: ./Dockerfile
context: .
args:
- GOPROXY=https://goproxy.cn,direct
helmValues:
- key: replicaCount
value: "3"
- key: image.tag
value: "${BUILD_NUMBER}"
deploy:
strategy: rolling
healthCheck:
path: /healthz
port: 8080
10 代码扫描和安全检测
答案:
Zadig 集成主流代码扫描工具,在工作流中配置扫描 Stage 实现质量门禁。
- 支持的扫描工具:SonarQube、Trivy、Aqua Security、Checkmarx
- 扫描类型:代码质量扫描、依赖漏洞扫描、容器镜像扫描、IaC 扫描
- 扫描配置:在 Workflow Stage 中选择扫描工具和扫描规则
- 结果呈现:扫描结果展示在 Workflow 执行页面,支持阻断和非阻断模式
- 门禁策略:设置 Quality Gate 阈值,未达标自动阻止后续 Stage
11 质量门禁配置
答案:
质量门禁通过 Quality Gate 组件实现,在 Workflow 中作为 Gardener Stage 部署。
qualityGate:
enabled: true
rules:
- metric: coverage
operator: ">="
value: 80
- metric: bug
operator: "<="
value: 0
- metric: vulnerability
operator: "<="
value: 5
- metric: codeSmell
operator: "<="
value: 100
action: block
| 门禁策略 | 说明 |
|---|---|
| block | 阻断后续流程 |
| warn | 仅告警不阻断 |
| report | 仅记录不告警 |
12 自动化测试集成方案
答案:
Zadig 支持在工作流中集成多阶段自动化测试,覆盖单元测试到 E2E 测试全链路。
- 单元测试:构建阶段执行,结果统一采集
- 接口测试:部署后执行,支持 Postman/JMeter
- E2E 测试:环境就绪后执行,支持 Cypress/Selenium/Playwright
- 性能测试:支持 JMeter/Locust,采集 P99/P95/TPS 指标
- 测试报告:集成 Allure Report / JUnit XML 格式展示
- 失败策略:测试失败后可选阻断或跳过后续 Stage
13 灰度发布和金丝雀部署
答案:
Zadig 通过 Workflow + Service Mesh 实现灰度发布流程,支持金丝雀和蓝绿部署模式。
- 金丝雀发布:先部署一个 Pod 接收小比例流量,验证后逐步放量
- 流量控制:设置流量权重百分比,逐步从旧版本切换到新版本
- 自动回滚:监控指标异常时自动回滚
- 发布流程:部署金丝雀 -> 验证 -> 灰度确认 -> 全量发布 -> 清理旧版本
- 实现方式:集成 Istio/Envoy 实现流量路由,支持 Ingress 级别
14 金丝雀发布流程配置
答案:
canary:
enabled: true
steps:
- weight: 10
duration: 5m
analysis:
metrics:
- name: error_rate
threshold: 1
- name: latency_p99
threshold: 500
- weight: 30
duration: 10m
- weight: 60
duration: 10m
promotion: manual
rollback:
triggers: [error_rate_exceeded, latency_exceeded]
| 配置项 | 说明 |
|---|---|
| weight | 流量百分比权重 |
| duration | 每阶段观察时长 |
| analysis | 指标分析和门禁规则 |
| promotion | 人工确认/自动升级 |
| rollback | 自动/手动回滚触发条件 |
15 资源管理和配额控制
答案:
Zadig 通过 K8s ResourceQuota 和 LimitRange 实现环境级资源管理。
- 环境配额:每个环境可配置 CPU/内存请求和限制上限
- 服务配额:单个服务可配置资源 Request 和 Limit
- 超配策略:支持配置超卖比例,提高资源利用率
- 配额审计:定期扫描环境资源使用情况,告警超配
- 资源报告:按项目和环境统计资源消耗
16 多集群部署架构
答案:
Zadig 支持通过 Cluster Manager 管理多个 K8s 集群,实现跨集群部署。
- 集群注册:通过 Kubeconfig 或 Agent 方式注册集群
- 集群分组:按环境类型分组,例如 dev/staging/prod 各使用不同集群
- 跨集群部署:Workflow 中指定目标集群进行部署
- 集群状态:实时展示集群节点数、资源使用率、版本信息
- 故障切换:集群故障时自动切换流量到健康集群
17 权限管理体系
答案:
Zadig 权限模型采用 RBAC,划分系统级、项目级和环境级三个层级。
| 角色层级 | 权限范围 | 适用对象 |
|---|---|---|
| 系统管理员 | 全局配置、集群管理、用户管理 | 平台运维 |
| 项目管理员 | 项目配置、服务管理、工作流配置 | 项目负责人 |
| 项目开发者 | 触发工作流、查看环境、查看日志 | 研发人员 |
| 环境只读者 | 仅查看环境状态和运行记录 | QA/管理者 |
| 自定义角色 | 按需组合权限 | 特定场景 |
18 环境级别权限控制
答案:
环境权限支持独立配置,控制不同用户对不同环境的操作权限。
- 环境角色:环境管理员、环境操作者、环境只读者
- 操作控制:部署、回滚、配置修改、查看日志
- 生产环境保护:生产环境默认限制直接部署,需通过发布工作流+审批
- 审批流程:生产环境部署需要指定审批人审批通过后执行
environmentPermissions:
- environment: production
roles:
- name: deployer
members: [team-lead, sre-oncall]
actions: [view, deploy-approve]
- name: viewer
members: [developer-*]
actions: [view]
19 Webhook 和触发器机制
答案:
Zadig 支持多种触发器类型,实现自动化工作流触发。
- SCM Webhook:Git Push、Pull Request、Tag 创建时触发
- 定时触发器:Cron 表达式定时执行
- 环境触发器:环境部署完成后触发下游工作流
- 镜像触发器:镜像仓库更新时触发
- 自定义 Webhook:外部系统通过 API 触发
| 触发器类型 | 触发条件 | 应用场景 |
|---|---|---|
| SCM Webhook | Commit/PR 事件 | 自动构建和测试 |
| Cron | 时间表达式 | 定时回归测试 |
| 镜像更新 | 新镜像推送 | 自动部署更新 |
| 环境事件 | 部署完成 | 链式工作流 |
20 缓存加速策略
答案:
Zadig 提供多层级缓存加速机制,显著缩短构建时间。
- 构建缓存:Docker Layer 缓存、Go Mod 缓存、Maven/NPM 缓存
- 缓存持久化:支持 PV 存储和 MinIO/S3 对象存储
- 缓存策略:基于 Branch/Tag 的缓存隔离,不同分支使用不同缓存
- 共享缓存:跨工作流共享缓存目录
- 缓存清理:设置缓存过期策略,定期清理失效缓存
buildCache:
enabled: true
storage: minio
buckets:
- name: go-mod
path: /go/pkg/mod
policy: branch-isolated
- name: docker-layer
path: /var/lib/docker
policy: shared
ttl: 7d
21 模板市场机制
答案:
Zadig 模板市场提供标准化服务模板、构建模板和工作流模板,实现配置复用。
- 服务模板:预定义 Service YAML 模板,包括 Deployment、Service、Ingress
- 构建模板:预定义构建脚本和 Dockerfile 模板
- 工作流模板:预定义工作流编排模板
- 模板变量:支持 ${VAR} 变量替换,适配不同项目
- 模板版本:支持模板版本管理,升级后项目可选同步
22 日志和审计机制
答案:
Zadig 提供操作日志和审计记录,满足合规和追溯需求。
- 操作审计:记录用户登录、项目操作、工作流触发、环境配置修改
- 工作流日志:每个 Stage 执行日志持久化存储
- 部署记录:每次部署的版本号、镜像 Tag、配置快照
- 审计查询:按时间范围、操作类型、操作用户筛选
- 日志保留:按策略自动清理历史日志,支持外部存储归档
23 镜像构建和版本管理
答案:
Zadig 的构建系统集成 Docker 和 BuildKit,支持自动镜像构建和推送。
- 构建工具:Docker、BuildKit、Kaniko
- 镜像仓库:支持 Harbor、Docker Hub、ECR、ACR
- 版本策略:基于分支名+构建号生成镜像 Tag,支持 SemVer
- 镜像清理:按保留策略自动清理历史镜像
- 镜像扫描:构建完成后自动进行 Trivy 漏洞扫描
| Tag 策略 | 格式示例 | 适用场景 |
|---|---|---|
| Branch+Build | main-20240526-001 | 开发分支 |
| SemVer | v1.2.3 | 发布版本 |
| Commit SHA | abc1234 | 精确追溯 |
24 发布审批流程
答案:
发布审批是 Zadig 发布工作流的强制门禁环节,确保变更经过合规审查。
- 审批节点:在 Workflow Stage 中插入 Approval Stage
- 审批人:指定个人或角色组
- 审批方式:平台内审批或集成钉钉/企微/飞书通知审批
- 审批内容:展示变更对比、扫描报告、测试结果
- 超时策略:审批超时后自动拒绝或跳过
- 审批记录:所有审批操作持久化记录
25 回滚机制
答案:
Zadig 提供一键回滚和历史版本回退能力,保障服务可用性。
- 回滚触发:工作流失败时手动回滚、监控指标异常时自动回滚
- 回滚范围:单个服务回滚或全量回滚
- 回滚方式:K8s rollout undo 或指定历史版本重新部署
- 版本保留:保留最近 N 次部署版本的历史配置快照
- 回滚审计:每次回滚记录操作人、原因、版本对比
26 服务依赖和部署拓扑
答案:
Zadig 通过 Service Dependency Graph 管理服务部署顺序,确保依赖关系正确处理。
- 依赖声明:在服务配置中声明依赖关系
- 拓扑排序:部署时按依赖关系拓扑排序
- 并行部署:无依赖关系的服务并发部署
- 循环依赖检测:自动检测并阻断循环依赖配置
- 依赖环境传递:部署 A 服务的环境会自动关联 B 服务的连接信息
dependencies:
- name: mysql
type: service
namespace: database
- name: redis
type: service
- name: user-service
type: service
optional: true
27 Helm Chart 部署最佳实践
答案:
Zadig 中的 Helm Chart 部署需遵循以下规范:
- Chart 结构:values.yaml 按环境拆分至 values-dev.yaml / values-staging.yaml / values-prod.yaml
- 变量注入:构建号、镜像 Tag 通过 –set 参数注入
- 依赖管理:使用 Chart.lock 锁定依赖版本
- 命名规范:Release Name 使用 {project}-{service}-{env} 格式
- 版本管理:Chart.yaml 中 version 和 appVersion 保持同步
- 测试验证:部署前执行 helm template 验证模板渲染结果
28 多环境变量管理
答案:
Zadig 通过 ConfigMap 和 Secret 管理环境变量,支持环境差异配置。
- ConfigMap:非敏感配置,各环境独立管理
- Secret:敏感信息,支持 Base64 编码和外部密钥管理
- 变量引用:支持 ${ENV_VAR} 动态引用
- 环境覆盖:全局配置 -> 项目配置 -> 环境配置,逐层覆盖
- 配置校验:部署前校验 ConfigMap/Secret 变更,确保格式正确
29 外部系统集成方式
答案:
Zadig 通过 Webhook、API、Plugin 三种方式集成外部系统。
- SCM 集成:GitHub、GitLab、Bitbucket
- CI 集成:Jenkins Pipeline 触发和结果回传
- 消息通知:钉钉、企微、飞书、Slack
- 监控集成:Prometheus、Grafana 告警联动
- 审批集成:飞书审批、钉钉审批
- 制品管理:Harbor、Nexus、Artifactory
30 构建优化策略
答案:
Zadig 构建优化从镜像、缓存、并行度三个维度展开:
- 镜像优化
- 多阶段构建(Multi-stage Build)
- 选择轻量级基础镜像(Alpine / Distroless)
- 合并 RUN 指令减少 Layer 数量
- 缓存优化
- Docker Layer Cache:–cache-from 复用本地和远程缓存
- 依赖缓存:持久化 /go/pkg/mod、/root/.m2、node_modules
- 分层缓存:不变层和变层分离缓存
- 并行优化
- 无依赖服务并行构建
- Job 内部分阶段并行
- 分布式构建节点调度
31 自定义任务扩展
答案:
Zadig 支持通过 Plugin 机制扩展自定义任务,满足特殊场景需求。
- Plugin 类型:Shell 脚本、Python 脚本、HTTP 请求、K8s Job
- 参数传递:通过环境变量和文件传递输入参数
- 结果输出:通过 Artifacts 和返回值传递给下游 Stage
- 镜像选择:指定自定义任务执行容器镜像
- 超时控制:设置自定义任务执行超时时间
customTask:
name: data-migration
image: migrate-tool:latest
command:
- ./migrate.sh
env:
- DB_URL=${MIGRATE_DB_URL}
timeout: 300
retry: 2
32 服务健康检查机制
答案:
Zadig 通过 K8s Probe 机制监控服务健康状态,部署完成后自动验证。
- Readiness Probe:服务就绪检查,流量进入前确认
- Liveness Probe:服务存活检查,异常时自动重启
- Startup Probe:启动延时确认,慢启动服务专用
- 自定义检查:支持在工作流中配置 HTTP/GRPC 健康检查
- 失败处理:部署后 Probe 失败自动标记部署失败并触发回滚
33 数据库变更管理
答案:
Zadig 通过数据库迁移任务实现 CI/CD 流程中的数据库变更管理。
- 迁移工具:支持 Liquibase、Flyway、自定义脚本
- 迁移执行:作为 Workflow Stage 在部署前或部署后执行
- 迁移回滚:记录迁移版本号,支持回滚到指定版本
- 环境隔离:不同环境使用不同数据库连接
- 幂等性:每次迁移脚本保证幂等,多次执行结果一致
34 项目模板和脚手架
答案:
Zadig 项目模板提供标准化脚手架功能,新项目可基于模板快速创建。
- 模板内容:服务配置、工作流定义、环境配置、CI 脚本
- 模板变量:项目名称、服务名、Git 仓库地址自动注入
- 模板版本:支持模板版本管理
- 模板市场:企业级模板目录,统一项目交付标准
- 自定义模板:支持团队创建专属项目模板
35 多租户隔离架构
答案:
Zadig 通过 Project + Environment 两级隔离实现多租户架构。
| 隔离级别 | 资源维度 | 隔离方式 |
|---|---|---|
| 项目级 | 服务配置、工作流、成员 | 逻辑隔离 |
| 环境级 | K8s Namespace、网络 | 物理隔离(不同 Namespace) |
| 集群级 | 计算资源、存储 | 物理隔离(不同集群) |
| 数据级 | 构建记录、部署记录 | 按 Project 过滤 |
36 工作流变量和作用域
答案:
Zadig 工作流支持三级变量作用域:
| 变量层级 | 作用域 | 示例 |
|---|---|---|
| 系统变量 | 全局 | ${BUILD_NUMBER}, ${TIMESTAMP} |
| 项目变量 | 项目内 | ${PROJECT_NAME}, ${DOCKER_REGISTRY} |
| 工作流变量 | 单个工作流 | 自定义输入参数 |
- 变量传递:上游 Stage 可通过 env 输出传递给下游 Stage
- 变量覆盖:低层级变量覆盖高层级同名变量
- 变量引用:支持在 YAML 配置和服务配置中引用变量
37 制品管理策略
答案:
Zadig 对构建产物和部署制品采用统一管理策略。
- 制品类型:Docker 镜像、JAR/WAR 包、静态文件、Helm Chart 包
- 制品存储:对接 Harbor、Artifactory、Nexus、S3
- 制品标签:构建号 + Commit SHA + 分支名
- 制品清理:按保留数量和时间策略自动清理
- 制品追溯:通过 Build Record 追溯到源码 Commit 和构建参数
38 版本管理策略
答案:
Zadig 中的版本管理覆盖代码版本、镜像版本、部署版本三个维度。
- 代码版本:基于 Git Tag 或 Branch + Commit SHA
- 镜像版本:${BRANCH}-${BUILD_NUMBER}-${COMMIT_SHA:0:7}
- 部署版本:环境级别的版本号,每次部署递增
- 版本对比:支持两个版本间的配置差异对比
- 版本锁定:生产环境版本锁定,只通过发布工作流升级
39 Kustomize Overlay 环境管理
答案:
Zadig 利用 Kustomize Overlay 机制实现环境差异配置管理。
- Base 目录:存放通用资源配置
- Overlay 目录:每个环境独立存放差异配置
- Patch 策略:strategic merge patch 和 JSON patch
- 变量注入:通过 Kustomize edit set image 注入镜像 Tag
- 环境克隆:复制 Overlay 目录并替换环境特定变量
graph TD
A[project/] --> B[base/]
A --> C[overlays/]
B --> B1[kustomization.yaml]
B --> B2[deployment.yaml]
B --> B3[service.yaml]
C --> C1[dev/]
C --> C2[staging/]
C --> C3[prod/]
C1 --> C1a[kustomization.yaml]
C1 --> C1b[patch_replicas.yaml]
C2 --> C2a[kustomization.yaml]
C2 --> C2b[patch_resources.yaml]
C3 --> C3a[kustomization.yaml]
C3 --> C3b[patch_hpa.yaml]
40 监控指标和报警集成
答案:
Zadig 集成 Prometheus 指标采集和告警推送,实现工作流和服务的可观测性。
- 工作流指标:Pipeline 执行时长、成功率、等待队列长度
- 部署指标:部署频率、回滚频率、MTTR
- 服务指标:Pod 重启次数、CPU/内存使用率
- 告警推送:工作流失败、部署失败、审批超时自动推送至钉钉/企微
- 指标展示:Grafana Dashboard 展示项目和环境级别监控
41 构建 Agent 管理
答案:
Zadig 构建 Agent 负责执行构建任务,支持动态伸缩和多种运行模式。
- Agent 类型:Dind Agent(Docker in Docker)、Kaniko Agent、Host Agent
- 动态伸缩:根据构建队列长度自动扩缩 Agent 数量
- 资源隔离:每个构建任务独占 Agent 实例
- 超时回收:构建完成后自动回收 Agent 资源
- 缓存持久化:Agent 挂载共享缓存卷加速依赖下载
42 拉取请求(PR)自动化
答案:
Zadig 通过 PR Webhook 实现自动化环境部署和验证。
- PR 触发:创建或更新 PR 时自动触发构建和测试工作流
- 预览环境:为每个 PR 自动创建独立预览环境
- PR 评论:自动在 PR 评论中展示构建状态、测试报告、预览环境链接
- 门禁集成:测试失败时阻止 PR Merge
- 环境清理:PR 合并或关闭后自动删除预览环境
43 构建超时和失败处理策略
答案:
Zadig 对构建任务设置超时机制和失败处理策略,保障平台稳定性。
- 超时设置:每个 Workflow Stage 独立配置超时时间
- 超时处理:超时后自动终止当前 Stage 并标记失败
- 失败重试:配置重试次数和间隔,自动重试失败 Stage
- 失败通知:工作流失败后自动通知相关干系人
- 幂等构建:相同版本重复构建不产生副作用
- 资源清理:无论成功或失败,构建完成后清理 Agent 资源
44 环境数据初始化
答案:
Zadig 支持环境创建时自动执行数据初始化任务,确保新环境快速就绪。
- 初始化类型:数据库 Schema 创建、测试数据导入、配置数据同步
- 执行时机:环境创建后、首次部署前
- 初始化脚本:支持 SQL 脚本、Shell 脚本、HTTP 调用
- 幂等执行:多次执行结果一致
- 初始化状态:在环境详情页展示初始化进度和结果
45 流水线编排规范
答案:
Zadig 工作流编排遵循以下规范,确保流水线高效可靠:
- Stage 划分:构建 -> 单元测试 -> 代码扫描 -> 镜像构建 -> 部署测试环境 -> 集成测试 -> 审批 -> 生产部署
- 失败阻断:关键 Stage(代码扫描、单元测试)失败时阻断后续流程
- 并行执行:无依赖关系的 Stage 配置并行执行
- 人工确认:生产部署等高风险操作设置人工确认节点
- 通知策略:关键节点失败时通知对应责任人
46 多数据中心部署
答案:
Zadig 支持跨数据中心部署,通过 Cluster Group 和 Placement 策略实现。
- Cluster Group:按数据中心分组管理集群
- 部署策略:按数据中心灰度、按地域分批、全量同步
- 配置差异:不同数据中心使用不同 Values 覆盖配置
- 流量切换:DNS 或 Global Load Balancer 层面切换流量
- 故障隔离:单个数据中心故障不影响其他中心部署流程
47 密钥管理方案
答案:
Zadig 通过集成外部密钥管理系统保障敏感信息的安全访问。
- 集成方案:HashiCorp Vault、AWS Secrets Manager、K8s Secret
- 密钥引用:工作流中通过 ${SECRET_NAME} 引用,运行时解密
- 权限控制:密钥访问权限与环境角色绑定
- 审计记录:每次密钥读取和修改记录审计日志
- 轮换机制:支持密钥周期性轮换,自动同步至各环境
48 集群资源调度优化
答案:
Zadig 通过资源标签和亲和性规则实现构建任务的优化调度。
- 节点选择:基于 NodeSelector 将构建任务调度到专用构建节点
- 资源隔离:构建 Agent 运行在独立节点组,与业务应用隔离
- 亲和性:PodAffinity 将同应用 Pod 调度到同一可用区
- 资源预留:为构建 Agent 预留节点资源,避免资源竞争
- 扩缩容:根据构建队列深度自动扩缩 Agent 节点
49 版本冻结与发布日历
答案:
Zadig 支持发布日历和版本冻结策略,保障发布窗口期管控。
- 发布窗口:配置可发布的时间窗口(工作日 10:00-16:00)
- 版本冻结:指定时间段内禁止部署变更
- 强制跳过:紧急情况绕过策略,需审批并记录原因
- 日历配置:全局冻结和项目级冻结,项目级覆盖全局
- 自动阻断:冻结期内触发的工作流自动排队等待解冻后执行
50 平台可扩展性架构
答案:
Zadig 采用微服务架构,各组件独立部署和扩展。
- 组件拆分:apiserver、aslan(工作流引擎)、cron(定时调度)、collie(触发器)
- 水平扩展:无状态组件(apiserver、aslan)支持多副本
- 高可用部署:所有组件至少双副本,避免单点故障
- 数据库:MySQL 主从 + MongoDB 副本集
- 缓存:Redis 集群缓存工作流状态和会话信息
- 存储:MinIO 存储构建日志和制品