添加没有 www 的主机不适用于 Ingress 资源
Adding host without www not working with Ingress resource
我有几个问题
当我们对入口资源进行更改时,是否存在必须删除资源并重新创建资源的情况,或者 kubectl apply -f <file_name>
就足够了吗?
当我在没有 www i.e. (my-domain.in)
的情况下添加主机属性时,我无法访问我的应用程序,但是使用 www i.e. (www.my-domain.in)
它可以工作,有什么区别?
下面是我的入口资源
当我将主机设置为 my-domain.in
时,我无法访问我的应用程序,但是当我将主机设置为 www.my-domain.in
时,我可以访问该应用程序。
我的域在不同的提供商上,我添加了指向我的 ALB 的 DNS 名称的 CNAME (www)。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: eks-learning-ingress
namespace: production
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/certificate-arn: arn:aws:a982529496:cerd878ef678df
labels:
app: eks-learning-ingress
spec:
rules:
- host: my-domain.in **does not work**
http:
paths:
- path: /*
backend:
serviceName: eks-learning-service
servicePort: 80
- 先回答你的问题1:
When we make changes to ingress resource, are there any cases where we have to delete the resource and re-create it again or is kubectl apply -f sufficient?
理论上是的,kubectl apply
是正确的方式,要么显示ingress unchanged
,要么显示ingress configured
。
其他有效的 documented 选项是 kubectl edit ingress INGRESS_NAME
如果输出有效,它会在版本末尾保存并应用。
我说理论是因为会出现bug,所以我们不能完全丢弃它,但bug是最坏的情况。
- 现在比较模糊的问题 2:
When I add the host attribute without www i.e. (my-domain.in), I am not able to access my application but with www i.e. (www.my-domain.in) it works, what's the difference?
要排除故障,我们需要隔离进程,就像在一条链中,我们必须找到哪个 link 坏了。一一:
Endpoint > Domain Provider> Cloud Provider > Ingress > Service > Pod.
- DNS 解析(域名提供商)
- DNS 解析(云提供商)
- Kubernetes Ingress(入口 > 服务 > Pod)
DNS 解析
域名提供商:
在互联网上,回答 my-domain.in
的就是您的域名提供商。
my-domain.in
及其子域(如 www.my-domain.in
或 admin.my-domain.in
)的规则是什么?
你说"domain is on a different provider and I have added CNAME (www) pointing to DNS name of my ALB."
my-domain.in
和 my-domain.in
是否被本能地重定向到 ALB 地址?
- 它如何处理 URL 子域?请求如何传递到您的云端?
云提供商:
好的,云提供商正在正确清晰地接收请求。
- 您的 ALB 是否有针对子域或路径请求的通用或特定规则?
- 使用另一台主机、具有 Web 服务器的不同 VM 进行测试。
- Check ALB Troubleshooting Page
Kubernetes 入口
通常我们会从这部分开始进行故障排除,但由于您提到它适用于 www.my-domain.in
,我们可以假定您的服务、部署甚至入口结构都在正常工作。
您可以查看 Types of Ingress Docs 以获取有关其工作原理的一些示例。
底线: 我相信你的 DNS 有一条通往 www.my-domain.in
的路线,但根域没有通往你的云提供商的路线,这就是为什么它只在你为 www.
启用入口
我有几个问题
当我们对入口资源进行更改时,是否存在必须删除资源并重新创建资源的情况,或者
kubectl apply -f <file_name>
就足够了吗?当我在没有
www i.e. (my-domain.in)
的情况下添加主机属性时,我无法访问我的应用程序,但是使用www i.e. (www.my-domain.in)
它可以工作,有什么区别?
下面是我的入口资源
当我将主机设置为 my-domain.in
时,我无法访问我的应用程序,但是当我将主机设置为 www.my-domain.in
时,我可以访问该应用程序。
我的域在不同的提供商上,我添加了指向我的 ALB 的 DNS 名称的 CNAME (www)。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: eks-learning-ingress
namespace: production
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/certificate-arn: arn:aws:a982529496:cerd878ef678df
labels:
app: eks-learning-ingress
spec:
rules:
- host: my-domain.in **does not work**
http:
paths:
- path: /*
backend:
serviceName: eks-learning-service
servicePort: 80
- 先回答你的问题1:
When we make changes to ingress resource, are there any cases where we have to delete the resource and re-create it again or is kubectl apply -f sufficient?
理论上是的,kubectl apply
是正确的方式,要么显示ingress unchanged
,要么显示ingress configured
。
其他有效的 documented 选项是 kubectl edit ingress INGRESS_NAME
如果输出有效,它会在版本末尾保存并应用。
我说理论是因为会出现bug,所以我们不能完全丢弃它,但bug是最坏的情况。
- 现在比较模糊的问题 2:
When I add the host attribute without www i.e. (my-domain.in), I am not able to access my application but with www i.e. (www.my-domain.in) it works, what's the difference?
要排除故障,我们需要隔离进程,就像在一条链中,我们必须找到哪个 link 坏了。一一:
Endpoint > Domain Provider> Cloud Provider > Ingress > Service > Pod.
- DNS 解析(域名提供商)
- DNS 解析(云提供商)
- Kubernetes Ingress(入口 > 服务 > Pod)
DNS 解析
域名提供商:
在互联网上,回答 my-domain.in
的就是您的域名提供商。
my-domain.in
及其子域(如www.my-domain.in
或admin.my-domain.in
)的规则是什么? 你说"domain is on a different provider and I have added CNAME (www) pointing to DNS name of my ALB."my-domain.in
和my-domain.in
是否被本能地重定向到 ALB 地址?- 它如何处理 URL 子域?请求如何传递到您的云端?
云提供商:
好的,云提供商正在正确清晰地接收请求。
- 您的 ALB 是否有针对子域或路径请求的通用或特定规则?
- 使用另一台主机、具有 Web 服务器的不同 VM 进行测试。
- Check ALB Troubleshooting Page
Kubernetes 入口
通常我们会从这部分开始进行故障排除,但由于您提到它适用于 www.my-domain.in
,我们可以假定您的服务、部署甚至入口结构都在正常工作。
您可以查看 Types of Ingress Docs 以获取有关其工作原理的一些示例。
底线: 我相信你的 DNS 有一条通往 www.my-domain.in
的路线,但根域没有通往你的云提供商的路线,这就是为什么它只在你为 www.