在本全面的 Ingress 指南中,您将学习如何在 Kubernetes** 上设置 Nginx Ingress控制器**并使用 DNS 配置 Ingress。
目前有两种 Nginx Ingress 控制器。
- kubernetes 社区的 Nginx Ingress 控制器
- Nginx Inc 开发的 Nginx Ingress 控制器
我们将使用 Kubernetes 社区 Nginx 控制器。
Ingress & Nginx Ingress 控制器架构
下面是使用 Nginx Ingress 控制器的 Kubernetes Ingress 的高级架构。在本指南中,我们将学习如何在体系结构中构建设置。
先决条件
- Kubernetes 集群
- Kubectl 已安装并已通过 Kubernetes 集群的身份验证。
- 对 kubernetes 集群的管理员访问权限。
- 指向 Ingress 控制器负载均衡器 IP 的有效域。(可选)
Nginx Ingress 控制器 Kubernetes 清单
本教程中使用的所有 kubernetes 清单都托管在 Github 存储库中。
您可以按照指南直接部署 YAML 文件。
git clone https://github.com/techiescamp/nginx-ingress-controller
首先,我们将通过使用 YAML 清单部署 Nginx 控制器来了解所有关联的 Kubernetes 对象。一旦我们理解了,我们将使用 Helm 图表进行部署。
注意:如果你想了解所有的 Nginx Ingress 控制器对象以及它们之间的关系,我建议你从 repo 中单独创建对象。了解其工作原理后,可以使用单个清单或 helm 图表来部署它。
如果要一次性部署所有对象,请在 termal 中打开克隆的存储库。
cd 进入 manifest 文件夹并执行以下命令。它将部署此博客中介绍的所有清单。
kubectl apply -f .
使用清单部署 Nginx Ingress 控制器
我们需要部署以下 Kubernetes 对象才能拥有一个有效的 Nginx 控制器。
ingress-nginx
命名空间- Nginx 准入控制器的服务帐户/角色/集群角色
- 验证 Webhook 配置
- 用于创建/更新 Webhook CA 捆绑包的作业
- Nginx 控制器部署的服务帐户/角色/集群角色
- Nginx 控制器配置图
- Nginx 控制器和准入控制器的服务
- Ingress 控制器部署
注意:您可以自己创建所有清单,也可以使用 Github 存储库。但是,我强烈建议您仔细检查每个清单并了解您正在部署的内容。
需要准入控制器和验证 Webhook
Kubernetes Admission Controller 是一小段代码,用于在创建 Kubernetes 对象之前对其进行验证或更新。在本例中,它是用于验证 Ingress 对象的准入控制器。准入控制器代码是侦听
8443
端口的 Nginx 控制器的一部分。
为什么需要 Ingress 控制器?
如果没有准入控制器,则可以部署**可能包含错误配置的 **Ingress 对象。错误的配置可能会破坏与 Ingress 控制器关联的所有 Ingress 规则。
使用准入控制器后,如果部署配置错误的 Ingress 对象,则会引发错误。这样,您可以确保您创建的 Ingress 对象具有正确的配置,并且不会破坏路由规则。
以下是 Nginx 的准入控制器的工作方式。
- 部署 Ingress YAML 时,验证允许会截获请求。
- 然后,Kubernetes API 根据准入 Webhook 终结点将 Ingress 对象发送到验证准入控制器服务终结点。
- Service 将请求发送到端口 8443 上的 Nginx 部署,以验证 ingress 对象。
- 然后,准入控制器向 k8s API 发送响应。
- 如果响应有效,API 将创建 ingress 对象。
现在,让我们从为 Ingress 控制器创建 Kubernetes 对象开始。
注意:在以下各节中,您不必复制和创建 YAML 文件。您可以直接使用存储库中的文件并部署它。我在这里给出了完整的 YAML 以供参考。
创建 Namespace
我们将把所有Nginx控制器对象部署在
ingress-nginx
命名空间中。
kubectl create ns ingress-nginx
创建 Admin 控制器角色和服务帐户
我们需要一个具有所需权限的 Role 和 ClusterRole,并绑定到
ingress-nginx-admission
服务帐户。
创建一个名为
admission-service-account.yaml
的文件。
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/component: admission-webhook
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx-admission
namespace: ingress-nginx
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
annotations:
app.kubernetes.io/component: admission-webhook
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx-admission
namespace: ingress-nginx
rules:
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- create
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app.kubernetes.io/component: admission-webhook
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx-admission
namespace: ingress-nginx
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: ingress-nginx-admission
subjects:
- kind: ServiceAccount
name: ingress-nginx-admission
namespace: ingress-nginx
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/component: admission-webhook
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx-admission
rules:
- apiGroups:
- admissionregistration.k8s.io
resources:
- validatingwebhookconfigurations
verbs:
- get
- update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/component: admission-webhook
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx-admission
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: ingress-nginx-admission
subjects:
- kind: ServiceAccount
name: ingress-nginx-admission
namespace: ingress-nginx
部署清单
kubectl apply -f admission-service-account.yaml
创建验证 Webhook 配置
创建一个名为
validating-webhook.yaml
的文件,并复制以下内容。
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
labels:
app.kubernetes.io/component: admission-webhook
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx-admission
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
service:
name: ingress-nginx-controller-admission
namespace: ingress-nginx
path: /networking/v1/ingresses
failurePolicy: Fail
matchPolicy: Equivalent
name: validate.nginx.ingress.kubernetes.io
rules:
- apiGroups:
- networking.k8s.io
apiVersions:
- v1
operations:
- CREATE
- UPDATE
resources:
- ingresses
sideEffects: None
创建
ValidatingWebhookConfiguration
kubectl apply -f validating-webhook.yaml
部署 Job 更新 Webhook 证书
ValidatingWebhookConfiguration
只在 HTTPS 上有效,所以它需要一个 CA bundle。
我们使用 kube-webhook-certgen 与第一个 job 一起生成 CA 证书包。生成的CA证书存储在一个名为
ingress-nginx-admission
的秘密文件中。
创建一个名为
jobs.yaml
的文件,并复制以下内容:
---
apiVersion: batch/v1
kind: Job
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx-admission-create
namespace: ingress-nginx
spec:
template:
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx-admission-create
spec:
containers:
- args:
- create
- --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc
- --namespace=$(POD_NAMESPACE)
- --secret-name=ingress-nginx-admission
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0
imagePullPolicy: IfNotPresent
name: create
securityContext:
allowPrivilegeEscalation: false
nodeSelector:
kubernetes.io/os: linux
restartPolicy: OnFailure
securityContext:
runAsNonRoot: true
runAsUser: 2000
serviceAccountName: ingress-nginx-admission
---
apiVersion: batch/v1
kind: Job
metadata:
labels:
app.kubernetes.io/component: admission-webhook
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx-admission-patch
namespace: ingress-nginx
spec:
template:
metadata:
labels:
app.kubernetes.io/component: admission-webhook
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx-admission-patch
spec:
containers:
- args:
- patch
- --webhook-name=ingress-nginx-admission
- --namespace=$(POD_NAMESPACE)
- --patch-mutating=false
- --secret-name=ingress-nginx-admission
- --patch-failure-policy=Fail
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0
imagePullPolicy: IfNotPresent
name: patch
securityContext:
allowPrivilegeEscalation: false
nodeSelector:
kubernetes.io/os: linux
restartPolicy: OnFailure
securityContext:
runAsNonRoot: true
runAsUser: 2000
serviceAccountName: ingress-nginx-admission
创建 jobs
kubectl apply -f jobs.yaml
使用以下命令验证 jobs 完成情况。
一旦作业被执行,就可以describe
ValidatingWebhookConfigurationand
。
kubectl describe ValidatingWebhookConfiguration ingress-nginx-admission
创建 Ingress 控制器角色和服务帐户
创建名为
ingress-service-account.yaml
的文件,并复制以下内容。
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/component: admission-webhook
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx
namespace: ingress-nginx
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx
namespace: ingress-nginx
rules:
- apiGroups:
- ""
resources:
- namespaces
verbs:
- get
- apiGroups:
- ""
resources:
- configmaps
- pods
- secrets
- endpoints
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- services
verbs:
- get
- list
- watch
- apiGroups:
- networking.k8s.io
resources:
- ingresses
verbs:
- get
- list
- watch
- apiGroups:
- networking.k8s.io
resources:
- ingresses/status
verbs:
- update
- apiGroups:
- networking.k8s.io
resources:
- ingressclasses
verbs:
- get
- list
- watch
- apiGroups:
- ""
resourceNames:
- ingress-controller-leader
resources:
- configmaps
verbs:
- get
- update
- apiGroups:
- ""
resources:
- configmaps
verbs:
- create
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx
namespace: ingress-nginx
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: ingress-nginx
subjects:
- kind: ServiceAccount
name: ingress-nginx
namespace: ingress-nginx
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx
rules:
- apiGroups:
- ""
resources:
- configmaps
- endpoints
- nodes
- pods
- secrets
- namespaces
verbs:
- list
- watch
- apiGroups:
- ""
resources:
- nodes
verbs:
- get
- apiGroups:
- ""
resources:
- services
verbs:
- get
- list
- watch
- apiGroups:
- networking.k8s.io
resources:
- ingresses
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
- apiGroups:
- networking.k8s.io
resources:
- ingresses/status
verbs:
- update
- apiGroups:
- networking.k8s.io
resources:
- ingressclasses
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: ingress-nginx
subjects:
- kind: ServiceAccount
name: ingress-nginx
namespace: ingress-nginx
部署清单
kubectl apply -f ingress-service-account.yaml
创建 Configmap
有了configmap,你可以自定义 Nginx 的设置。例如,可以设置自定义 headers 和大多数 Nginx 设置。
有关所有支持的配置,请参阅官方社区文档。
创建名为
services.yaml
的文件并复制以下内容。
<span style="background-color:var(--cs-color-contrast-200)"><span style="color:#000000"><code>---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx-controller
namespace: ingress-nginx
spec:
externalTrafficPolicy: Local
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- appProtocol: http
name: http
port: 80
protocol: TCP
targetPort: http
- appProtocol: https
name: https
port: 443
protocol: TCP
targetPort: https
selector:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx-controller-admission
namespace: ingress-nginx
spec:
ports:
- appProtocol: https
name: https-webhook
port: 443
targetPort: webhook
selector:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
type: ClusterIP</code></span></span>
创建服务。
kubectl apply -f services.yaml
ingress-nginx-controller
service 在正在部署的相应云平台中创建负载均衡器。
您可以使用以下命令获取负载均衡器 IP/DNS。
kubectl --namespace ingress-nginx get services -o wide -w ingress-nginx-controller
注意:对于每个云提供商,您可以使用特定的注释将静态 IP 地址和其他配置映射到 Loadbalancer。
创建 Ingress Controller 部署
创建名为
deployment.yaml
的文件并复制以下内容。
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
name: ingress-nginx-controller
namespace: ingress-nginx
spec:
minReadySeconds: 0
revisionHistoryLimit: 10
selector:
matchLabels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
template:
metadata:
labels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
spec:
containers:
- args:
- /nginx-ingress-controller
- --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller
- --election-id=ingress-controller-leader
- --controller-class=k8s.io/ingress-nginx
- --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
- --validating-webhook=:8443
- --validating-webhook-certificate=/usr/local/certificates/cert
- --validating-webhook-key=/usr/local/certificates/key
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: LD_PRELOAD
value: /usr/local/lib/libmimalloc.so
image: registry.k8s.io/ingress-nginx/controller:v1.9.5
imagePullPolicy: IfNotPresent
lifecycle:
preStop:
exec:
command:
- /wait-shutdown
livenessProbe:
failureThreshold: 5
httpGet:
path: /healthz
port: 10254
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
name: controller
ports:
- containerPort: 80
name: http
protocol: TCP
- containerPort: 443
name: https
protocol: TCP
- containerPort: 8443
name: webhook
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 10254
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
resources:
requests:
cpu: 100m
memory: 90Mi
securityContext:
allowPrivilegeEscalation: true
capabilities:
add:
- NET_BIND_SERVICE
drop:
- ALL
runAsUser: 101
volumeMounts:
- mountPath: /usr/local/certificates/
name: webhook-cert
readOnly: true
dnsPolicy: ClusterFirst
nodeSelector:
kubernetes.io/os: linux
serviceAccountName: ingress-nginx
terminationGracePeriodSeconds: 300
volumes:
- name: webhook-cert
secret:
secretName: ingress-nginx-admission
创建部署。
kubectl apply -f deployment.yaml
要确保部署正常工作,请检查容器状态。
kubectl get pods -n ingress-nginx
验证 Ingress Controller 部署
您可以使用服务创建的 LoadBlancer 终结点验证 Ingress 控制器部署。
Nginx Ingress 控制器具有默认后端。Ingress 中没有条目的所有请求都将转到此默认后端。
我们将使用默认后端验证控制器。
获取 Loadbalancer 终端节点,尝试使用它。您应该收到 404 错误,如下所示。
现在尝试使用 curl 访问 /heathz url,如下所示。你应该得到 200 的回复。将 <LOAD-BALANCER-ENDPOINT> 替换为您的 Loadbalancer 终端节点。
curl http://<LOAD-BALANCER-ENDPOINT>/healthz
Nginx Ingress Controller Helm 部署
如果您是 Helm 用户,则可以使用社区 Helm 图表部署 Ingress Controller。 ValidatingWebhookConfiguration 默认处于禁用状态。
部署 helm 图表。如果
ingress-nginx
不存在,它将创建命名空间。
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace
验证 helm 版本。
helm list -n ingress-nginx
若要清理资源,请卸载该版本。
helm uninstall ingress-nginx -n ingress-nginx
将域名映射到 Nginx Ingress Loadbalancer IP
Ingress 的主要目标是接收运行在 Kubernetes 上的服务的外部流量。理想情况下,在项目中,DNS 将映射到 Ingress 控制器负载均衡器 IP。
这可以通过具有您拥有的域名的相应 DNS 提供商来完成。
信息:对于面向 Internet 的应用,它将是指向负载均衡器的公共 IP 的公共 DNS。如果是内部应用,则它将是映射到专用负载均衡器 IP 的组织专用 DNS。
单个 DNS 映射
您可以将单个域作为 A 记录直接映射到负载均衡器 IP。使用此选项,Ingress 控制器只能有一个域和多个基于路径的流量路由。
例如
www.example.com --> Loadbalancer IP
您还可以使用此模型进行基于路径的路由。
几个例子,
http://www.example.com/app1
http://www.example.com/app2
http://www.example.com/app1/api
http://www.example.com/app2/api
通配符 DNS 映射
如果将通配符 DNS 映射到负载均衡器,则可以通过 Ingress 获得动态 DNS 终结点。
在 DNS 记录中添加通配符条目后,需要在 Ingress 对象中提及所需的 DNS,Nginx Ingress 控制器将负责将其路由到所需的服务终结点。
例如,检查以下两个映射。
*.example.com --> Loadbalancer IP
*.apps.example.com --> Loadbalancer IP
这样,**您可以通过单个 **Ingress 控制器拥有多个动态子域,并且每个 DNS 都可以拥有自己的基于路径的路由。
几个例子,
#URL one
http://demo1.example.com/api
http://demo1.example.com/api/v1
http://demo1.example.com/api/v2
#app specific urls
http://grafana.apps.example.com
http://prometheus.apps.example.com
#URL two
http://demo2.apps.example.com/api
http://demo2.apps.example.com/api/v1
http://demo2.apps.example.com/api/v2
出于演示目的,我已将通配符 DNS 映射到 LoadBalancer IP。根据您的 DNS 提供商,您可以添加 DNS 记录。
下图显示了我用于此博客演示的 DNS 记录。我使用了 EKS,因此我有一个网络负载均衡器终端节点的 DNS,而不是 Loadnbalacer IP,它将是一个 CNAME。在 GKE 的情况下,您将获得一个 IP,在这种情况下,您需要创建一个 A 记录。
部署 Demo 应用程序
为了测试 Ingress ,我们将部署一个演示应用程序,并向其添加一个 ClusterIp 服务。此应用程序只能在群集中访问,而不能进入。
**步骤1: **创建名为 dev 的命名空间
kubectl create namespace dev
步骤2:创建名为hello-app.yaml的文件,并复制以下内容。
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-app
namespace: dev
spec:
selector:
matchLabels:
app: hello
replicas: 2
template:
metadata:
labels:
app: hello
spec:
containers:
- name: hello
image: "gcr.io/google-samples/hello-app:2.0"
步骤3:使用 kubectl 创建部署
kubectl create -f hello-app.yaml
检查部署状态。
kubectl get deployments -n dev
步骤5:创建一个名为并复制以下内容的文件并保存该文件。
hello-app-service.yaml
apiVersion: v1
kind: Service
metadata:
name: hello-service
namespace: dev
labels:
app: hello
spec:
type: ClusterIP
selector:
app: hello
ports:
- port: 80
targetPort: 8080
protocol: TCP
步骤6:使用 kubectl 创建服务。
kubectl create -f hello-app-service.yaml
为应用程序创建 Ingress 对象
现在,让我们创建一个 Ingress 对象,以使用 DNS 访问我们的 hello 应用。Ingress 对象只不过是一组路由规则。
如果你想知道ingress对象是如何连接到 Nginx 控制器的,ingress 控制器 pod 连接到 ingress API来检查规则,并相应地更新它的 nginx .conf。
因为我用 DNS 提供程序映射了通配符DNS (*.apps.mlopshub.com),所以我将使用 demo.apps.mlopshub.com 指向 hello app 服务。
步骤1:创建一个名为
ingress.yaml文件
步骤2:复制以下内容并保存文件。
替换
demo.apps.mlopshub.com
dev
dev
为您的域名。此外,我们在命名空间中创建此Ingress 对象,因为 hello 应用正在命名空间中运行。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress
namespace: dev
spec:
ingressClassName: nginx
rules:
- host: "demo.apps.mlopshub.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: hello-service
port:
number: 80
步骤3:描述为检查配置而创建的 Ingress 对象。
kubectl describe ingress -n dev
现在,如果我尝试访问域
demo.apps.mlopshub.com
,我将能够访问hello应用程序,如下所示。(您应该将其替换为您的域名)
您可能会在浏览器中遇到 https 错误。在这种情况下,您可以使用 curl 命令来验证 Ingress 端点。
curl demo.apps.mlopshub.com
结论
在本文中,我们学习了如何设置 Nginx Ingress 控制器。
这很容易上手。但是,对于项目实现,请确保您完成所有 Nginx 配置并根据要求进行调整。
使用 Nginx 控制器配置映射,您可以配置所有 Nginx 设置,而无需重新部署控制器。
版权归原作者 yule.yang 所有, 如有侵权,请联系我们删除。