【发布时间】:2021-02-18 22:46:22
【问题描述】:
我对 Kubernetes 很陌生,仍在学习如何使用 LB、入口等。目前,我正在尝试为每个主机设置特定于 pod 的值(配置)。看起来在入口 yaml 规范中,它可以从值中读取配置。但我想阅读入口规范,例如主机,在 Values.yaml 中。
例如,我有两个主机
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: service
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: service-A.com
http:
paths:
- path: /
backend:
serviceName: myservicea
servicePort: 80
- host: service-B.com
http:
paths:
- path: /
backend:
serviceName: myserviceb
servicePort: 80
我在 values.yaml 中有两个变量:
var1: aaa
var2: bbb
我想通过
- var1 到 service-A.com/myservicea
- var2 到 service-B.com/myserviceb
或两者都通过,但应用程序必须能够识别它是什么主机,然后它才能使用正确的变量。
是否有任何配置/api 可用于此目的?
【问题讨论】:
-
你需要创建 secret 并用作 env kubernetes.io/docs/concepts/configuration/secret
-
@PjoterS,谢谢!我刚刚阅读了有关 ConfigMap 的信息,这会有所帮助。但是,它不会解决我的问题。我能够将环境变量暴露给 pod。但是 pod 需要知道使用哪个 var,因为它不是无状态的 LB 服务。每个 pod 将针对同一种作业使用不同的值。还有那个主机,例如serviceA 必须绑定到每个部署的完全相同的值。例如。 www.serviceA.com/process,它应该读取varA,并用varA做逻辑,并将结果渲染回来。我发现我能够将 StatefulSet metadata.name(服务名称)设置为 env var。所以逻辑可以在应用程序中完成。
-
我仍然对你想要达到的目标感到困惑。您有具有特定 env 变量的 pod,并且您希望(基于该 env)将此特定 pod 路由到包含此 env var 的主机?你想根据这个环境变量路由流量吗?你提到你想通过
var1 to service-A.com/myservicea。您的意思是在 pod 将被重定向到此服务时添加 env 变量,或者更像是基于此 env 的路由?
标签: nginx kubernetes kubernetes-ingress