kubernetes 如何在Ingress中使用DNS

vyswwuz2  于 2023-04-20  发布在  Kubernetes
关注(0)|答案(3)|浏览(330)

我使用app1app2部署了一个入口。

example.com/app1  ---> app1
example.com/app2  ---> app2

并在所有机器中定义/etc/hosts。

192.168.1.10    example.com

但是我想知道在操作中如何使用DNS和ingress。
我该怎么做?入口给我带来了什么?我被入口迷惑了。我该如何在实际环境中使用它?

jmp7cifd

jmp7cifd1#

使用DNS不能只使用example.comexample.comIANA拥有)。您必须拥有在您的入口上配置的DNS。例如:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: simple-fanout-example
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: mydomain.com
    http:
      paths:
      - path: /foo
        backend:
          serviceName: service1
          servicePort: 4200

在上面的情况下,您必须拥有mydomain.com。您可以在任何主要的domain registrar(如GoDaddy)购买域名。
然后,您必须根据您的LoadBalancer Kubernetes Service设置(AWS,裸机等)将Ingress暴露在外部,并在域注册管理器上设置A, or CNAME条目,指向该外部端点(对于mydomain.com)。例如,在AWS上,该条目将是一个CNAME,如下所示:xxxxx-xxxxxxxxxxxx.us-west-2.elb.amazonaws.com
注意:您可以完全忽略主机,但ingress只会为这里描述的默认后端提供服务,并使用最少的ingress资源。至于使用自己的DNS服务器,只要您的DNS服务器正确地将www.example.com解析mydomain.com为您的ingress控制器所面对的外部IP,您也可以使用。
希望有帮助!

kcrjzv8t

kcrjzv8t2#

我在K8上部署了一组10或12个服务,需要一种方法将它们暴露给移动的客户端。我可以为每个服务创建一个类型为loadBalancer的服务,但这需要在AWS上有10个或更多的loadBalancer,所有这些服务都指向同一组机器。相反,它只创建了一个类型为loadBalancer的服务,即ingress服务,根据路径重定向到相应的服务。入口用于访问集群外部,内部可以使用集群DNS访问。例如:my-svc.my-namespace.svc.cluster.local.
检查此链接:https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
还有这个https://kubernetes.io/docs/concepts/services-networking/ingress/

svmlkihl

svmlkihl3#

有一个选项可以自动配置您的DNS提供商-您可以安装外部DNS资源。没有从属关系,我只是发现它很有用。
您将需要:

  • Kubernetes集群
  • 向受支持的DNS提供商注册的域
  • 安装并配置kubectl命令行工具
    安装配置外部DNS资源

安装在群集上的External-DNS需要与DNS提供商交互。要配置External-DNS,您需要通过values.yaml文件提供有关DNS提供商的额外信息,如here.所述。首先,您需要配置DNS提供商或记下DNS提供商信息。然后,使用此信息,您可以在集群中部署External-DNS控制器,通过values.yaml文件传递信息。您需要阅读DNS提供商和External-DNS的文档,以了解要提供哪些信息以及以何种格式提供,因为External-DNS对不同的提供者需要不同的键和值。这是一个如何使用Helm安装的示例:

#values.yaml
---
provider: aws
aws:
  secretAccessKey:
    secretName: external-dns-aws-credentials
    secretKey: aws_secret_access_key
  accessKeyId:
    secretName: external-dns-aws-credentials
    secretKey: aws_access_key_id
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm install external-dns bitnami/external-dns -f values.yaml --namespace external-dns --create-namespace

如何使用External-DNS

现在External-DNS已经安装并配置好了,它将使用注解自动为Ingress和Service资源创建DNS记录。例如,要创建Ingress资源,请使用以下注解为指定的主机名自动创建DNS记录:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
  external-dns.alpha.kubernetes.io/hostname: my-app.example.com
spec:
  rules:
  - host: my-app.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-app-service
            port:
              number: 80

Here is their cool FAQ.

相关问题