diff --git a/README.md b/README.md index c13327094..2aea7367a 100644 --- a/README.md +++ b/README.md @@ -160,7 +160,7 @@ The following tutorials are provided: * AWS * [AWS Load Balancer Controller](docs/tutorials/aws-load-balancer-controller.md) * [Route53](docs/tutorials/aws.md) - * [Same domain for public and private Route53 zones](docs/tutorials/public-private-route53.md) + * [Same domain for public and private Route53 zones](docs/tutorials/aws-public-private-route53.md) * [Cloud Map](docs/tutorials/aws-sd.md) * [Kube Ingress AWS Controller](docs/tutorials/kube-ingress-aws.md) * [Azure DNS](docs/tutorials/azure.md) @@ -174,15 +174,13 @@ The following tutorials are provided: * [ExternalName Services](docs/tutorials/externalname.md) * Google Kubernetes Engine * [Using Google's Default Ingress Controller](docs/tutorials/gke.md) - * [Using the Nginx Ingress Controller](docs/tutorials/nginx-ingress.md) + * [Using the Nginx Ingress Controller](docs/tutorials/gke-nginx.md) * [Headless Services](docs/tutorials/hostport.md) -* [Istio Gateway Source](docs/tutorials/istio.md) -* [Kubernetes Security Context](docs/tutorials/security-context.md) +* [Istio Gateway Source](docs/sources/istio.md) * [Linode](docs/tutorials/linode.md) -* [Nginx Ingress Controller](docs/tutorials/nginx-ingress.md) * [NS1](docs/tutorials/ns1.md) -* [NS Record Creation with CRD Source](docs/tutorials/ns-record.md) -* [MX Record Creation with CRD Source](docs/tutorials/mx-record.md) +* [NS Record Creation with CRD Source](docs/sources/ns-record.md) +* [MX Record Creation with CRD Source](docs/sources/mx-record.md) * [OpenStack Designate](docs/tutorials/designate.md) * [Oracle Cloud Infrastructure (OCI) DNS](docs/tutorials/oracle.md) * [PowerDNS](docs/tutorials/pdns.md) @@ -195,7 +193,7 @@ The following tutorials are provided: * [GoDaddy](docs/tutorials/godaddy.md) * [Gandi](docs/tutorials/gandi.md) * [IBM Cloud](docs/tutorials/ibmcloud.md) -* [Nodes as source](docs/tutorials/nodes.md) +* [Nodes as source](docs/sources/nodes.md) * [TencentCloud](docs/tutorials/tencentcloud.md) * [Plural](docs/tutorials/plural.md) * [Pi-hole](docs/tutorials/pihole.md) diff --git a/docs/sources/sources.md b/docs/sources/about.md similarity index 99% rename from docs/sources/sources.md rename to docs/sources/about.md index 5f262bb40..5a7a6d3bf 100644 --- a/docs/sources/sources.md +++ b/docs/sources/about.md @@ -1,4 +1,4 @@ -# Sources +# About | Source | Resources | annotation-filter | label-filter | |---------------------------------|-------------------------------------------------------------------------------|-------------------|--------------| diff --git a/docs/tutorials/f5-virtualserver.md b/docs/sources/f5-virtualserver.md similarity index 93% rename from docs/tutorials/f5-virtualserver.md rename to docs/sources/f5-virtualserver.md index f91acabec..5df99cdf3 100644 --- a/docs/tutorials/f5-virtualserver.md +++ b/docs/sources/f5-virtualserver.md @@ -1,4 +1,4 @@ -# Configuring ExternalDNS to use the F5 Networks VirtualServer Source +# F5 Networks VirtualServer Source This tutorial describes how to configure ExternalDNS to use the F5 Networks VirtualServer Source. It is meant to supplement the other provider-specific setup tutorials. The F5 Networks VirtualServer CRD is part of [this](https://github.com/F5Networks/k8s-bigip-ctlr) project. See more in-depth info regarding the VirtualServer CRD [here](https://github.com/F5Networks/k8s-bigip-ctlr/blob/master/docs/config_examples/customResource/CustomResource.md#virtualserver). @@ -30,4 +30,4 @@ Note that, in case you're not installing via Helm, you'll need the following in - get - list - watch -``` \ No newline at end of file +``` diff --git a/docs/tutorials/gateway-api.md b/docs/sources/gateway-api.md similarity index 98% rename from docs/tutorials/gateway-api.md rename to docs/sources/gateway-api.md index 647ca76fc..3f1530978 100644 --- a/docs/tutorials/gateway-api.md +++ b/docs/sources/gateway-api.md @@ -1,4 +1,4 @@ -# Configuring ExternalDNS to use Gateway API Route Sources +# Gateway API Route Sources This describes how to configure ExternalDNS to use Gateway API Route sources. It is meant to supplement the other provider-specific setup tutorials. diff --git a/docs/tutorials/gloo-proxy.md b/docs/sources/gloo-proxy.md similarity index 97% rename from docs/tutorials/gloo-proxy.md rename to docs/sources/gloo-proxy.md index 077372c78..ceb41419f 100644 --- a/docs/tutorials/gloo-proxy.md +++ b/docs/sources/gloo-proxy.md @@ -1,4 +1,4 @@ -# Configuring ExternalDNS to use the Gloo Proxy Source +# Gloo Proxy Source This tutorial describes how to configure ExternalDNS to use the Gloo Proxy source. It is meant to supplement the other provider-specific setup tutorials. diff --git a/docs/tutorials/istio.md b/docs/sources/istio.md similarity index 98% rename from docs/tutorials/istio.md rename to docs/sources/istio.md index f46876ba2..9459a3361 100644 --- a/docs/tutorials/istio.md +++ b/docs/sources/istio.md @@ -1,4 +1,5 @@ -# Configuring ExternalDNS to use the Istio Gateway and/or Istio Virtual Service Source +# Istio Gateway / Virtual Service Source + This tutorial describes how to configure ExternalDNS to use the Istio Gateway source. It is meant to supplement the other provider-specific setup tutorials. @@ -43,6 +44,7 @@ spec: ``` ### Manifest (for clusters with RBAC enabled) + ```yaml apiVersion: v1 kind: ServiceAccount @@ -58,7 +60,7 @@ rules: resources: ["services","endpoints","pods"] verbs: ["get","watch","list"] - apiGroups: ["extensions","networking.k8s.io"] - resources: ["ingresses"] + resources: ["ingresses"] verbs: ["get","watch","list"] - apiGroups: [""] resources: ["nodes"] @@ -134,7 +136,7 @@ kubectl patch clusterrole external-dns --type='json' \ ### Verify that Istio Gateway/VirtualService Source works -Follow the [Istio ingress traffic tutorial](https://istio.io/docs/tasks/traffic-management/ingress/) +Follow the [Istio ingress traffic tutorial](https://istio.io/docs/tasks/traffic-management/ingress/) to deploy a sample service that will be exposed outside of the service mesh. The following are relevant snippets from that tutorial. @@ -150,7 +152,9 @@ $ kubectl apply -f <(istioctl kube-inject -f https://raw.githubusercontent.com/i ``` #### Using a Gateway as a source + ##### Create an Istio Gateway: + ```bash $ cat <=0.5.6** version of ExternalDNS for this tutorial diff --git a/docs/tutorials/aws-load-balancer-controller.md b/docs/tutorials/aws-load-balancer-controller.md index 98bc5da69..7cd6285e7 100644 --- a/docs/tutorials/aws-load-balancer-controller.md +++ b/docs/tutorials/aws-load-balancer-controller.md @@ -1,4 +1,4 @@ -# Using ExternalDNS with aws-load-balancer-controller +# AWS Load Balancer Controller This tutorial describes how to use ExternalDNS with the [aws-load-balancer-controller][1]. diff --git a/docs/tutorials/public-private-route53.md b/docs/tutorials/aws-public-private-route53.md similarity index 97% rename from docs/tutorials/public-private-route53.md rename to docs/tutorials/aws-public-private-route53.md index a93d4e4d9..033bd32af 100644 --- a/docs/tutorials/public-private-route53.md +++ b/docs/tutorials/aws-public-private-route53.md @@ -1,10 +1,10 @@ -# Setting up ExternalDNS using the same domain for public and private Route53 zones +# AWS Route53 with same domain for public and private zones This tutorial describes how to setup ExternalDNS using the same domain for public and private Route53 zones and [nginx-ingress-controller](https://github.com/kubernetes/ingress-nginx). It also outlines how to use [cert-manager](https://github.com/jetstack/cert-manager) to automatically issue SSL certificates from [Let's Encrypt](https://letsencrypt.org/) for both public and private records. ## Deploy public nginx-ingress-controller -Consult [External DNS nginx ingress docs](nginx-ingress.md) for installation guidelines. +You may be interested with [GKE with nginx ingress](gke-nginx.md) for installation guidelines. Specify `ingress-class` in nginx-ingress-controller container args: @@ -107,8 +107,6 @@ spec: ## Deploy private nginx-ingress-controller -Consult [External DNS nginx ingress docs](nginx-ingress.md) for installation guidelines. - Make sure to specify `ingress-class` in nginx-ingress-controller container args: ```yaml diff --git a/docs/tutorials/aws-sd.md b/docs/tutorials/aws-sd.md index 9741b5f9d..b09513246 100644 --- a/docs/tutorials/aws-sd.md +++ b/docs/tutorials/aws-sd.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS using AWS Cloud Map API +# AWS Cloud Map API This tutorial describes how to set up ExternalDNS for usage within a Kubernetes cluster with [AWS Cloud Map API](https://docs.aws.amazon.com/cloud-map/). diff --git a/docs/tutorials/aws.md b/docs/tutorials/aws.md index 98826dd55..013a62c35 100644 --- a/docs/tutorials/aws.md +++ b/docs/tutorials/aws.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on AWS +# AWS This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster on AWS. Make sure to use **>=0.15.0** version of ExternalDNS for this tutorial @@ -525,7 +525,7 @@ Annotations which are specific to AWS. ### alias -`external-dns.alpha.kubernetes.io/alias` if set to `true` on an ingress, it will create an ALIAS record when the target is an ALIAS as well. To make the target an alias, the ingress needs to be configured correctly as described in [the docs](./nginx-ingress.md#with-a-separate-tcp-load-balancer). In particular, the argument `--publish-service=default/nginx-ingress-controller` has to be set on the `nginx-ingress-controller` container. If one uses the `nginx-ingress` Helm chart, this flag can be set with the `controller.publishService.enabled` configuration option. +`external-dns.alpha.kubernetes.io/alias` if set to `true` on an ingress, it will create an ALIAS record when the target is an ALIAS as well. To make the target an alias, the ingress needs to be configured correctly as described in [the docs](./gke-nginx.md#with-a-separate-tcp-load-balancer). In particular, the argument `--publish-service=default/nginx-ingress-controller` has to be set on the `nginx-ingress-controller` container. If one uses the `nginx-ingress` Helm chart, this flag can be set with the `controller.publishService.enabled` configuration option. ### target-hosted-zone diff --git a/docs/tutorials/azure-private-dns.md b/docs/tutorials/azure-private-dns.md index bd1505611..831ea132a 100644 --- a/docs/tutorials/azure-private-dns.md +++ b/docs/tutorials/azure-private-dns.md @@ -1,4 +1,4 @@ -# Set up ExternalDNS for Azure Private DNS +# Azure Private DNS This tutorial describes how to set up ExternalDNS for managing records in Azure Private DNS. diff --git a/docs/tutorials/azure.md b/docs/tutorials/azure.md index ab6ad77f9..592e2086b 100644 --- a/docs/tutorials/azure.md +++ b/docs/tutorials/azure.md @@ -1,5 +1,4 @@ - -# Setting up ExternalDNS for Services on Azure +# Azure DNS This tutorial describes how to setup ExternalDNS for [Azure DNS](https://azure.microsoft.com/services/dns/) with [Azure Kubernetes Service](https://docs.microsoft.com/azure/aks/). diff --git a/docs/tutorials/civo.md b/docs/tutorials/civo.md index 057a12694..5e008311d 100644 --- a/docs/tutorials/civo.md +++ b/docs/tutorials/civo.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on Civo +# Civo DNS This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using Civo DNS Manager. @@ -183,4 +183,4 @@ Now that we have verified that ExternalDNS will automatically manage Civo DNS re ``` $ kubectl delete service -f nginx.yaml $ kubectl delete service -f externaldns.yaml -``` \ No newline at end of file +``` diff --git a/docs/tutorials/cloudflare.md b/docs/tutorials/cloudflare.md index dcf8e85f0..88b76f1b6 100644 --- a/docs/tutorials/cloudflare.md +++ b/docs/tutorials/cloudflare.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on Cloudflare +# Cloudflare DNS This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using Cloudflare DNS. diff --git a/docs/tutorials/contour.md b/docs/tutorials/contour.md index c2f85d8a1..eceaa2af2 100644 --- a/docs/tutorials/contour.md +++ b/docs/tutorials/contour.md @@ -1,4 +1,4 @@ -# Setting up External DNS with Contour +# Contour HTTPProxy This tutorial describes how to configure External DNS to use the Contour `HTTPProxy` source. Using the `HTTPProxy` resource with External DNS requires Contour version 1.5 or greater. diff --git a/docs/tutorials/coredns.md b/docs/tutorials/coredns.md index 38d8f5b7d..b2765e92b 100644 --- a/docs/tutorials/coredns.md +++ b/docs/tutorials/coredns.md @@ -1,39 +1,52 @@ -# Setting up ExternalDNS for CoreDNS with minikube +# CoreDNS with minikube + This tutorial describes how to setup ExternalDNS for usage within a [minikube](https://github.com/kubernetes/minikube) cluster that makes use of [CoreDNS](https://github.com/coredns/coredns) and [nginx ingress controller](https://github.com/kubernetes/ingress-nginx). + You need to: + * install CoreDNS with [etcd](https://github.com/etcd-io/etcd) enabled * install external-dns with coredns as a provider * enable ingress controller for the minikube cluster - ## Creating a cluster -``` + +```shell minikube start ``` ## Installing CoreDNS with etcd enabled + Helm chart is used to install etcd and CoreDNS. + ### Initializing helm chart -``` + +```shell helm init ``` + ### Installing etcd + [etcd operator](https://github.com/coreos/etcd-operator) is used to manage etcd clusters. ``` helm install stable/etcd-operator --name my-etcd-op ``` + etcd cluster is installed with example yaml from etcd operator website. -``` + +```shell kubectl apply -f https://raw.githubusercontent.com/coreos/etcd-operator/HEAD/example/example-etcd-cluster.yaml ``` ### Installing CoreDNS + In order to make CoreDNS work with etcd backend, values.yaml of the chart should be changed with corresponding configurations. + ``` wget https://raw.githubusercontent.com/helm/charts/HEAD/stable/coredns/values.yaml ``` You need to edit/patch the file with below diff + ```diff diff --git a/values.yaml b/values.yaml index 964e72b..e2fa934 100644 @@ -68,23 +81,29 @@ index 964e72b..e2fa934 100644 # Complete example with all the options: # - zones: # the `zones` block can be left out entirely, defaults to "." ``` + **Note**: + * IP address of etcd's endpoint should be get from etcd client service. It should be "example-etcd-cluster-client" in this example. This IP address is used through this document for etcd endpoint configuration. -``` + +```shell $ kubectl get svc example-etcd-cluster-client NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE example-etcd-cluster-client ClusterIP 10.105.68.165 2379/TCP 16m ``` + * Parameters should configure your own domain. "example.org" is used in this example. - After configuration done in values.yaml, you can install coredns chart. -``` + +```shell helm install --name my-coredns --values values.yaml stable/coredns ``` ## Installing ExternalDNS + ### Install external ExternalDNS + ETCD_URLS is configured to etcd client service address. Optionally, you can configure ETCD_USERNAME and ETCD_PASSWORD for authenticating to etcd. It is also possible to connect to the etcd cluster via HTTPS using the following environment variables: ETCD_CA_FILE, ETCD_CERT_FILE, ETCD_KEY_FILE, ETCD_TLS_SERVER_NAME, ETCD_TLS_INSECURE. @@ -187,13 +206,16 @@ spec: ``` ## Enable the ingress controller + You can use the ingress controller in minikube cluster. It needs to enable ingress addon in the cluster. -``` + +```shell minikube addons enable ingress ``` ## Testing ingress example -``` + +```shell $ cat ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress @@ -213,9 +235,9 @@ $ kubectl apply -f ingress.yaml ingress.extensions "nginx" created ``` - Wait a moment until DNS has the ingress IP. The DNS service IP is from CoreDNS service. It is "my-coredns-coredns" in this example. -``` + +```shell $ kubectl get svc my-coredns-coredns NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-coredns-coredns ClusterIP 10.100.4.143 53/UDP 12m diff --git a/docs/tutorials/designate.md b/docs/tutorials/designate.md index 9d84c6130..97e5e06ab 100644 --- a/docs/tutorials/designate.md +++ b/docs/tutorials/designate.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on OpenStack Designate +# Designate DNS from OpenStack This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using OpenStack Designate DNS. diff --git a/docs/tutorials/digitalocean.md b/docs/tutorials/digitalocean.md index 705c8f433..e6f331408 100644 --- a/docs/tutorials/digitalocean.md +++ b/docs/tutorials/digitalocean.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on DigitalOcean +# DigitalOcean DNS This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using DigitalOcean DNS. diff --git a/docs/tutorials/dnsimple.md b/docs/tutorials/dnsimple.md index dee483a72..5014a29af 100644 --- a/docs/tutorials/dnsimple.md +++ b/docs/tutorials/dnsimple.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on DNSimple +# DNSimple This tutorial describes how to setup ExternalDNS for usage with DNSimple. diff --git a/docs/tutorials/exoscale.md b/docs/tutorials/exoscale.md index 6b991e7de..960556122 100644 --- a/docs/tutorials/exoscale.md +++ b/docs/tutorials/exoscale.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Exoscale +# Exoscale ## Prerequisites diff --git a/docs/tutorials/externalname.md b/docs/tutorials/externalname.md index 0dd8e5ebe..f4f6ef458 100644 --- a/docs/tutorials/externalname.md +++ b/docs/tutorials/externalname.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for ExternalName Services +# ExternalName Services This tutorial describes how to setup ExternalDNS for usage in conjunction with an ExternalName service. diff --git a/docs/tutorials/gandi.md b/docs/tutorials/gandi.md index 52c674858..ff65893dd 100644 --- a/docs/tutorials/gandi.md +++ b/docs/tutorials/gandi.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on Gandi +# Gandi This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using Gandi. diff --git a/docs/tutorials/nginx-ingress.md b/docs/tutorials/gke-nginx.md similarity index 99% rename from docs/tutorials/nginx-ingress.md rename to docs/tutorials/gke-nginx.md index ca67a6a64..0b2e82bc1 100644 --- a/docs/tutorials/nginx-ingress.md +++ b/docs/tutorials/gke-nginx.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS on GKE with nginx-ingress-controller +# GKE with nginx-ingress-controller This tutorial describes how to setup ExternalDNS for usage within a GKE cluster that doesn't make use of Google's [default ingress controller](https://github.com/kubernetes/ingress-gce) but rather uses [nginx-ingress-controller](https://github.com/kubernetes/ingress-nginx) for that task. diff --git a/docs/tutorials/gke.md b/docs/tutorials/gke.md index 8e89d4326..1f6050c63 100644 --- a/docs/tutorials/gke.md +++ b/docs/tutorials/gke.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS on Google Kubernetes Engine +# GKE with default controller This tutorial describes how to setup ExternalDNS for usage within a [GKE](https://cloud.google.com/kubernetes-engine) ([Google Kuberentes Engine](https://cloud.google.com/kubernetes-engine)) cluster. Make sure to use **>=0.11.0** version of ExternalDNS for this tutorial diff --git a/docs/tutorials/godaddy.md b/docs/tutorials/godaddy.md index de74c749c..7e036f02b 100644 --- a/docs/tutorials/godaddy.md +++ b/docs/tutorials/godaddy.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on GoDaddy +# GoDaddy This tutorial describes how to setup ExternalDNS for use within a Kubernetes cluster using GoDaddy DNS. diff --git a/docs/tutorials/hostport.md b/docs/tutorials/hostport.md index 67c9e2fb3..208411729 100644 --- a/docs/tutorials/hostport.md +++ b/docs/tutorials/hostport.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Headless Services +# Headless Services This tutorial describes how to setup ExternalDNS for usage in conjunction with a Headless service. diff --git a/docs/tutorials/ibmcloud.md b/docs/tutorials/ibmcloud.md index 926435c77..9df1bd7dd 100644 --- a/docs/tutorials/ibmcloud.md +++ b/docs/tutorials/ibmcloud.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on IBMCloud +# IBMCloud This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using IBMCloud DNS. @@ -259,4 +259,4 @@ Using the `external-dns.alpha.kubernetes.io/ibmcloud-proxied: "true"` annotation By default, IBMCloud DNS Services don't active your private zone with new zone added, with externale DNS, you can use `external-dns.alpha.kubernetes.io/ibmcloud-vpc: "crn:v1:bluemix:public:is:us-south:a/bcf1865e99742d38d2d5fc3fb80a5496::vpc:r006-74353823-a60d-42e4-97c5-5e2551278435"` annotation on your ingress or service, it will active your private zone with in specific VPC for that record created in. this setting won't work if the private zone was active already. -Note: the annotaion value is the VPC CRN, every IBM Cloud service have a valid CRN. \ No newline at end of file +Note: the annotaion value is the VPC CRN, every IBM Cloud service have a valid CRN. diff --git a/docs/tutorials/kops-dns-controller.md b/docs/tutorials/kops-dns-controller.md index 04da968bf..d2facdad1 100644 --- a/docs/tutorials/kops-dns-controller.md +++ b/docs/tutorials/kops-dns-controller.md @@ -1,4 +1,4 @@ -# kOps dns-controller compatibility mode +# kOps dns-controller kOps includes a dns-controller that is primarily used to bootstrap the cluster, but can also be used for provisioning DNS entries for Services and Ingress. @@ -34,4 +34,4 @@ Annotations added to Pods will always result in an A record being created. * For a Service of Type=LoadBalancer, ExternalDNS looks at Status.LoadBalancer.Ingress. It will create CNAMEs to hostnames, and A records for IP addresses. It will do this for both internal and external names -* For a Service of Type=NodePort, ExternalDNS will create A records for the Node's internal/external IP addresses, as appropriate. \ No newline at end of file +* For a Service of Type=NodePort, ExternalDNS will create A records for the Node's internal/external IP addresses, as appropriate. diff --git a/docs/tutorials/kube-ingress-aws.md b/docs/tutorials/kube-ingress-aws.md index 5cf37d4ec..ee9ecd212 100644 --- a/docs/tutorials/kube-ingress-aws.md +++ b/docs/tutorials/kube-ingress-aws.md @@ -1,4 +1,4 @@ -# Using ExternalDNS with kube-ingress-aws-controller +# kube-ingress-aws-controller This tutorial describes how to use ExternalDNS with the [kube-ingress-aws-controller][1]. diff --git a/docs/tutorials/linode.md b/docs/tutorials/linode.md index bc5ad7dc2..00b3a7f3c 100644 --- a/docs/tutorials/linode.md +++ b/docs/tutorials/linode.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on Linode +# Linode This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using Linode DNS Manager. diff --git a/docs/tutorials/ns1.md b/docs/tutorials/ns1.md index 7d3057b67..48659a1fa 100644 --- a/docs/tutorials/ns1.md +++ b/docs/tutorials/ns1.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on NS1 +# NS1 This tutorial describes how to setup ExternalDNS for use within a Kubernetes cluster using NS1 DNS. diff --git a/docs/tutorials/oracle.md b/docs/tutorials/oracle.md index 2365f2243..92321236a 100644 --- a/docs/tutorials/oracle.md +++ b/docs/tutorials/oracle.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Oracle Cloud Infrastructure (OCI) +# Oracle Cloud Infrastructure This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using OCI DNS. diff --git a/docs/tutorials/ovh.md b/docs/tutorials/ovh.md index dcf1a0265..f364d95b6 100644 --- a/docs/tutorials/ovh.md +++ b/docs/tutorials/ovh.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on OVH +# OVHcloud This tutorial describes how to setup ExternalDNS for use within a Kubernetes cluster using OVH DNS. diff --git a/docs/tutorials/pdns.md b/docs/tutorials/pdns.md index 72aa3fc85..b973cfa5d 100644 --- a/docs/tutorials/pdns.md +++ b/docs/tutorials/pdns.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for PowerDNS +# PowerDNS ## Prerequisites diff --git a/docs/tutorials/pihole.md b/docs/tutorials/pihole.md index b4e473e47..fdfa7118e 100644 --- a/docs/tutorials/pihole.md +++ b/docs/tutorials/pihole.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Pi-hole +# Pi-hole This tutorial describes how to setup ExternalDNS to sync records with Pi-hole's Custom DNS. Pi-hole has an internal list it checks last when resolving requests. This list can contain any number of arbitrary A, AAAA or CNAME records. diff --git a/docs/tutorials/plural.md b/docs/tutorials/plural.md index cd6afc974..74f36c42f 100644 --- a/docs/tutorials/plural.md +++ b/docs/tutorials/plural.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on Plural +# Plural This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using Plural DNS. diff --git a/docs/tutorials/rdns.md b/docs/tutorials/rdns.md index 59b5f5684..803e44785 100644 --- a/docs/tutorials/rdns.md +++ b/docs/tutorials/rdns.md @@ -1,6 +1,9 @@ -# Setting up ExternalDNS for RancherDNS(RDNS) with kubernetes +# RancherDNS + This tutorial describes how to setup ExternalDNS for usage within a kubernetes cluster that makes use of [RDNS](https://github.com/rancher/rdns-server) and [nginx ingress controller](https://github.com/kubernetes/ingress-nginx). + You need to: + * install RDNS with [etcd](https://github.com/etcd-io/etcd) enabled * install external-dns with rdns as a provider diff --git a/docs/tutorials/rfc2136.md b/docs/tutorials/rfc2136.md index 0135e107e..ca0987e76 100644 --- a/docs/tutorials/rfc2136.md +++ b/docs/tutorials/rfc2136.md @@ -1,17 +1,21 @@ -# Configuring RFC2136 provider +# RFC2136 provider + This tutorial describes how to use the RFC2136 with either BIND or Windows DNS. ## Using with BIND + To use external-dns with BIND: generate/procure a key, configure DNS and add a deployment of external-dns. ### Server credentials: + - RFC2136 was developed for and tested with [BIND](https://www.isc.org/downloads/bind/) DNS server. This documentation assumes that you already have a configured and working server. If you don't, please check BIND documents or tutorials. - If your DNS is provided for you, ask for a TSIG key authorized to update and transfer the zone you wish to update. The key will look something like below. Skip the next steps wrt BIND setup. + ```text key "externaldns-key" { algorithm hmac-sha256; @@ -25,6 +29,7 @@ a key printed to standard out like above (or in the case of dnssec-keygen in a file called `Kexternaldns......key`). ### BIND Configuration: + If you do not administer your own DNS, skip to RFC provider configuration - Edit your named.conf file (or appropriate included file) and add/change the @@ -75,9 +80,11 @@ following. ### Using external-dns + To use external-dns add an ingress or a LoadBalancer service with a host that is part of the domain-filter. For example both of the following would produce A records. + ```text apiVersion: v1 kind: Service @@ -133,8 +140,8 @@ tutorial and are covered in the main documentation. ### Generate reverse DNS records -If you want to generate reverse DNS records for your services, you have to enable the functionality using the `--rfc2136-create-ptr` -flag. You have also to add the zone to the list of zones managed by ExternalDNS via the `--rfc2136-zone` and `--domain-filter` flags. +If you want to generate reverse DNS records for your services, you have to enable the functionality using the `--rfc2136-create-ptr` +flag. You have also to add the zone to the list of zones managed by ExternalDNS via the `--rfc2136-zone` and `--domain-filter` flags. An example of a valid configuration is the following: ```--domain-filter=157.168.192.in-addr.arpa --rfc2136-zone=157.168.192.in-addr.arpa``` diff --git a/docs/tutorials/scaleway.md b/docs/tutorials/scaleway.md index 7a948285e..237879dbc 100644 --- a/docs/tutorials/scaleway.md +++ b/docs/tutorials/scaleway.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on Scaleway +# Scaleway This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using Scaleway DNS. diff --git a/docs/tutorials/security-context.md b/docs/tutorials/security-context.md deleted file mode 100644 index e34acf426..000000000 --- a/docs/tutorials/security-context.md +++ /dev/null @@ -1,32 +0,0 @@ -# Running ExternalDNS with limited privileges - -You can run ExternalDNS with reduced privileges since `v0.5.6` using the following `SecurityContext`. - -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: external-dns -spec: - strategy: - type: Recreate - selector: - matchLabels: - app: external-dns - template: - metadata: - labels: - app: external-dns - spec: - containers: - - name: external-dns - image: registry.k8s.io/external-dns/external-dns:v0.14.2 - args: - - ... # your arguments here - securityContext: - runAsNonRoot: true - runAsUser: 65534 - readOnlyRootFilesystem: true - capabilities: - drop: ["ALL"] -``` diff --git a/docs/tutorials/tencentcloud.md b/docs/tutorials/tencentcloud.md index b9ff0b566..0624e2c07 100644 --- a/docs/tutorials/tencentcloud.md +++ b/docs/tutorials/tencentcloud.md @@ -1,6 +1,7 @@ -# Setting up ExternalDNS for Tencent Cloud +# Tencent Cloud ## External Dns Version + * Make sure to use **>=0.13.1** version of ExternalDNS for this tutorial ## Set up PrivateDns or DNSPod @@ -8,17 +9,18 @@ Tencent Cloud DNSPod Service is the domain name resolution and management service for public access. Tencent Cloud PrivateDNS Service is the domain name resolution and management service for VPC internal access. -* If you want to use internal dns service in Tencent Cloud. -1. Set up the args `--tencent-cloud-zone-type=private` +* If you want to use internal dns service in Tencent Cloud. +1. Set up the args `--tencent-cloud-zone-type=private` 2. Create a DNS domain in PrivateDNS console. DNS domain which will contain the managed DNS records. * If you want to use public dns service in Tencent Cloud. -1. Set up the args `--tencent-cloud-zone-type=public` +1. Set up the args `--tencent-cloud-zone-type=public` 2. Create a Domain in DnsPod console. DNS domain which will contain the managed DNS records. ## Set up CAM for API Key In Tencent CAM Console. you may get the secretId and secretKey pair. make sure the key pair has those Policy. + ```json { "version": "2.0", @@ -72,7 +74,7 @@ rules: resources: ["services","endpoints","pods"] verbs: ["get","watch","list"] - apiGroups: ["extensions","networking.k8s.io"] - resources: ["ingresses"] + resources: ["ingresses"] verbs: ["get","watch","list"] - apiGroups: [""] resources: ["nodes"] @@ -99,7 +101,7 @@ data: tencent-cloud.json: | { "regionId": "ap-shanghai", - "secretId": "******", + "secretId": "******", "secretKey": "******", "vpcId": "vpc-******", "internetEndpoint": false # Default: false. Access the Tencent API through the intranet. If you need to deploy on the public network, you need to change to true diff --git a/docs/tutorials/transip.md b/docs/tutorials/transip.md index f9eeedcb5..b5bdb1598 100644 --- a/docs/tutorials/transip.md +++ b/docs/tutorials/transip.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on TransIP +# TransIP This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using TransIP. diff --git a/docs/tutorials/ultradns.md b/docs/tutorials/ultradns.md index 68f37aa03..6a9530a84 100644 --- a/docs/tutorials/ultradns.md +++ b/docs/tutorials/ultradns.md @@ -1,4 +1,4 @@ -# Setting up ExternalDNS for Services on UltraDNS +# UltraDNS This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster using UltraDNS. diff --git a/mkdocs.yml b/mkdocs.yml index 0b4bbe54a..4b11f645b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,7 +2,6 @@ site_name: external-dns site_author: external-dns maintainers repo_name: kubernetes-sigs/external-dns repo_url: https://github.com/kubernetes-sigs/external-dns/ -trademark: https://www.linuxfoundation.org/legal/trademark-usage docs_dir: . @@ -19,11 +18,7 @@ nav: - Tutorials: docs/tutorials/* - Annotations: - About: docs/annotations/annotations.md - - Sources: - - About: docs/sources/sources.md - - Gateway: docs/sources/gateway.md - - Ingress: docs/sources/ingress.md - - Service: docs/sources/service.md + - Sources: docs/sources/* - Registries: - About: docs/registry/registry.md - TXT: docs/registry/txt.md