Skip to content

cornus serve

运行 cornus 服务器: OCI 镜像仓库、构建引擎和部署引擎全部位于一个进程中。

概要

sh
cornus serve [flags]

说明

cornus serve 启动统一 HTTP 服务器,托管 /v2/* (OCI 镜像仓库) 和 /.cornus/v1/* (构建、部署、exec 和 tunnel 端点) 。它会监听至被中断 (Ctrl-CSIGTERM) 。

镜像仓库 blob 和 manifest 经 --storage 所选存储后端持久化;未设置时,存储位于数据目录下。支持的 URL 形式参见存储后端

监听地址与暴露范围

cornus serve 默认绑定 :5000,即全部网络接口

这是有意为之。工作负载会反向连接服务器: 容器化的 caretaker 为客户端本地挂载、客户端侧 egress、凭据投递和工作负载遥测向服务器发起连接。宿主机的 127.0.0.1 并不是容器的那一个,因此仅绑定回环地址会让上述功能全部无法连接。只要工作负载需要访问服务器,就请保留默认值。

该 API 默认无认证

Cornus 除非你显式配置认证,否则是无认证的,而它能够构建镜像、部署工作负载并对其执行 exec。绑定到全部网络接口时,这些能力对任何能路由到该端口的一方都是可用的。在把服务器暴露到你所信任的网络之外以前,请先启用认证 — 绑定范围与认证应当作为同一个决定。

若要把服务器限制在本机,请显式声明:

sh
cornus serve --addr 127.0.0.1:5000  # 仅本机
cornus serve --addr 10.0.0.5:5000   # 仅某一个网络接口

CORNUS_ADDR 的作用相同。只有在工作负载需要访问服务器时,收紧绑定范围才是合适的 — 即不使用客户端本地挂载、客户端侧 egress、凭据投递和工作负载遥测。服务器仅绑定回环地址时会在启动日志中说明,因此该限制是可见的,而不是让对端遇到莫名其妙的超时。

运行在容器内的服务器必须绑定全部网络接口: 容器若绑定自身的回环地址,发布出去的端口 (docker run -p、Service) 将无法到达。已发布的容器镜像以及 Kubernetes 清单 / Helm chart 都显式传入了 --addr :5000;如果你覆盖镜像的命令,请保留该 flag。容器内的服务器若仍然绑定了回环地址,启动时会记录一条警告。

同时设置 --tls-cert--tls-key 时,服务器使用 HTTPS。添加 --tls-client-ca 会启用 mutual TLS: 经过验证的 client certificate 的 CommonName 成为调用方 identity,同时 client certificate 仍为可选。参见安全与认证

服务器支持的完整环境变量列表参见服务器环境变量

Flag

FlagEnv var默认值说明
--addrCORNUS_ADDR:5000/v2/*/.cornus/v1/* 的 HTTP 监听地址。默认监听全部网络接口 — 因为容器化的 caretaker 会反向连接服务器。若要限制在本机,请传入 --addr 127.0.0.1:5000。参见 监听地址与暴露范围
--rootlessCORNUS_ROOTLESSfalse以 rootless 模式 (user namespace) 运行构建引擎。
--storageCORNUS_STORAGE数据目录镜像仓库持久化后端: 路径、file://mem://s3://bucket?region=&endpoint=&path_style=。参见存储后端
--otelCORNUS_OTELfalse通过标准 OTEL_* 环境变量启用 OpenTelemetry (trace/metric/log) 。设置任意 OTEL_* exporter/endpoint 环境变量时也会隐式启用。
--tls-certCORNUS_TLS_CERTPEM certificate 文件;与 --tls-key 一同设置时提供 HTTPS。
--tls-keyCORNUS_TLS_KEYPEM private-key 文件;与 --tls-cert 一同设置时提供 HTTPS。
--tls-client-caCORNUS_TLS_CLIENT_CA用于验证 client certificate (mTLS) 的 PEM CA bundle。已验证 certificate 的 CommonName 成为调用方 identity;提交 certificate 仍是可选的。
--file-cacheCORNUS_FILE_CACHEfalse为不变的客户端本地挂载读取启用 server 按文件缓存。需要 --file-cache-dir
--file-cache-dirCORNUS_FILE_CACHE_DIR存放文件缓存数据的必需目录。请使用专用卷。
--file-cache-chunk-sizeCORNUS_FILE_CACHE_CHUNK_SIZE1048576文件缓存块大小 (bytes)。
--file-cache-max-bytesCORNUS_FILE_CACHE_MAX_BYTES无限制由垃圾回收实施的文件缓存软大小上限。

示例

在默认地址 (全部网络接口) 提供服务,并将数据存于数据目录:

sh
cornus serve

监听指定地址并将镜像仓库保存在内存:

sh
cornus serve --addr :8080 --storage mem://

将镜像仓库持久化至 S3 兼容存储:

sh
cornus serve --storage 's3://my-bucket?region=us-east-1&path_style=true'

使用 mutual TLS 提供 HTTPS:

sh
cornus serve \
  --tls-cert server.crt \
  --tls-key server.key \
  --tls-client-ca clients-ca.pem

另请参阅

Released under the Apache-2.0 License.