nginx - Kubernetes Ingress 子域 - Cloudfare 设置
问题描述
所以我有自己的网站,我正在运行,我想将我的一项服务迁移到我实际网站的子域下的当前集群,我遇到了一些麻烦。
我有一个从 NameCheap 购买的网站,我使用 Cloudfare 处理所有 DNS 内容。所以一切都设置正确。我似乎不知道该怎么做是让我的子域网站真正工作。
我尝试添加“A”和“CNAME”记录,但仍然无法正常工作。
我也尝试关注这个网站,但没有运气。我尝试过其他 stackoverflow 链接和 cloudfare 发布的链接。但我仍然无法工作: https ://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes
我的服务也正常运行。我的 pod 和部署也很好,没有显示任何错误,并且我的网站已经在另一个链接上运行,我正在删除该链接以节省资金。www.ecoders.ca。我为迁移我的服务所做的只是将内容添加到我的入口并将所有内容重新部署到我当前的集群。在我当前的集群上,我正在使用 NGINX。
LMK 如果需要更多信息。
入口.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
# nginx.ingress.kubernetes.io/rewrite-target: /
name: ingress
spec:
rules:
- host: www.foo.com
http:
paths:
- backend:
serviceName: nk-webapp-service
servicePort: 80
path: /
- backend:
serviceName: stockapp-service
servicePort: 80
path: /stock
- host: www.bar.foo.com <----------- this does not work
http:
paths:
- backend:
serviceName: ecoders-webapi-service
servicePort: 80
path: /
CNAME -> www -> foo.com
CNAME -> bar -> foo.com
A -> foo.com -> IP ADDRESS
服务设置
apiVersion: apps/v1
kind: Deployment
metadata:
name: ecoders-webapi
spec:
replicas: 1
selector:
matchLabels:
name: ecoders-webapi
template:
metadata:
labels:
name: ecoders-webapi
spec:
containers:
- name: webapi
image: astronik/webservice:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
apiVersion: v1
kind: Service
metadata:
name: ecoders-webapi-service
spec:
type: ClusterIP
ports:
- name: http
port: 80
targetPort: 8080
selector:
name: ecoders-webapi
更新
入口.yaml
- host: www.bar.foo.com
http:
paths:
- backend:
serviceName: ecoders-webapi-service
servicePort: 80
path: /
- host: bar.foo.com
http:
paths:
- backend:
serviceName: ecoders-webapi-service
servicePort: 80
path: /
我还添加了“www”链接版本,现在我得到了这个(在我注意到之前):
这与 TLS/SSL 有关吗?意思是我的子域没有证书?
新更新
因此,在 Cloudfare 仪表板上的“SSL/TLS”下。一旦我关闭它,我就可以毫无问题地访问我的子域。但是现在我如何让它完全运行呢?我的 Kubernetes 集群是否需要证书?
解决了
所以这一切都解决了,它与两个小问题有关。
问题1:
本质上,我需要更改我的 DNS 设置,添加 www。正在添加另一个子域。我删除了我之前创建的 2 个 CNAME 并执行了此操作。
A -> bar -> 10.0.0.0
A -> foo.com -> 10.0.0.0
问题2:
需要更新我的入口以删除此行
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
更新入口
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: ingress
spec:
rules:
- host: foo.com
http:
paths:
- backend:
serviceName: nk-webapp-service
servicePort: 80
path: /
- backend:
serviceName: stockapp-service
servicePort: 80
path: /stock
- host: bar.foo.com
http:
paths:
- backend:
serviceName: ecoders-web-service
servicePort: 80
path: /
解决方案
解决了
所以这一切都解决了,它与两个小问题有关。链接 Cloudfare 页面
问题1:
本质上,我需要更改我的 DNS 设置,添加 www。正在添加另一个子域。我删除了我之前创建的 2 个 CNAME 并执行了此操作。
A -> bar -> 10.0.0.0
A -> foo.com -> 10.0.0.0
问题2:
需要更新我的入口以删除此行
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
更新入口
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: ingress
spec:
rules:
- host: foo.com
http:
paths:
- backend:
serviceName: nk-webapp-service
servicePort: 80
path: /
- backend:
serviceName: stockapp-service
servicePort: 80
path: /stock
- host: bar.foo.com
http:
paths:
- backend:
serviceName: ecoders-web-service
servicePort: 80
path: /
推荐阅读
- c# - 无法将类字段加载到子类中
- scrapy - Scrapy请求url来自哪个url响应
- java - Java Combat Simulator - 我想模拟 1000 场战斗,以记录英雄赢/输的次数
- c# - Specflow SpecRun 找不到我的测试用例
- maven - Sonatype Nexus:无法将工件从 / 转移到 nexus,拒绝访问,ReasonPhrase:禁止
- reactjs - 在 react-redux 应用程序中使用上下文是否有意义?
- javascript - 当我展开顶级复合节点时,Cytoscape-expand-collapse 图挂起
- java - Spring thymeleaf 限制 th:each 循环中的文本输出
- microsoft-graph-api - 通过 Microsoft Graph 删除 One-Drive 项目的唯一权限
- html - 如何覆盖primeng样式?