我使用app1和app2部署了一个入口。
app1
app2
example.com/app1 ---> app1 example.com/app2 ---> app2
并在所有机器中定义/etc/hosts。
192.168.1.10 example.com
但是我想知道在操作中如何使用DNS和ingress。我该怎么做?入口给我带来了什么?我被入口迷惑了。我该如何在实际环境中使用它?
jmp7cifd1#
使用DNS不能只使用example.com(example.com由IANA拥有)。您必须拥有在您的入口上配置的DNS。例如:
example.com
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,您也可以使用。希望有帮助!
mydomain.com
xxxxx-xxxxxxxxxxxx.us-west-2.elb.amazonaws.com
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/
svmlkihl3#
有一个选项可以自动配置您的DNS提供商-您可以安装外部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.
3条答案
按热度按时间jmp7cifd1#
使用DNS不能只使用
example.com
(example.com
由IANA拥有)。您必须拥有在您的入口上配置的DNS。例如:在上面的情况下,您必须拥有
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,您也可以使用。
希望有帮助!
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/
svmlkihl3#
有一个选项可以自动配置您的DNS提供商-您可以安装外部DNS资源。没有从属关系,我只是发现它很有用。
您将需要:
安装配置外部DNS资源
安装在群集上的External-DNS需要与DNS提供商交互。要配置External-DNS,您需要通过values.yaml文件提供有关DNS提供商的额外信息,如here.所述。首先,您需要配置DNS提供商或记下DNS提供商信息。然后,使用此信息,您可以在集群中部署External-DNS控制器,通过values.yaml文件传递信息。您需要阅读DNS提供商和External-DNS的文档,以了解要提供哪些信息以及以何种格式提供,因为External-DNS对不同的提供者需要不同的键和值。这是一个如何使用Helm安装的示例:
如何使用External-DNS
现在External-DNS已经安装并配置好了,它将使用注解自动为Ingress和Service资源创建DNS记录。例如,要创建Ingress资源,请使用以下注解为指定的主机名自动创建DNS记录:
Here is their cool FAQ.