gpt4 book ai didi

amazon-web-services - Kubernetes 上的入口资源与 NGINX 入口 Controller

转载 作者:行者123 更新时间:2023-12-02 11:57:32 25 4
gpt4 key购买 nike

我正在 AWS EKS 上设置 NGINX 入口 Controller 。

我浏览了 k8s Ingress 资源,了解我们使用例如文件 def 将 LB 端口映射到 k8s 服务端口非常有帮助。我安装了 nginx Controller 直到 pre-requisite step .然后教程指导我创建一个 入口资源。

https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/#create-an-ingress-resource

但下面它告诉我申请 服务 配置。我对这个特定于提供商的步骤感到困惑。这在 kind, version, spec 方面有所不同定义(服务与入口)。

https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/aws/service-l7.yaml

我在这里遗漏了什么?

最佳答案

这个概念起初有点难以理解。 Nginx 入口 Controller 不过是 LoadBalancer 类型的服务。 .所做的是为您的服务提供面向公众的端点。分配给该服务的 IP 地址可以将流量路由到多个服务。因此,您可以继续将您的服务定义为 ClusterIP并通过 Nginx 入口 Controller 公开它们。
这是一个更好地描述这个概念的图表:
nginx-ingress
image source
需要注意的是,如果你已经为你的服务获取了一个静态 IP,你需要将它分配给你的 Nginx 入口 Controller 。那么什么是入口? Ingress 基本上是一种让您与 Nginx 入口 Controller 通信的方式,如何将传入的流量引导到您的 LB 公共(public) IP。现在很清楚,您有一个负载均衡器服务和多个入口资源。每个入口对应于一个服务,该服务可以根据您定义服务的方式进行更改,但您明白了。
让我们进入一些 yaml 代码。如前所述,无论您拥有多少入口资源,您都需要入口 Controller 服务。所以继续申请this code在您的 EKS 集群上。
现在让我们看看如何通过 Nginx-ingress 向世界公开您的 pod。假设你有一个 wordpress部署。你可以定义一个简单的ClusterIP此应用程序的服务:

apiVersion: v1
kind: Service
metadata:
labels:
app: ${WORDPRESS_APP}
namespace: ${NAMESPACE}
name: ${WORDPRESS_APP}
spec:
type: ClusterIP
ports:
- port: 9000
targetPort: 9000
name: ${WORDPRESS_APP}
- port: 80
targetPort: 80
protocol: TCP
name: http
- port: 443
targetPort: 443
protocol: TCP
name: https
selector:
app: ${WORDPRESS_APP}
这将为您的 wordpress 创建一个服务。集群外无法访问的应用程序。现在您可以创建一个入口资源来公开此服务:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: ${NAMESPACE}
name: ${INGRESS_NAME}
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
spec:
tls:
- hosts:
- ${URL}
secretName: ${TLS_SECRET}
rules:
- host: ${URL}
http:
paths:
- path: /
backend:
serviceName: ${WORDPRESS_APP}
servicePort: 80
现在如果你运行 kubectl get svc您可以看到以下内容:
NAME                      TYPE          CLUSTER-IP      EXTERNAL-IP    PORT(S)                   AGE
wordpress ClusterIP 10.23.XXX.XX <none> 9000/TCP,80/TCP,443/TCP 1m
nginx-ingress-controller LoadBalancer 10.23.XXX.XX XX.XX.XXX.XXX 80:X/TCP,443:X/TCP 1m
现在您可以访问您的 wordpress通过定义的 URL 提供服务,该 URL 映射到入口 Controller LB 服务的公共(public) IP。

关于amazon-web-services - Kubernetes 上的入口资源与 NGINX 入口 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54932805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com