我可以为每个 user/firm 配备一个 K8s pod 吗?
Can I have a K8s pod per user/firm?
有没有办法让每个 user/per 公司有一个 K8s pod?我意识到,每个 user/per 公司分组正在将业务级别语义与基础架构混合在一起,但我说出于监管原因等原因,我有这种需求,以将事情分开。那么有没有一种方法可以在用户第一次登录时动态创建一个 pod,并保留这个 pod 引用并将任何进一步的请求路由到相关的 pod,该 pod 将托管一组容器,每个 运行 一个实例其中一个模块。
- 这可能吗?
- 如果可能,那些标识符是什么
可以即时注入到 pod 中,我可以用它来识别这是
USER-A-POD 与 USER_B_POD 或 FIRM_A_POD 与 FIRM_B_POD?
实际上,我需要一个 pod 模板来帮助我创建相同 pods 的 1 个副本,但它们唯一不同的地方是它们只提供与一个 user/one 公司相关的流量。
通常,如果您想将流量发送到特定的 pod,请说来自 Kubernetes Service you would use Labels and Selectors。例如,在服务中使用选择器app: usera-app
:
apiVersion: v1
kind: Service
metadata:
name: usera-service
spec:
selector:
app: usera-app
ports:
- protocol: TCP
port: 80
targetPort: 80
然后说如果 Deployment 代表你的 pods,使用标签 app: usera-app
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: usera-deployment
spec:
selector:
matchLabels:
app: usera-app
replicas: 2
template:
metadata:
labels:
app: usera-app
spec:
containers:
- name: myservice
image: nginx
ports:
- containerPort: 80
更多信息here
如何分配 pods 和部署取决于您以及您可能使用的任何配置。如果您想在 deployments/pods 中强制创建一些标签,您可以查看 MutatingAdminssionWebhooks。
如果您正在寻找促进这一切的项目,您可以看看:
- Gatekeeper which is an implementation of the Open Policy Agent 用于 Kubernetes 录取。 (撰写本文时仍处于 alpha 阶段)
可以帮助您进行认证和准入机制的其他工具(必须针对标签进行调整):
是的,您可以使用命名空间为每个用户创建多个虚拟集群。
https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
命名空间是在用户之间划分集群的方式。
有没有办法让每个 user/per 公司有一个 K8s pod?我意识到,每个 user/per 公司分组正在将业务级别语义与基础架构混合在一起,但我说出于监管原因等原因,我有这种需求,以将事情分开。那么有没有一种方法可以在用户第一次登录时动态创建一个 pod,并保留这个 pod 引用并将任何进一步的请求路由到相关的 pod,该 pod 将托管一组容器,每个 运行 一个实例其中一个模块。
- 这可能吗?
- 如果可能,那些标识符是什么 可以即时注入到 pod 中,我可以用它来识别这是 USER-A-POD 与 USER_B_POD 或 FIRM_A_POD 与 FIRM_B_POD? 实际上,我需要一个 pod 模板来帮助我创建相同 pods 的 1 个副本,但它们唯一不同的地方是它们只提供与一个 user/one 公司相关的流量。
通常,如果您想将流量发送到特定的 pod,请说来自 Kubernetes Service you would use Labels and Selectors。例如,在服务中使用选择器app: usera-app
:
apiVersion: v1
kind: Service
metadata:
name: usera-service
spec:
selector:
app: usera-app
ports:
- protocol: TCP
port: 80
targetPort: 80
然后说如果 Deployment 代表你的 pods,使用标签 app: usera-app
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: usera-deployment
spec:
selector:
matchLabels:
app: usera-app
replicas: 2
template:
metadata:
labels:
app: usera-app
spec:
containers:
- name: myservice
image: nginx
ports:
- containerPort: 80
更多信息here
如何分配 pods 和部署取决于您以及您可能使用的任何配置。如果您想在 deployments/pods 中强制创建一些标签,您可以查看 MutatingAdminssionWebhooks。
如果您正在寻找促进这一切的项目,您可以看看:
- Gatekeeper which is an implementation of the Open Policy Agent 用于 Kubernetes 录取。 (撰写本文时仍处于 alpha 阶段)
可以帮助您进行认证和准入机制的其他工具(必须针对标签进行调整):
是的,您可以使用命名空间为每个用户创建多个虚拟集群。
https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
命名空间是在用户之间划分集群的方式。