Google Cloud Endpoints Helm Chart 实战:在 Kubernetes 上部署 NGINX 代理托管 API 【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载本指南以 stable/gcloud-endpoints/README.md 为主体结合仓库内 values.yaml、deployment.yaml、service.yaml 等模板源码系统讲解如何用 Helm 在 Google Kubernetes EngineGKE上部署 Google Cloud EndpointsESPExtensible Service Proxy为基于 Open APISwagger规范的 API 提供认证、监控与流量代理能力。读完本文你将掌握该 Chart 的全部配置参数、安装卸载流程以及参数与 ESP 运行时命令行参数、容器端口、Kubernetes Service 之间的完整映射关系。1. Chart 背景与定位Google Cloud Endpoints 是一个基于 NGINX 的代理ESPExtensible Service Proxy用于在 Google Cloud 上开发、部署、保护并监控 API。本 Chart 的作用是在 Kubernetes 集群中创建一个 Google Cloud Endpoints 的 Deployment 与 Service将集群内对 API 的请求代理到后端应用并接入 Google 的服务控制与认证体系。需要特别说明的事实依据 Chart.yaml该 Chart 当前版本为0.1.2appVersion为1engine为gotpl该 Chart 已被标记为deprecated: true原因是长期无人维护且 e2e 测试失败Chart 注释中明确提及 PR #2149 即为例证仓库根目录的 PROCESSES.md 描述了 Chart 弃用与重新启用undeprecate的流程官方 README 同时注明本 Chart 依据 Google 文档创建但不是 Google 官方支持或维护的产品。因此本文既介绍其标准用法也会在最后给出使用与迁移建议帮助读者在知情前提下决策是否采用。2. 工作原理从 Deployment 到 ESP 参数注入模板渲染的核心在 deployment.yaml。它创建一个extensions/v1beta1的 Deployment容器名为endpoints镜像取自{{ .Values.image }}默认b.gcr.io/endpoints/endpoints-runtime:1。容器启动后所有配置项通过**命令行参数args**注入 ESP 运行时模板中每个参数都使用if (.Values.xxx)守卫即只有显式设置了对应 value参数才会被注入Helm values 配置项注入的 ESP 命令行参数说明依据 deployment.yaml 与 values.yaml 注释httpPort--http_port接受 HTTP/1.x 连接的端口http2Port--http2_port接受 HTTP/2 连接的端口不能与 HTTP/1.x 端口相同sslPort--ssl_port接受 HTTPS 连接的端口同时支持 HTTP/1.x 与 HTTP/2backend--backend后端应用地址gRPC 后端需加grpc://前缀如grpc://localhost:8081默认localhost:8081service--serviceEndpoints 服务名不填且未设serviceConfigURL时ESP 联系元数据服务获取version--versionEndpoints 服务配置版本不填且未设serviceConfigURL时由元数据服务获取serviceAccountKey--service_account_key服务账号密钥 JSON 文件路径用于访问 Service Control 与 Service Management省略时 ESP 联系元数据服务获取访问令牌nginxConfig--nginx_config自定义 NGINX 配置文件路径statusPort--status_portESP 状态端口状态信息在 HTTP/1.x 的/endpoints_status路径提供默认80902.1 端口定义与默认行为模板对端口有一套明确的缺省逻辑见 deployment.yaml 中ports段落若设置了httpPort暴露名为http的 containerPort若未设置httpPort、http2Port、sslPort三者则默认暴露8080端口名为http这也是 values.yaml 注释中默认 httpPort 8080的由来若设置了http2Port额外暴露名为http2的 containerPort若设置了sslPort额外暴露名为https的 containerPort若设置了statusPort暴露名为status的 containerPort。2.2 健康检查只要设置了statusPort模板就会自动为容器配置存活与就绪探针见 deployment.yamllivenessProbe与readinessProbe均以 HTTP GET 方式请求/endpoints_statusinitialDelaySeconds: 5timeoutSeconds: 1。这意味着 ESP 的/endpoints_status健康端点被 Kubernetes 用来判断 Pod 存活与就绪任何自定义 NGINX 配置都不得屏蔽该路径。3. 前置条件按 README.md 的 Prerequisites 章节部署前需要满足一个运行在Google Container EngineGKE上的 Kubernetes 集群一份 API 的Open APISwagger规范 YAML 文件先通过以下命令部署 Open API 规范并记下返回的Project ID 与版本号$ gcloud beta service-management deploy swagger.yaml部署时用到的service参数通常形如project-id.appspot.comversion即上一步获得的版本号。4. 安装 Chart4.1 快速安装TL;DR一行命令即可完成最小化安装README.md 的 TL;DR 章节$ helm install stable/gcloud-endpoints --set serviceproject-id.appspot.com,versionversion-number,backendbackendapi.default.svc.cluster.local其中service形如project-id.appspot.com的 Endpoints 服务名version服务配置版本号backend后端 API 的 Kubernetes Service 地址如backendapi.default.svc.cluster.local。4.2 指定 release 名称安装使用--name指定 release 名例如my-release$ helm install --name my-release stable/gcloud-endpoints --set serviceproject-id.appspot.com,versionversion-number,backendbackendapi.svc.cluster.local提示使用helm list可以查看所有已部署的 release。4.3 通过 values 文件安装当参数较多时推荐将配置写入 YAML 文件再以-f传入$ helm install --name my-release -f values.yaml stable/gcloud-endpoints提示可以直接使用仓库自带的默认配置 values.yaml 作为模板在其基础上按需修改。4.4 安装后的访问方式Chart 的 NOTES.txt 会根据serviceType给出三种不同的访问指引NodePort先取节点端口与节点 IP再访问http://$NODE_IP:$NODE_PORT/export NODE_PORT$(kubectl get --namespace namespace -o jsonpath{.spec.ports[0].nodePort} services release-gcloud-endpoints) export NODE_IP$(kubectl get nodes --namespace namespace -o jsonpath{.items[0].status.addresses[0].address}) echo http://$NODE_IP:$NODE_PORT/LoadBalancerLoadBalancer IP 可能需要几分钟才就绪可执行kubectl get svc -w release-gcloud-endpoints观察状态就绪后export SERVICE_IP$(kubectl get svc --namespace namespace release-gcloud-endpoints -o jsonpath{.status.loadBalancer.ingress[0].ip}) echo http://$SERVICE_IP/ClusterIPvalues.yaml 的默认值通过 port-forward 访问export POD_NAME$(kubectl get pods --namespace namespace -l apprelease-gcloud-endpoints -o jsonpath{.items[0].metadata.name}) echo http://127.0.0.1:8080/ kubectl port-forward $POD_NAME 8080:80注意Service 名称是 release 名与 chart 名拼接后再做 24 字符截断的结果见 _helpers.tpl 中fullname的定义实际名称以渲染结果为准。5. 卸载 Chart卸载删除名为my-release的 release$ helm delete my-release该命令会移除与该 Chart 关联的所有 Kubernetes 组件并删除该 release。6. 配置参数详解6.1 完整参数表以下表格完整继承自 README.md 的 Configuration 章节ParameterDescriptionDefaultimageEndpoints imageb.gcr.io/endpoints/endpoints-runtime:0.3imagePullPolicyImage pull policyAlwaysifimagetag islatest, elseIfNotPresentbackendBackend API in which to proxy requestsserviceName of the Endpoints serviceserviceConfigURLURL to fetch the service configurationhttpPortPort to accept HTTP/1.x connections8080ifhttp2PortandsslPortare not providedhttp2PortPort to accept HTTP/2 connectionssslPortPort to accept HTTPS connectionsstatusPortPort for status/health (not exposed)8090versionConfig version of Endpoints serviceserviceAccountKeyService account key JSON filenginxConfigCustom NGINX config fileserviceTypeKubernetes Service typeLoadBalancerresourcesCPU/Memory resource requests/limitsMemory:128Mi, CPU:100m6.2 以仓库实际 values.yaml 为准的补充说明需要指出README 参数表与仓库实际默认值存在两处差异应以 values.yaml 为准镜像values.yaml 中实际默认镜像是b.gcr.io/endpoints/endpoints-runtime:1README 表格写的是:0.3Service 类型values.yaml 中serviceType的默认值是ClusterIP注释明确建议对于 minikube设置为 NodePort其他环境使用 LoadBalancer。values.yaml 还包含以下在参数表中未单列、但实际生效的默认值statusPort: 8090 resources: requests: memory: 128Mi cpu: 100m即状态端口默认8090资源请求默认内存128Mi、CPU100m。6.3 逐参数深入说明image / imagePullPolicyimageESP 运行时镜像。默认b.gcr.io/endpoints/endpoints-runtime:1。imagePullPolicy未设置时由 Kubernetes 默认规则决定——若 image tag 为latest则为Always否则为IfNotPresentdeployment.yaml 中通过{{ default .Values.imagePullPolicy | quote }}渲染空值交由平台默认。可以通过 deployment.yaml 确认其注入方式。backend后端 API 地址ESP 将收到的请求代理转发至此。默认localhost:8081若后端为 gRPC 服务须使用grpc://前缀例如grpc://localhost:8081见 values.yaml 注释。典型的跨命名空间写法为backendapi.default.svc.cluster.local这类完整 DNS 名。service / version / serviceConfigURL三者共同决定 ESP 如何获取服务配置显式设置serviceEndpoints 服务名形如project-id.appspot.com与version配置版本号是最直接的方式若两者省略但设置了serviceConfigURLESP 从该 URL 拉取服务配置若都不设置ESP 会联系集群的元数据服务自动获取服务名与版本见 values.yaml 中对应注释。httpPort / http2Port / sslPort控制 ESP 对外监听协议httpPortHTTP/1.x 端口默认值逻辑为当http2Port与sslPort均未提供时为8080http2PortHTTP/2 端口不能与 HTTP/1.x 端口相同sslPortHTTPS 端口同时接受 HTTP/1.x 与 HTTP/2 连接。三者均未设置时模板回退暴露容器端口8080见 deployment.yaml。statusPortESP 状态端口默认8090。状态信息通过 HTTP/1.x 的/endpoints_status路径暴露同时被用作存活/就绪探针的探测路径。README 参数表注明该端口不对外暴露not exposed仅作为容器内部健康检查使用。serviceAccountKey服务账号密钥 JSON 文件路径。ESP 用它访问 Service Control计费/监控/限流与 Service Management配置下发。省略时ESP 会联系元数据服务获取访问令牌见 values.yaml 注释。该参数通过--service_account_key注入容器命令行见 deployment.yaml。nginxConfig自定义 NGINX 配置文件路径通过--nginx_config注入用于覆盖 ESP 默认的 NGINX 行为见 deployment.yaml。注意不要屏蔽/endpoints_status健康端点。serviceTypeKubernetes Service 类型ClusterIP/NodePort/LoadBalancer。service.yaml 依据该值渲染 Service 的type字段不同类型的访问方式见本文 4.4 节。resources容器资源请求与限制默认requests: memory 128Mi / cpu 100m。模板通过 _helpers.tpl 中定义的递归toYaml辅助函数将resources对象渲染进 Deployment 的resources字段。7. Service 端口映射service.yaml 定义了对外 Service 端口与容器端口的映射关系与 deployment.yaml 中的端口定义一一对应Service 端口targetPort命名端口启用条件80HTTPhttp设置了httpPort或三者端口均未设置81HTTP/2http2设置了http2Port443HTTPShttps设置了sslPortService 的 selector 匹配app: {{ template fullname . }}标签fullname由 release 名与 chart 名拼接并截断为 24 字符见 _helpers.tpl。Deployment 的 selector 同样使用该标签保证 Pod 与 Service 正确关联。8. 注意事项与使用建议Chart 已弃用当前 Chart 标记为deprecated: true见 Chart.yaml原因是无人维护与 e2e 测试失败。新项目应优先评估 Google 官方推荐的替代部署方式如 ESPv2 相关方案如需继续使用本 Chart请自行验证模板在当前集群版本尤其是 Deployment API 从extensions/v1beta1演进下的兼容性。非 Google 官方产品Chart 依据 Google 文档创建但并非 Google 官方支持维护使用前应做好风险评估。API 版本陈旧模板使用extensions/v1beta1的 Deployment API见 deployment.yaml在较新版本的 Kubernetes 集群上可能无法直接应用需自行适配为apps/v1。健康端点/endpoints_status同时承担存活与就绪探针职责自定义nginxConfig时务必保留该路径。密钥安全serviceAccountKey对应服务账号密钥 JSON 文件生产环境建议结合 Kubernetes Secret 挂载避免将密钥直接写入 values 明文配置。9. 参考Chart 默认配置 values.yaml所有参数的完整注释与默认值Deployment 模板 deployment.yamlESP 命令行参数注入、端口定义与健康检查Service 模板 service.yaml对外端口映射与 Service 类型辅助模板 _helpers.tpl名称生成与toYaml递归渲染NOTES.txt三种 Service 类型下的访问指引Chart.yamlChart 元数据与弃用状态PROCESSES.md仓库维护流程含 Chart 弃用/恢复机制。赞分享【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载相关推荐PhotoPrism Plus Helm Chart 实战在 Kubernetes 上部署自托管 AI 照片管理平台PhotoPrism Plus Helm Chart 实战在 Kubernetes 上部署自托管 AI 照片管理平台 PhotoPrism® 是一款开源、支持后端前端图像处理人工智能AI 应用PraisonAI 部署实战使用 praisonai-agents-api Helm Chart 在 Kubernetes 上托管 Agent HTTP API/health 与 /chatPraisonAI 部署实战使用 praisonai agents api Helm Chart 在 Kubernetes 上托管 Agent HTTP AP人工智能AI AgentAgent 框架多智能体工作流自动化RAGMCP 服务在 Google Cloud 自托管 FlagsmithGKE Helm 与 Cloud Run 双路径部署实战指南在 Google Cloud 自托管 FlagsmithGKE Helm 与 Cloud Run 双路径部署实战指南 Flagsmith 是开源的功能开关后端前端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考