部署一个 Web 应用
Goal
您运行在主机名后面、启用 TLS 的应用程序,并且在您更改时无需停机即可替换。
Before you start
- 您的租户中至少有一个就绪节点 — 参见注册节点。
- 一个已推送到平台可拉取的注册表的镜像,并固定到一个不是
latest的标签。 - 一个指向路由边缘的 DNS 名称。
Steps
- 打开 部署 并选择 新建部署。
- 为其提供名称、镜像引用和副本计数。
- 添加其所需的网络,以及入口下的路由主机名和端口。
- 添加一个类型为
exec的健康检查,命令是镜像实际可以运行的。 - 选择 部署,并观察其达到运行状态。

Steps
- 编写清单——下面的示例是本文档自身测试解析和转换的文件。
- 应用它——将整个文档粘贴到仪表盘的“导入 YAML”框中,或通过
Content-Type: application/yaml将其 POST 到 API。发送文档本身,而不是其spec:块:信封命名了类型,API 需要它。 - 如果需要,先检查它。发送到
/deployments/dry-run的同一文档会运行 相同的准入规则,并告知是否会被接受,而不会创建任何内容。 - 等待部署达到运行状态。
Steps
- 使用部署主体调用
POST /api/v1/deployments以创建它。 - 调用
GET /api/v1/deployments/{name}直到它报告运行。 - 后续更改发送到
PUT /api/v1/deployments/{name},它会保留您省略的每个字段—— 参见发送描述的一部分。
Steps
odysseus deploy存在,它写入旧版平面路径 控制平面不再 协调。它自己打印该警告,并告诉您使用 API 或仪表盘。- 使用其他选项卡之一。CLI 在此处的有用命令是只读命令——
odysseus status和odysseus logs。
apiVersion: odysseus/v1kind: Deploymentmetadata: name: api labels: app: apispec: image: registry.delta-telematics.ca/acme/api:1.4.2 replicas: 3 environment: LOG_LEVEL: info networks: [acme-network, traefik-public] resources: limits: {cpu: "1", memory: 512Mi} requests: {cpu: 250m, memory: 256Mi} healthCheck: # required for rolling type: exec command: "wget -qO- http://localhost:8080/healthz" interval: 10s timeout: 15s retries: 3 startPeriod: 20s secrets: - name: DB vaultPath: deployments/api/db dependsOn: - job: api-migrate condition: complete placement: affinity: {label: role, value: app} onNodeFailure: reschedule ingress: host: api.example.com port: 8080 tls: {enabled: true, certResolver: letsencrypt} healthCheck: {path: /healthz, interval: 10s, timeout: 3s} # LB probe — the zero-downtime part compress: true headers: response: set: {X-Frame-Options: DENY} retry: {attempts: 3, initialInterval: 100ms} update: strategy: rolling allow_concurrent_versions: true # required attestation max_surge: 1 max_unavailable: 0 health_timeout: 90s min_healthy_time: 15s progress_deadline: 10m failure_action: rollbackManifest · testdata/docs-examples/routed-deployment.yamlVerify
部署报告其所有副本都在运行,主机名通过 HTTPS 提供您的应用程序。
Evidence this worked
GET /api/v1/deployments/{name} 显示运行的副本计数和您发送的镜像。仪表盘的日志视图显示应用程序自身的启动输出——一个启动后立即退出的容器只显示启动行,没有其他内容。