spring-boot - 如何将服务生成的 nodePort 注入到部署中?
问题描述
我正在尝试将基于 Netflix OSS 的应用程序迁移到 Kubernetes,所以我发现的理想方法是创建 NodePort 类型的服务并将应用程序注册到 Eureka。所以我在做 eureka.hostname=hostIP 和 eureka.nonSecurePort=nodePort
这是我所做的 -
使用服务类型 NodePort 为 sample-app-service 创建一个服务。
通过运行命令 kubectl create configmap saas-event-reception-config --from-literal=nodePort=$(kubectl get -o jsonpath="{.spec.ports[0].nodePort}" 将节点端口注入 ConfigMap services sample-app-service)(问题:有没有办法可以将其指定为 yaml?)
使用部署 yaml 中的 configMapKeyRef 引用 nodePort。
我面临的问题是在自动化部署期间。因此,理想情况下,我希望使用包含 Service、ConfigMap 和 Deployment 的单个部署文件来部署应用程序。有没有办法可以优雅地做到这一点?或者是否有任何替代建议可以做到这一点。
我也在看 helm 但即使我使用 --set 通过运行命令将 nodePort 传递给 ConfigMap (kubectl get -o jsonpath="{.spec.ports[0].nodePort}" services sample-app- service) 必须首先部署 Service,以便 ConfigMap 获取 nodePort 值。有没有办法我可以做到这一点?
解决方案
您可以做的是在您的服务 yaml 文件中的服务节点端口范围(默认为 30000-32767)中指定一个端口ports
,名称为nodePort
. 然后你会提前知道nodePort。您可以使用 helm 传入 nodePort 以用作参数,以便在 Service yaml 以及您的 ConfigMap 和 Deployment 中使用此参数。
推荐阅读
- linux - 如何使用多个分隔符从文件中删除特定列
- php - 如何获取通过不同网络连接到我的应用程序的用户的电脑名称
- javascript - fullcalendar 调度程序只允许在后台事件中选择
- angular - Angular 5 mat-tab-group 不起作用
- java - 通过 URL 从 Firebase 存储中下载视频
- typescript - 具有通用类型的打字稿装饰器
- angular - 不要在更改时触发 rxjs 链
- python - 代码块中超级引用接口的含义
- java - Crosswalk 在 API 级别 26 中返回“Crosswalk 的 API 尚未准备好”
- excel - 将图像插入单元格