Docker Kubernetes入口网站外部IP的反向DNS

Docker Kubernetes入口网站外部IP的反向DNS,docker,kubernetes,dns,kubernetes-ingress,Docker,Kubernetes,Dns,Kubernetes Ingress,我需要帮助为Kubernetes Ingress网站的外部IP创建一个反向区域,或者做一些类似反向区域的功能 基本上我需要当我在浏览器中输入入口的IP时,将我重定向到域名 谢谢你的帮助 apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: prueba-web-ingress annotations: nginx.ingress.kubernetes.io/permanent-redirect: http

我需要帮助为Kubernetes Ingress网站的外部IP创建一个反向区域,或者做一些类似反向区域的功能

基本上我需要当我在浏览器中输入入口的IP时,将我重定向到域名

谢谢你的帮助

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: prueba-web-ingress
 annotations:
  nginx.ingress.kubernetes.io/permanent-redirect: http://example.com
  networking.gke.io/managed-certificates: certificateexample
  kubernetes.io/ingress.global-static-ip-name: test
  kubernetes.io/ingress.allow-http: "false"
spec:
    backend:
           serviceName: prueba-web
           servicePort: 80

尝试以下操作,只需将
example.com
更改为您的域:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: reverse-redirect
  annotations:
    nginx.ingress.kubernetes.io/permanent-redirect: http://example.com
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: "somerandomname" # needs some name, doesn't need to exist
            port:
              number: 80
当向nginx入口发送不带
主机
头的请求时,它将默认为不带指定
主机
字段的入口(就像上面的示例一样)。该请求将收到以下响应:

$ curl 123.123.123.123 -I
HTTP/1.1 301 Moved Permanently
Date: Wed, 28 Apr 2021 11:36:05 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Location: http://example.com
收到此重定向的浏览器将重定向到
Location
标题中指定的域

文件:


编辑: 由于您没有使用nginx入口,您可以尝试使用重定向应用程序

这里是一个部署,我在dockerhub上找到了一些随机映像,它用重定向响应每个请求。我不想在安全性方面给你们上课,但我觉得我至少应该提到,你们永远不应该使用来自互联网的随机容器图像,如果你们是,你们是在自己负责地做这件事。最好从源代码构建一个,并推送到您自己的回购协议

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: redir
  name: redir
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redir
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: redir
    spec:
      containers:
      - image: themill/docker-nginx-redirect-301
        name: docker-nginx-redirect-301
        env:
        - name: REDIRECT_CODE
          value: "302"
        - name: REDIRECT_URL
          value: https://example.com

用于上述部署的服务:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: redir
  name: redir
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: redir
status:
  loadBalancer: {}

现在进入部分:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: prueba-web-ingress
 annotations:
  networking.gke.io/managed-certificates: certificateexample
  kubernetes.io/ingress.global-static-ip-name: test
  kubernetes.io/ingress.allow-http: "false"
spec:
  rules:
  - http:
      paths:
      - path: /
          backend:
            serviceName: redir
            servicePort: 80
  - host: example.com
    http:
      paths:
      - path: /
         backend:
           serviceName: prueba-web
           servicePort: 80

请注意,这里同样适用:没有为redir服务设置
主机
字段,尽管prueba web服务有其主机字段集。

对于nginx入口,您可以创建入口资源,而无需明确定义
主机
,以便在IP或未知
主机
标头的情况下使用。然后你可以制定这个规则,将每个人重定向到某个地方。我写了怎么做。你好@anemyte,我试过你说的,但它仍然在浏览器中显示ip。我试过你说的,但仍然不起作用,我上传了安格尔苏的yaml,我明白了。我假设你像大多数人一样使用nginx ingress,但事实证明你不是。我之前必须创建一个nginx ingress控制器,对吗?@IFPGODS我编辑了我的答案。看一看,如果有什么需要更多解释的话,请告诉我。你好,再次@Matt,我尝试了你所说的,但它并不完全有效,我认为问题在于ingress yaml主机的部分,因为当我更改它时,其他东西也会起作用。