python 应用程序的 AWS ALB 入口控制器和入口资源
AWS ALB Ingress Controller and ingress resource for python app
我已经根据此 link https://kubernetes.io/blog/2019/07/23/get-started-with-kubernetes-using-python/ 创建了 python 应用程序。我想配置 AWS ALB Ingress Controller/nginx controller
和 ingress resource
但我无法理解该文件。我没有在 ec2-instance 上使用 Kops 的域,想在没有任何域的情况下配置它。任何帮助将不胜感激。
部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-python
spec:
selector:
matchLabels:
app: hello-python
template:
metadata:
labels:
app: hello-python
spec:
containers:
- name: hello-python
image: hello-python:latest
ports:
- containerPort: 5000
服务
apiVersion: v1
kind: Service
metadata:
name: hello-python-service
spec:
selector:
app: hello-python
type: NodePort
ports:
- nodePort: 30010
port: 6000
targetPort: 5000
Ingress 通过 nginx ingress 控制器将上面 hello-python-service
之类的服务绑定到 ALB。
它通过将虚拟主机映射到您的服务来做到这一点,以便 nginx 知道如何路由请求。
示例:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: python-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: ingress-controller-nginx
nginx.ingress.kubernetes.io/default-backend: hello-python-service
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: python.trash.net
http:
paths:
- path: /?(.*)
backend:
serviceName: hello-python-service
servicePort: 6000
将生成 class Ingress
的资源,如下所示:
python-ingress python.trash.net internal-0358a08f01385b2812-331143124.us-east-2.elb.amazonaws.com 80 10s
像这样发出 curl 请求:
curl -H "Host: python.trash.net" http://internal-0358a08f01385b2812-331143124.us-east-2.elb.amazonaws.com
你的 hello python 应用程序应该会回复你。
这显然取决于您是否在 EKS 集群中部署和配置了 nginx 入口控制器。
入口的关键要点是:它取代了对 LoadBalancer 类型的专用服务的需求,以提供对您的服务的外部访问。相反,Ingress 通过在 Ingress 的清单文件中配置的虚拟主机将来自集群外部的流量映射到集群中的服务。
我已经根据此 link https://kubernetes.io/blog/2019/07/23/get-started-with-kubernetes-using-python/ 创建了 python 应用程序。我想配置 AWS ALB Ingress Controller/nginx controller
和 ingress resource
但我无法理解该文件。我没有在 ec2-instance 上使用 Kops 的域,想在没有任何域的情况下配置它。任何帮助将不胜感激。
部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-python
spec:
selector:
matchLabels:
app: hello-python
template:
metadata:
labels:
app: hello-python
spec:
containers:
- name: hello-python
image: hello-python:latest
ports:
- containerPort: 5000
服务
apiVersion: v1
kind: Service
metadata:
name: hello-python-service
spec:
selector:
app: hello-python
type: NodePort
ports:
- nodePort: 30010
port: 6000
targetPort: 5000
Ingress 通过 nginx ingress 控制器将上面 hello-python-service
之类的服务绑定到 ALB。
它通过将虚拟主机映射到您的服务来做到这一点,以便 nginx 知道如何路由请求。
示例:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: python-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: ingress-controller-nginx
nginx.ingress.kubernetes.io/default-backend: hello-python-service
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: python.trash.net
http:
paths:
- path: /?(.*)
backend:
serviceName: hello-python-service
servicePort: 6000
将生成 class Ingress
的资源,如下所示:
python-ingress python.trash.net internal-0358a08f01385b2812-331143124.us-east-2.elb.amazonaws.com 80 10s
像这样发出 curl 请求:
curl -H "Host: python.trash.net" http://internal-0358a08f01385b2812-331143124.us-east-2.elb.amazonaws.com
你的 hello python 应用程序应该会回复你。
这显然取决于您是否在 EKS 集群中部署和配置了 nginx 入口控制器。
入口的关键要点是:它取代了对 LoadBalancer 类型的专用服务的需求,以提供对您的服务的外部访问。相反,Ingress 通过在 Ingress 的清单文件中配置的虚拟主机将来自集群外部的流量映射到集群中的服务。