我有传统的服务器应用程序栈:
App可通过https://example.com实现
我的用户希望独立的个人应用程序(为了高可用性)通过连接字符串进行完全数据库访问。
因此,我们需要服务器应用程序栈:-个人(隔离)数据库-个人(隔离)应用程序-个人(隔离)微服务
应用程序必须由http://cloud.example.com/userX提供,userX是用户的登录名
我认为每个用户都应该有自己的名称空间。因此,个人数据库、应用程序和微服务器属于此命名空间。
另外,我现在为所有用户提供了一个名为“名称空间:kube”的信息:
# ? apiVersion: networking.k8s.io/v1beta1
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: mgrs
namespace: kube-public
annotations:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- cloud.example.com
secretName: cloud-tls
rules:
- host: cloud.example.com
http:
paths:
- path: /user1
backend:
serviceName: user1-service
servicePort: 80
- path: /user2
backend:
serviceName: user2-service
servicePort: 80
...怎么可能和库伯内特斯在一起?也许我需要为每个用户设置几个入口?
也许它更容易使路径userX.example.com而不是cloud.example.com/userX?
发布于 2020-06-09 14:24:45
一种方法是使用一个Ngnix作为服务的动态代理,因为云将一个ConfigMap添加到用户服务中,
如果使用一个命名空间并将用户名放入服务名称,则应使用以下配置:
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config-dns-file
data:
nginx.conf: |
server {
listen 80;
resolver kube-dns.kube-system.svc.cluster.local valid=5s;
location ~ /(.*) {
proxy_pass http://$1-service.default.svc.cluster.local;
}
}如果每个用户使用一个名称空间,并将用户名放入服务名称,则应该使用以下配置:
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config-dns-file
data:
nginx.conf: |
server {
listen 80;
resolver kube-dns.kube-system.svc.cluster.local valid=5s;
location ~ /(.*) {
proxy_pass http://$1-service.$1.svc.cluster.local;
}
}与此相一致的另一种可能性是使用Nginx-Ingress控制器,并利用Ngnix作为入口控制器的优势,以及应用某些配置来实现您希望的功能的可能性。
https://stackoverflow.com/questions/62275555
复制相似问题