我尝试使用AWS EC2将微服务公开到Internet。使用下面的部署和服务yaml文件。
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
strategy: {}
template:
metadata:
labels:
app: my-app
spec:
dnsPolicy: ClusterFirstWithHostNet
hostNetwork: true
containers:
- name: my-app
image: XXX
ports:
- name: my-app
containerPort: 3000
resources: {}
---
apiVersion: v1
kind: Service
metadata:
name: my-app
spec:
selector:
app: my-app
ports:
- name: my-app
nodePort: 32000
port: 3000
targetPort: 3000
type: NodePort
并创建一个入口资源。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: example.myApp.com
http:
paths:
- path: /my-app
backend:
serviceName: my-app
servicePort: 80
最后一步,我在aws仪表板中打开80端口,如何选择入口控制器来实现我的意图?
答案 0 :(得分:2)
servicePort
应该为3000,与服务对象中的port
相同。
但是请注意,在AWS上使用kubeadm设置集群并不是最好的方法:EKS为您提供带有外部负载均衡器和入口控制器的优化,配置良好的集群。