如何使用Ingress Nginx控制器在内部将流量路由到专用吊舱



问题:我目前正在EKS集群中使用ingress nginx将流量路由到需要公共访问的服务。

我的用例:我有一些服务要部署在同一个集群中,但不希望它们具有公共访问权限。我只想让pod与集群中的所有其他服务进行通信。这些pod是私有的,因为它们是后端服务,只需要pod到pod的通信。如何为此目的修改入口资源?

集群体系结构:所有服务都在集群的私有子网中,而负载均衡器在公共子网中

附加说明:我正在使用external-dns为托管区域动态创建子域。托管区域是公共

感谢

以下是我的公共服务service.ymlingress.yml。我想修改私人服务的这些文件

服务.yml

apiVersion: v1
kind: Service
metadata:
name: myapp
namespace: myapp 
annotations:
external-dns.alpha.kubernetes.io/hostname: myapp.dev.com
spec:
ports:
- port: 80
targetPort: 3000
selector:
app: myapp

入口.yml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp
namespace: myapp 
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: "nginx"
labels:
app: myapp
spec:
tls:
- hosts:
- myapp.dev.com
secretName: myapp-staging
rules:
- host: myapp.dev.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: 'myapp'
port:
number: 80

由此,您所拥有的Ingress应该已经可以工作,并且您的服务应该是私有的(如果您在公共云集群中这样设置(,除了Ingress本身。您可以更新ConfigMap以使用PROXY协议,这样您就可以将代理信息传递给入口控制器:

kind: ConfigMap
apiVersion: v1
metadata:
name: nginx-config
namespace: nginx-ingress
data:
proxy-protocol: "True"
real-ip-header: "proxy_protocol"
set-real-ip-from: "0.0.0.0/0"

然后:kubectl apply -f common/nginx-config.yaml

现在,您可以使用指定的名称部署任何想要私有的应用程序(例如,提供的yaml文件中的myapp服务(。

如果你是Kubernetes Networking的新手,那么这篇文章对你或Kubernete官方文档都很有用

在这里你可以找到其他可能对你有用的ELB注释

相关内容

  • 没有找到相关文章

最新更新