diff --git a/charts/external-dns/README.md b/charts/external-dns/README.md index a94215f64b..f4680f3d67 100644 --- a/charts/external-dns/README.md +++ b/charts/external-dns/README.md @@ -41,6 +41,18 @@ See [documentation](https://kubernetes-sigs.github.io/external-dns/#new-provider |------------------------|------------| | `webhook` | ✅ | +### Other Providers + +For set up for a specific provider using the Helm chart, see the following links: +- [AWS](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/aws.md#using-helm-with-oidc) +- [akamai-edgedns](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/akamai-edgedns.md#using-helm) +- [cloudflare](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/cloudflare.md#using-helm) +- [digitalocean](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/digitalocean.md#using-helm) +- [godaddy](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/godaddy.md#using-helm) +- [ns1](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/ns1.md#using-helm) +- [plural](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/plural.md#using-helm) +- [vultr](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/vultr.md#using-helm) + ## Namespaced Scoped Installation external-dns supports running on a namespaced only scope, too. diff --git a/charts/external-dns/README.md.gotmpl b/charts/external-dns/README.md.gotmpl index 675835de8f..d99f0968dd 100644 --- a/charts/external-dns/README.md.gotmpl +++ b/charts/external-dns/README.md.gotmpl @@ -36,6 +36,18 @@ See [documentation](https://kubernetes-sigs.github.io/external-dns/#new-provider |------------------------|------------| | `webhook` | ✅ | +### Other Providers + +For set up for a specific provider using the Helm chart, see the following links: +- [AWS](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/aws.md#using-helm-with-oidc) +- [akamai-edgedns](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/akamai-edgedns.md#using-helm) +- [cloudflare](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/cloudflare.md#using-helm) +- [digitalocean](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/digitalocean.md#using-helm) +- [godaddy](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/godaddy.md#using-helm) +- [ns1](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/ns1.md#using-helm) +- [plural](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/plural.md#using-helm) +- [vultr](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/vultr.md#using-helm) + ## Namespaced Scoped Installation external-dns supports running on a namespaced only scope, too. diff --git a/docs/tutorials/akamai-edgedns.md b/docs/tutorials/akamai-edgedns.md index 7ec153a6fe..fc435c2fc6 100644 --- a/docs/tutorials/akamai-edgedns.md +++ b/docs/tutorials/akamai-edgedns.md @@ -34,7 +34,54 @@ In addition to specifying auth credentials individually, an Akamai Edgegrid .edg An operational External-DNS deployment consists of an External-DNS container and service. The following sections demonstrate the ConfigMap objects that would make up an example functional external DNS kubernetes configuration utilizing NGINX as the service. -Connect your `kubectl` client to the External-DNS cluster, and then apply one of the following manifest files: +Connect your `kubectl` client to the External-DNS cluster. + +Begin by creating a Kubernetes secret to securely store your Akamai Edge DNS Access Tokens. This key will enable ExternalDNS to authenticate with Akamai Edge DNS: + +```shell +kubectl create secret generic AKAMAI-DNS --from-literal=EXTERNAL_DNS_AKAMAI_SERVICECONSUMERDOMAIN=YOUR_SERVICECONSUMERDOMAIN --from-literal=EXTERNAL_DNS_AKAMAI_CLIENT_TOKEN=YOUR_CLIENT_TOKEN --from-literal=EXTERNAL_DNS_AKAMAI_CLIENT_SECRET=YOUR_CLIENT_SECRET --from-literal=EXTERNAL_DNS_AKAMAI_ACCESS_TOKEN=YOUR_ACCESS_TOKEN +``` + +Ensure to replace YOUR_SERVICECONSUMERDOMAIN, EXTERNAL_DNS_AKAMAI_CLIENT_TOKEN, YOUR_CLIENT_SECRET and YOUR_ACCESS_TOKEN with your actual Akamai Edge DNS API keys. + +Then apply one of the following manifests file to deploy ExternalDNS. + +### Using Helm + +Create a values.yaml file to configure ExternalDNS to use Akamai Edge DNS as the DNS provider. This file should include the necessary environment variables: + +```shell +provider: + name: akamai +env: + - name: EXTERNAL_DNS_AKAMAI_SERVICECONSUMERDOMAIN + valueFrom: + secretKeyRef: + name: AKAMAI-DNS + key: EXTERNAL_DNS_AKAMAI_SERVICECONSUMERDOMAIN + - name: EXTERNAL_DNS_AKAMAI_CLIENT_TOKEN + valueFrom: + secretKeyRef: + name: AKAMAI-DNS + key: EXTERNAL_DNS_AKAMAI_CLIENT_TOKEN + - name: EXTERNAL_DNS_AKAMAI_CLIENT_SECRET + valueFrom: + secretKeyRef: + name: AKAMAI-DNS + key: EXTERNAL_DNS_AKAMAI_CLIENT_SECRET + - name: EXTERNAL_DNS_AKAMAI_ACCESS_TOKEN + valueFrom: + secretKeyRef: + name: AKAMAI-DNS + key: EXTERNAL_DNS_AKAMAI_ACCESS_TOKEN +``` + +Finally, install the ExternalDNS chart with Helm using the configuration specified in your values.yaml file: + +```shell +helm upgrade --install external-dns external-dns/external-dns --values values.yaml +``` + ### Manifest (for clusters without RBAC enabled) @@ -70,22 +117,22 @@ spec: - name: EXTERNAL_DNS_AKAMAI_SERVICECONSUMERDOMAIN valueFrom: secretKeyRef: - name: external-dns + name: AKAMAI-DNS key: EXTERNAL_DNS_AKAMAI_SERVICECONSUMERDOMAIN - name: EXTERNAL_DNS_AKAMAI_CLIENT_TOKEN valueFrom: secretKeyRef: - name: external-dns + name: AKAMAI-DNS key: EXTERNAL_DNS_AKAMAI_CLIENT_TOKEN - name: EXTERNAL_DNS_AKAMAI_CLIENT_SECRET valueFrom: secretKeyRef: - name: external-dns + name: AKAMAI-DNS key: EXTERNAL_DNS_AKAMAI_CLIENT_SECRET - name: EXTERNAL_DNS_AKAMAI_ACCESS_TOKEN valueFrom: secretKeyRef: - name: external-dns + name: AKAMAI-DNS key: EXTERNAL_DNS_AKAMAI_ACCESS_TOKEN ``` @@ -156,22 +203,22 @@ spec: - name: EXTERNAL_DNS_AKAMAI_SERVICECONSUMERDOMAIN valueFrom: secretKeyRef: - name: external-dns + name: AKAMAI-DNS key: EXTERNAL_DNS_AKAMAI_SERVICECONSUMERDOMAIN - name: EXTERNAL_DNS_AKAMAI_CLIENT_TOKEN valueFrom: secretKeyRef: - name: external-dns + name: AKAMAI-DNS key: EXTERNAL_DNS_AKAMAI_CLIENT_TOKEN - name: EXTERNAL_DNS_AKAMAI_CLIENT_SECRET valueFrom: secretKeyRef: - name: external-dns + name: AKAMAI-DNS key: EXTERNAL_DNS_AKAMAI_CLIENT_SECRET - name: EXTERNAL_DNS_AKAMAI_ACCESS_TOKEN valueFrom: secretKeyRef: - name: external-dns + name: AKAMAI-DNS key: EXTERNAL_DNS_AKAMAI_ACCESS_TOKEN ``` diff --git a/docs/tutorials/aws.md b/docs/tutorials/aws.md index 54eafba5f4..708b0164ce 100644 --- a/docs/tutorials/aws.md +++ b/docs/tutorials/aws.md @@ -392,6 +392,24 @@ kubectl get namespaces | grep -q $EXTERNALDNS_NS || \ kubectl create namespace $EXTERNALDNS_NS ``` +## Using Helm (with OIDC) + +Create a values.yaml file to configure ExternalDNS: + +```shell +provider: + name: aws +env: + - name: AWS_DEFAULT_REGION + value: us-east-1 # change to region where EKS is installed +``` + +Finally, install the ExternalDNS chart with Helm using the configuration specified in your values.yaml file: + +```shell +helm upgrade --install external-dns external-dns/external-dns --values values.yaml +``` + ### Manifest (for clusters without RBAC enabled) Save the following below as `externaldns-no-rbac.yaml`. diff --git a/docs/tutorials/cloudflare.md b/docs/tutorials/cloudflare.md index 846ed22722..487f190385 100644 --- a/docs/tutorials/cloudflare.md +++ b/docs/tutorials/cloudflare.md @@ -34,8 +34,43 @@ Cloudflare API has a [global rate limit of 1,200 requests per five minutes](http ## Deploy ExternalDNS Connect your `kubectl` client to the cluster you want to test ExternalDNS with. + +Begin by creating a Kubernetes secret to securely store your CloudFlare API key. This key will enable ExternalDNS to authenticate with CloudFlare: + +```shell +kubectl create secret generic cloudflare-api-key --from-literal=API_KEY=YOUR_API_KEY ---from-literal=CF_API_EMAIL=YOUR_CLOUDFLARE_EMAIL +``` + +Ensure to replace YOUR_API_KEY with your actual CloudFlare API key and YOUR_CLOUDFLARE_EMAIL with the email associated with your CloudFlare account. + Then apply one of the following manifests file to deploy ExternalDNS. +### Using Helm + +Create a values.yaml file to configure ExternalDNS to use CloudFlare as the DNS provider. This file should include the necessary environment variables: + +```shell +provider: + name: cloudflare +env: + - name: CF_API_KEY + valueFrom: + secretKeyRef: + name: cloudflare-api-key + key: apiKey + - name: CF_API_EMAIL + valueFrom: + secretKeyRef: + name: cloudflare-api-key + key: YOUR_CLOUDFLARE_EMAIL +``` + +Finally, install the ExternalDNS chart with Helm using the configuration specified in your values.yaml file: + +```shell +helm upgrade --install external-dns external-dns/external-dns --values values.yaml +``` + ### Manifest (for clusters without RBAC enabled) ```yaml @@ -64,11 +99,17 @@ spec: - --provider=cloudflare - --cloudflare-proxied # (optional) enable the proxy feature of Cloudflare (DDOS protection, CDN...) - --cloudflare-dns-records-per-page=5000 # (optional) configure how many DNS records to fetch per request - env: - - name: CF_API_KEY - value: "YOUR_CLOUDFLARE_API_KEY" - - name: CF_API_EMAIL - value: "YOUR_CLOUDFLARE_EMAIL" + env: + - name: CF_API_KEY + valueFrom: + secretKeyRef: + name: cloudflare-api-key + key: API_KEY + - name: CF_API_EMAIL + valueFrom: + secretKeyRef: + name: cloudflare-api-key + key: YOUR_CLOUDFLARE_EMAIL ``` ### Manifest (for clusters with RBAC enabled) @@ -134,10 +175,16 @@ spec: - --cloudflare-proxied # (optional) enable the proxy feature of Cloudflare (DDOS protection, CDN...) - --cloudflare-dns-records-per-page=5000 # (optional) configure how many DNS records to fetch per request env: - - name: CF_API_KEY - value: "YOUR_CLOUDFLARE_API_KEY" - - name: CF_API_EMAIL - value: "YOUR_CLOUDFLARE_EMAIL" + - name: CF_API_KEY + valueFrom: + secretKeyRef: + name: cloudflare-api-key + key: apiKey + - name: CF_API_EMAIL + valueFrom: + secretKeyRef: + name: cloudflare-api-key + key: YOUR_CLOUDFLARE_EMAIL ``` ## Deploying an Nginx Service diff --git a/docs/tutorials/digitalocean.md b/docs/tutorials/digitalocean.md index e50ddb4f2d..57d43d5328 100644 --- a/docs/tutorials/digitalocean.md +++ b/docs/tutorials/digitalocean.md @@ -21,9 +21,34 @@ The environment variable `DO_TOKEN` will be needed to run ExternalDNS with Digit ## Deploy ExternalDNS Connect your `kubectl` client to the cluster you want to test ExternalDNS with. + +Begin by creating a Kubernetes secret to securely store your DigitalOcean API key. This key will enable ExternalDNS to authenticate with DigitalOcean: + +```shell +kubectl create secret generic DO_TOKEN --from-literal=DO_TOKEN=YOUR_DIGITALOCEAN_API_KEY +``` + +Ensure to replace YOUR_DIGITALOCEAN_API_KEY with your actual DigitalOcean API key. + Then apply one of the following manifests file to deploy ExternalDNS. +## Using Helm + +Create a values.yaml file to configure ExternalDNS to use DigitalOcean as the DNS provider. This file should include the necessary environment variables: + +```shell +provider: + name: digitalocean +env: + - name: DO_TOKEN + valueFrom: + secretKeyRef: + name: DO_TOKEN + key: DO_TOKEN +``` + ### Manifest (for clusters without RBAC enabled) + ```yaml apiVersion: apps/v1 kind: Deployment @@ -50,7 +75,10 @@ spec: - --provider=digitalocean env: - name: DO_TOKEN - value: "YOUR_DIGITALOCEAN_API_KEY" + valueFrom: + secretKeyRef: + name: DO_TOKEN + key: DO_TOKEN ``` ### Manifest (for clusters with RBAC enabled) @@ -114,7 +142,10 @@ spec: - --provider=digitalocean env: - name: DO_TOKEN - value: "YOUR_DIGITALOCEAN_API_KEY" + valueFrom: + secretKeyRef: + name: DO_TOKEN + key: DO_TOKEN ``` diff --git a/docs/tutorials/godaddy.md b/docs/tutorials/godaddy.md index a95bf538a6..f896020825 100644 --- a/docs/tutorials/godaddy.md +++ b/docs/tutorials/godaddy.md @@ -24,6 +24,26 @@ Using the [GoDaddy documentation](https://developer.godaddy.com/getstarted) you Connect your `kubectl` client to the cluster with which you want to test ExternalDNS, and then apply one of the following manifest files for deployment: +## Using Helm + +Create a values.yaml file to configure ExternalDNS to use NS1 as the DNS provider. This file should include the necessary environment variables: + +```shell +provider: + name: godaddy +extraArgs: + - --godaddy-api-key=YOUR_API_KEY + - --godaddy-api-secret=YOUR_API_SECRET +``` + +Ensure to replace YOUR_API_KEY and YOUR_API_SECRET with your actual godaddy API key and godaddy API secret. + +Finally, install the ExternalDNS chart with Helm using the configuration specified in your values.yaml file: + +```shell +helm upgrade --install external-dns external-dns/external-dns --values values.yaml +``` + ### Manifest (for clusters without RBAC enabled) ```yaml diff --git a/docs/tutorials/ns1.md b/docs/tutorials/ns1.md index 71d9039cb4..4673a60353 100644 --- a/docs/tutorials/ns1.md +++ b/docs/tutorials/ns1.md @@ -41,6 +41,37 @@ var `NS1_APIKEY` will be needed to run ExternalDNS with NS1. Connect your `kubectl` client to the cluster with which you want to test ExternalDNS, and then apply one of the following manifest files for deployment: +Begin by creating a Kubernetes secret to securely store your NS1 API key. This key will enable ExternalDNS to authenticate with NS1: + +```shell +kubectl create secret generic NS1_APIKEY --from-literal=NS1_API_KEY=YOUR_NS1_API_KEY +``` + +Ensure to replace YOUR_NS1_API_KEY with your actual NS1 API key. + +Then apply one of the following manifests file to deploy ExternalDNS. + +## Using Helm + +Create a values.yaml file to configure ExternalDNS to use NS1 as the DNS provider. This file should include the necessary environment variables: + +```shell +provider: + name: ns1 +env: + - name: NS1_APIKEY + valueFrom: + secretKeyRef: + name: NS1_APIKEY + key: NS1_API_KEY +``` + +Finally, install the ExternalDNS chart with Helm using the configuration specified in your values.yaml file: + +```shell +helm upgrade --install external-dns external-dns/external-dns --values values.yaml +``` + ### Manifest (for clusters without RBAC enabled) ```yaml @@ -67,8 +98,11 @@ spec: - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. - --provider=ns1 env: - - name: NS1_APIKEY - value: "YOUR_NS1_API_KEY" + - name: NS1_APIKEY + valueFrom: + secretKeyRef: + name: NS1_APIKEY + key: NS1_API_KEY ``` ### Manifest (for clusters with RBAC enabled) @@ -131,8 +165,11 @@ spec: - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created above. - --provider=ns1 env: - - name: NS1_APIKEY - value: "YOUR_NS1_API_KEY" + - name: NS1_APIKEY + valueFrom: + secretKeyRef: + name: NS1_APIKEY + key: NS1_API_KEY ``` ## Deploying an Nginx Service diff --git a/docs/tutorials/plural.md b/docs/tutorials/plural.md index 762c59d3fb..629f9d3452 100644 --- a/docs/tutorials/plural.md +++ b/docs/tutorials/plural.md @@ -15,6 +15,32 @@ To create the secret you can run `kubectl create secret generic plural-env --fro Connect your `kubectl` client to the cluster you want to test ExternalDNS with. Then apply one of the following manifests file to deploy ExternalDNS. +## Using Helm + +Create a values.yaml file to configure ExternalDNS to use plural DNS as the DNS provider. This file should include the necessary environment variables: + +```shell +provider: + name: plural +extraArgs: + - --plural-cluster=example-plural-cluster + - --plural-provider=aws # gcp, azure, equinix and kind are also possible +env: + - name: PLURAL_ACCESS_TOKEN + valueFrom: + secretKeyRef: + name: PLURAL_ACCESS_TOKEN + key: plural-env + - name: PLURAL_ENDPOINT + value: https://app.plural.sh +``` + +Finally, install the ExternalDNS chart with Helm using the configuration specified in your values.yaml file: + +```shell +helm upgrade --install external-dns external-dns/external-dns --values values.yaml +``` + ### Manifest (for clusters without RBAC enabled) ```yaml diff --git a/docs/tutorials/vultr.md b/docs/tutorials/vultr.md index c5fcbed8e8..09f6406df5 100644 --- a/docs/tutorials/vultr.md +++ b/docs/tutorials/vultr.md @@ -20,8 +20,39 @@ The environment variable `VULTR_API_KEY` will be needed to run ExternalDNS with ## Deploy ExternalDNS Connect your `kubectl` client to the cluster you want to test ExternalDNS with. + +Begin by creating a Kubernetes secret to securely store your Akamai Edge DNS Access Tokens. This key will enable ExternalDNS to authenticate with Akamai Edge DNS: + +```shell +kubectl create secret generic VULTR_API_KEY --from-literal=VULTR_API_KEY=YOUR_VULTR_API_KEY +``` + +Ensure to replace YOUR_VULTR_API_KEY, with your actual Vultr API key. + + Then apply one of the following manifests file to deploy ExternalDNS. +### Using Helm + +reate a values.yaml file to configure ExternalDNS to use Akamai Edge DNS as the DNS provider. This file should include the necessary environment variables: + +```shell +provider: + name: akamai +env: + - name: VULTR_API_KEY + valueFrom: + secretKeyRef: + name: VULTR_API_KEY + key: VULTR_API_KEY +``` + +Finally, install the ExternalDNS chart with Helm using the configuration specified in your values.yaml file: + +```shell +helm upgrade --install external-dns external-dns/external-dns --values values.yaml +``` + ### Manifest (for clusters without RBAC enabled) ```yaml @@ -49,7 +80,10 @@ spec: - --provider=vultr env: - name: VULTR_API_KEY - value: "YOU_VULTR_API_KEY" + valueFrom: + secretKeyRef: + name: VULTR_API_KEY + key: VULTR_API_KEY ``` ### Manifest (for clusters with RBAC enabled) @@ -113,7 +147,10 @@ spec: - --provider=vultr env: - name: VULTR_API_KEY - value: "YOU_VULTR_API_KEY" + valueFrom: + secretKeyRef: + name: VULTR_API_KEY + key: VULTR_API_KEY ``` ## Deploying a Nginx Service