nuclio nuctl create 命令详解:创建项目、API 网关与函数事件
发布时间:2026/10/12 2:07:42 锦皓数字建站

云原生后端微服务【免费下载链接】nuclioHigh-Performance Serverless event and data processing platform项目地址https://gitcode.com/gh_mirrors/nu/nuclio点击查看免费下载nuctl create是 Nuclio 官方命令行工具 nuctl 中负责“创建资源”的命令组它统一管理三类核心资源的创建项目project、API 网关apigateway和函数事件functionevent。本文以 nuctl_create.md 为骨架结合仓库源码与集成测试完整讲解每个子命令的用法、全部参数、执行流程与底层实现读完即可在 Kuberneteskube或本地local平台上熟练使用 nuctl 创建和编排 Nuclio 资源。nuctl create 命令组概览nuctl create是 nuctl 的一个命令组cobra 命令树中的父命令本身不直接执行任何创建动作而是将请求分发给三个子命令。在其命令定义中可以看到完整的子命令注册逻辑// pkg/nuctl/command/create.go cmd : cobra.Command{ Use: create, Aliases: []string{cre}, Short: Create resources, } createProjectCommand : newCreateProjectCommandeer(ctx, commandeer).cmd createFunctionEventCommand : newCreateFunctionEventCommandeer(ctx, commandeer).cmd createAPIGatewayCommand : newCreateAPIGatewayCommandeer(ctx, commandeer).cmd cmd.AddCommand( createProjectCommand, createFunctionEventCommand, createAPIGatewayCommand, )create命令自身只暴露一个选项-h, --help help for create三个子命令及对应的短别名来自源码 create.go 的Aliases字段如下子命令用法别名说明nuctl create projectnuctl create project name [flags]proj、prj创建新项目nuctl create functioneventnuctl create functionevent name [flags]fe创建函数事件函数调用模板nuctl create apigatewaynuctl create apigateway name [flags]agw创建 API 网关三个子命令均要求恰好一个位置参数作为资源名称源码中通过if len(args) ! 1校验否则返回 “requires an identifier” 之类的错误。例如创建项目缺少名称时会报Project create requires an identifier。公共选项所有 nuctl 子命令继承的参数以下选项由 nuctl 根命令定义见 nuctl.go 中的PersistentFlags对nuctl create及其全部子命令都生效--concurrency int Max number of parallel patches. The default value is equal to the number of CPUs. (default 4) -k, --kubeconfig string Path to a Kubernetes configuration file (admin.conf) --mask-sensitive-fields Enable sensitive fields masking -n, --namespace string Namespace --platform string Platform identifier - kube, local, or auto (default auto) -v, --verbose Verbose output参数含义与底层行为说明--platform选择目标平台取值kube、local或auto默认auto。源码中默认值来自环境变量NUCTL_PLATFORM未设置时回退到auto见 nuctl.go 中的common.GetEnvOrDefaultString(NUCTL_PLATFORM, common.AutoPlatformName)。auto模式由factory.CreatePlatform根据环境自动解析出具体平台实现平台常量定义在 consts.goAutoPlatformName auto、KubePlatformName kube、LocalPlatformName local。-n, --namespace指定资源所在命名空间。若未显式传入根命令的resolveDefaultNamespace()会按平台解析kube 平台读取 kubeconfig 当前上下文的命名空间local 平台回退到nuclio。也可通过环境变量NUCTL_NAMESPACE预设默认值。-k, --kubeconfig指向 Kubernetes 配置文件如admin.conf的路径仅在 kube 平台下有意义。--concurrency并行补丁patch的最大数量默认等于 CPU 核数源码中为runtime.NumCPU()文档生成时按默认机器显示为 4。--mask-sensitive-fields启用敏感字段脱敏。开启后根命令会调用platformConfiguration.EnableSensitiveFieldMasking()在输出或导出资源时对密码等敏感信息打码。这一点在 API 网关的集成测试中体现得很直接创建 basicAuth 网关后执行get测试断言输出中不包含密码明文见 apigagteway_test.go。-v, --verbose输出调试级日志DebugLevel默认仅输出 Info 级别。nuctl create project创建项目项目是 Nuclio 资源函数、API 网关、函数事件的逻辑归属容器。相关 CLI 文档见 nuctl_create_project.md。用法与参数nuctl create project name [flags]选项类型说明--description stringstring项目描述--owner stringstring项目所有者-h, --help-查看帮助典型用法# 创建一个带描述和所有者的项目 nuctl create project my-project --description Data processing project --owner data-team # 使用短别名 nuctl create proj my-project源码实现与执行流程创建项目由createProjectCommandeer实现create.go关键步骤将位置参数写入ProjectConfig.Meta.Name将根命令解析出的命名空间写入Meta.Namespace把--description、--owner分别写入ProjectConfig.Spec.Description和ProjectConfig.Spec.Owner调用平台抽象接口platform.CreateProject(ctx, platform.CreateProjectOptions{ProjectConfig: ...})成功后打印Project created日志含名称与命名空间。对应的数据结构定义在 types.goProjectMeta包含Name、Namespace、Labels、Annotations等字段ProjectSpec包含Description、Owner以及DefaultFunctionNodeSelector默认函数节点选择器CLI 未直接暴露可通过配置或导入方式设置。CreateProject是 platform.go 中Platform接口声明的核心方法之一kube 与 local 平台各自提供实现这也是 nuctl 一套命令同时支撑两种部署形态的原因。集成测试project_test.go演示了项目创建与后续管理创建时传入description随后用nuctl get project校验测试还验证了项目内含函数时无法直接删除、级联删除DeleteProjectStrategyCascading与受限删除DeleteProjectStrategyRestricted两种策略的行为差异说明项目与函数之间存在强关联约束。nuctl create functionevent创建函数事件函数事件Function Event本质上是函数调用的预置模板把触发参数、请求体等绑定为一个具名资源之后可反复用它触发函数。相关 CLI 文档见 nuctl_create_functionevent.md。用法与参数nuctl create functionevent name [flags]选项类型说明--function stringstring该事件所属的函数必填--display-name stringstring显示名称与资源名不同时可指定可选--trigger-name stringstring要触发的 trigger 名称可选--trigger-kind stringstring要触发的 trigger 类型如http可选--body stringstring调用函数时携带的请求体内容--attrs stringstring函数事件的 JSON 编码属性默认{}典型用法# 为函数 my-func 创建一个名为 my-event 的函数事件 nuctl create functionevent my-event \ --function my-func \ --display-name My Event \ --trigger-kind http \ --body {key: value}源码实现与执行流程createFunctionEventCommandeercreate.go的执行逻辑校验位置参数数量并强制要求--function非空否则报Function event must belong to a function将名称写入FunctionEventConfig.Meta.Name、命名空间写入Meta.Namespace并自动打上标签nuclio.io/function-name标签键常量见 consts.go从而把事件与函数关联起来将--attrs的 JSON 内容解码到Spec.Attributes调用platform.CreateFunctionEvent(ctx, platform.CreateFunctionEventOptions{...})。FunctionEventSpec结构types.go包含DisplayName、TriggerName、TriggerKind、Body、Attributes五个字段与 CLI 参数一一对应。注意FunctionEventTriggerKind定义了http作为默认触发类型DefaultFunctionEventTriggerKind FunctionEventTriggerKindHTTP因此不指定--trigger-kind时事件默认按 HTTP 触发器语义处理。集成测试project_test.go 中的createFunctionEvent验证了事件创建后可通过nuctl get functionevent --function func按函数过滤查询并校验display-name与nuclio.io/function-name标签是否正确写入。nuctl create apigateway创建 API 网关API 网关把 Nuclio 函数暴露为对外 HTTP 端点支持主机名、路径、认证与金丝雀canary灰度流量。相关 CLI 文档见 nuctl_create_apigateway.md。用法与参数nuctl create apigateway name [flags]选项类型默认值说明--project stringstringproject网关所属项目--host stringstring-网关主机地址--description stringstring-网关描述--path stringstring-网关路径拼接在 host 之后的 URI 端点--authentication-mode stringstringnone认证模式none、basicAuth、accessKey、iguazio--basic-auth-username stringstring-basicAuth 用户名配合 basicAuth 模式--basic-auth-password stringstring-basicAuth 密码配合 basicAuth 模式--function stringstring-网关主函数必填--canary-function stringstring-金丝雀函数可选--canary-percentage intint0金丝雀函数分流百分比--attrs stringstring{}JSON 编码的网关属性覆盖其余参数--labels stringstring{}网关的 JSON 编码自定义标签--canary-labels stringstring{}金丝雀 upstream 的 JSON 编码自定义标签-h, --help--查看帮助典型用法# 无认证网关把函数 my-func 暴露到 my.example.com nuctl create apigateway my-gateway \ --project my-project \ --host my.example.com \ --path /api \ --function my-func # basicAuth 认证 金丝雀灰度25% 流量打到 canary-func nuctl create apigateway my-gateway \ --project my-project \ --host my.example.com \ --path /api \ --function my-func \ --authentication-mode basicAuth \ --basic-auth-username admin \ --basic-auth-password s3cret \ --canary-function canary-func \ --canary-percentage 25源码实现与执行流程createAPIGatewayCommandeercreate.go的执行逻辑较为复杂要点如下参数装配把--host、--description、--path写入APIGatewaySpec对应字段--project非空时写入标签nuclio.io/project-name。认证模式未指定--authentication-mode时默认为noneauth.AuthenticationModeNone指定basicAuth时强制要求同时提供用户名和密码否则报Basic auth username and password must be specified并组装APIGatewayAuthenticationSpec.BasicAuth。认证模式枚举定义在 auth/types.gonone、basicAuth、accessKey、oauth2、iguazio、api、browserCLI 帮助文本列出的是none、basicAuth、accessKey、iguazio四个常用值。主函数校验--function为空直接报A primary function must be specified。upstream 组装主函数被构造成APIGatewayUpstreamSpec{Kind: nucliofunction, NuclioFunction: {Name: ...}}可附加--labels指定的自定义标签若指定了--canary-function则必须给出--canary-percentage否则报Canary function percentage must be specified金丝雀 upstream 额外携带Percentage分流比例。状态标记创建前把Status.State置为waitingForProvisioningAPIGatewayStateWaitingForProvisioning见 types.go 中的状态枚举表示资源已提交、等待平台完成实际部署。调用platform.CreateAPIGateway(ctx, platform.CreateAPIGatewayOptions{...})。APIGatewaySpec结构types.go包含Host、Name、Description、Path、AuthenticationMode、Authentication、Upstreams字段APIGatewayUpstreamSpec还支持Port、RewriteTarget、ExtraAnnotations等高级配置可通过--attrs传入完整 JSON 实现超出 CLI 参数的细粒度控制--attrs的优先级最高源码注释明确 “overrides all the rest”。API 网关的集成测试验证apigagteway_test.go 提供了创建、查询、删除的完整端到端验证值得关注的行为包括敏感字段脱敏创建 basicAuth 网关后执行get -o yaml测试断言输出中不出现basic-password明文密码被存入 Secret路径校验传入包含空格的非法path时创建会失败并报Failed to validate and enrich an API gateway保留名称保护使用dashboard等保留名创建网关会被拒绝Resource name is reserved按函数过滤nuctl get apigateway --function-name func只返回与该函数绑定的网关。这些用例都通过suite.ExecuteNuctl驱动真实 nuctl 命令执行可作为自测时的行为参考。底层调用链从 CLI 到平台抽象无论创建哪种资源nuctl create的执行路径都遵循同一套架构模式见 nuctl.go子命令RunE先调用rootCommandeer.initialize(true)初始化日志、加载平台配置platformconfig.NewPlatformConfig、解析命名空间并让factory.CreatePlatform按--platform值创建对应的platform.Platform实现命令层把 CLI 参数组装成对应的*Config结构ProjectConfig/FunctionEventConfig/APIGatewayConfig定义于 types.go调用 platform.go 中Platform接口声明的CreateProject/CreateFunctionEvent/CreateAPIGateway方法平台实现kube 平台负责落库 CRD、local 平台负责本地状态管理完成实际资源创建。这种“命令层 — 平台接口 — 平台实现”的三层设计使同一套nuctl create语法在 kube 集群与本地 Docker 环境下行为一致是 Nuclio CLI 的核心架构特征。相关参考本命令组文档nuctl_create.md子命令文档nuctl_create_project.md、nuctl_create_functionevent.md、nuctl_create_apigateway.mdnuctl 根命令与公共参数nuctl.md命令实现源码pkg/nuctl/command/create.go、pkg/nuctl/command/nuctl.go资源类型定义pkg/platform/types.go平台接口pkg/platform/platform.go认证模式定义pkg/auth/types.go集成测试pkg/nuctl/test/project_test.go、pkg/nuctl/test/apigagteway_test.go补充说明本文档目录docs/reference/nuctl/cli/下的各命令 Markdown 文件由 nuctl 根命令的CreateMarkdown方法通过 cobra 文档生成器自动产出见 nuctl.go 中的doc.GenMarkdownTree因此所有参数文本与源码中的 flag 定义严格同步可放心以此为准进行日常使用与排障。赞分享云原生后端微服务【免费下载链接】nuclioHigh-Performance Serverless event and data processing platform项目地址https://gitcode.com/gh_mirrors/nu/nuclio点击查看免费下载相关推荐Nuclio API Gateway 实战使用 nuctl 命令行创建、鉴权与删除 API GatewayNuclio API Gateway 实战使用 nuctl 命令行创建、鉴权与删除 API Gateway 导读 本文基于 Nuclio 官方文档 docs/云原生后端微服务Nuclio nuctl beta 命令参考以 API 客户端模式管理函数的 CLI 实战指南Nuclio nuctl beta 命令参考以 API 客户端模式管理函数的 CLI 实战指南 导读 nuctl beta 是 Nuclio 官方命令行工具云原生后端微服务Nuclio nuctl build 命令详解从源码到处理器镜像的构建实战指南Nuclio nuctl build 命令详解从源码到处理器镜像的构建实战指南 Nuclio 是高性能的 Serverless 事件与数据处理平台其官方命令云原生后端微服务上一篇KMS智能激活终极指南一键永久激活Windows和Office的完整教程下一篇终极免费资源下载神器3分钟解锁全网视频音频自由创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。