跳转到内容

Zadig 面试题

50 道题
分类
DevOps
题目数
50 道
已阅读 0 / 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 YAMLHelm ChartKustomize
配置管理原生 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 WebhookCommit/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+Buildmain-20240526-001开发分支
SemVerv1.2.3发布版本
Commit SHAabc1234精确追溯
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 存储构建日志和制品