用途
cdf-orchestration-preflight 用于在部署 Cosmos Data Factory (CDF) Orchestration 之前,判断当前环境能安装什么、能运行哪些打包的 DAG。它强调精确报告部分就绪状态,不把混合环境简单归为通过或失败。
主要能力
- 只读审计:从仓库根目录运行捆绑脚本,检查工作站、仓库配置、凭据、Kubernetes 与存储是否满足安装控制器的条件(install_readiness),以及实时控制器和每个打包 DAG 的运行条件(run_readiness)。
- 前置条件补齐:针对全新 Linux 环境,参考 bootstrap.md 覆盖本地工具、Python 环境、容器运行时、Kubernetes、GPU/存储设置与密钥。
- 镜像就绪检查:支持传入已发布的控制器镜像引用(--prebuilt-controller-image REGISTRY/REPOSITORY:TAG),将安装就绪从构建/推送前置条件切换为只读的 docker manifest inspect 检查。
- 网络与 GPU 探测:对非回环 kubeconfig API 端点,从现有就绪的 NVIDIA GPU Operator toolkit pod 运行有界 TCP 探测;对每个声明 NVIDIA GPU 容量的节点,通过其 toolkit pod 验证 libnvcuvid.so.1。
- 存储映射检查:运行 storage_check.py 检查负载中所有存储 URL 是否被 multistorageclient-configuration-secret 映射,只打印桶前缀,不打印凭据。
使用方式
审计命令示例:
python3 skills/cdf-orchestration-preflight/scripts/preflight.py audit
--repo-root "$PWD"
--kubeconfig "$KUBECONFIG"
可使用 --format json 获得机器可读报告。若 KUBECONFIG 未设置,在集群存在时询问其路径,否则按 bootstrap 流程。集群尚不存在时可省略 --kubeconfig 先运行本地检查。AIRFLOW_URL 和 AIRFLOW_TOKEN 可用于安装后认证检查,但令牌不得放在命令行上。
存储检查命令示例:
python3 skills/cdf-orchestration-preflight/scripts/storage_check.py --payload <payload.json>
适用场景
- 在安装 CDF Orchestration 控制器前评估环境就绪度。
- 在触发工作流前检查负载存储映射。
- 排查工作流或服务模式结果、核对实时 Airflow 状态、调查未配置 profile 的 DAG。
限制
- 审计脚本为只读,不创建诊断 pod,不登录、不拉取镜像、不持久化仓库凭据。
- 不执行 make setup、不构建或推送 Airflow 镜像、不安装控制器 Helm release、不触发 DAG。
- 未经批准不得安装 Kubernetes、GPU operator、设备插件、Docker 或系统包。
- UNVERIFIED 表示缺少证据,而非成功。
- 仓库中占位镜像 nvcr.io/<your-org>/<your-team>/sdg-workflow-airflow 会阻塞审计和 make build sdg-controller,需替换为可写仓库路径与唯一标签,且不应提交该修改。
- 部分模式需要 sdg-workflow 中由操作员提供的 PVC(如 shared-ffmpeg),Helm chart 不会创建。
- 仓库自带的基于主机的 NFS 安装器不是通用托管 Kubernetes 方案,推荐前需阅读 nfs-remediation.md。
快速开始交接
安装就绪满足后,返回以下序列(不在本技能内执行):
cp secrets.env.example secrets.env # 仅当 secrets.env 尚不存在时 export KUBECONFIG=/path/the/user-supplied
构建路径:在 make/common.mk 中设置 AIRFLOW_IMAGE_REPOSITORY 和 AIRFLOW_IMAGE_TAG 为可写仓库路径与唯一标签(不要提交该修改)。
make setup make build sdg-controller make install sdg-controller make port-forward
若使用 --prebuilt-controller-image 验证的镜像,省略 make build sdg-controller,创建 deploy/values.yaml 的临时副本,将其 airflow.defaultAirflowRepository/defaultAirflowTag 设为已验证引用,并作为 VALUES_DEV 传给 make install sdg-controller。安装后重新运行本预检并导出 AIRFLOW_URL 和 AIRFLOW_TOKEN。