mirror of
https://github.com/helm/charts.git
synced 2026-08-23 22:37:45 +00:00
[stable/external-dns] Add support for Infoblox external-dns (#9102)
Signed-off-by: rabadin <rabadin@cisco.com>
This commit is contained in:
@@ -3,9 +3,12 @@ description:
|
||||
Configure external DNS servers (AWS Route53, Google CloudDNS and others)
|
||||
for Kubernetes Ingresses and Services
|
||||
name: external-dns
|
||||
version: 1.0.2
|
||||
version: 1.1.0
|
||||
appVersion: 0.5.7
|
||||
home: https://github.com/kubernetes-incubator/external-dns
|
||||
sources:
|
||||
- https://github.com/kubernetes-incubator/external-dns
|
||||
engine: gotpl
|
||||
maintainers:
|
||||
- name: rabadin
|
||||
email: rabadin@cisco.com
|
||||
|
||||
@@ -21,50 +21,59 @@ $ helm install --name my-release stable/external-dns
|
||||
The following table lists the configurable parameters of the external-dns chart and their default values.
|
||||
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
|
||||
| `annotationFilter` | Filter sources managed by external-dns via annotation using label selector semantics (default: all sources) (optional). | `""` |
|
||||
| `aws.accessKey` | `AWS_ACCESS_KEY_ID` to set in the environment (optional). | `""` |
|
||||
| `aws.secretKey` | `AWS_SECRET_ACCESS_KEY` to set in the environment (optional). | `""` |
|
||||
| `aws.region` | `AWS_DEFAULT_REGION` to set in the environment (optional). | `us-east-1` |
|
||||
| `aws.roleArn` | If assume role credentials are used then is the role_arn (arn:aws:iam::....). Leave empty if not used. | `""` |
|
||||
| `aws.zoneType` | Filter for zones of this type (optional, options: public, private). | `""` |
|
||||
| `azure.secretName` | Set the secret created for the SP for azure, should contain an azure.json file | `""` |
|
||||
| `cloudflare.apiKey` | `CF_API_KEY` to set in the environment (optional). | `""` |
|
||||
| `cloudflare.email` | `CF_API_EMAIL` to set in the environment (optional). | `""` |
|
||||
| `domainFilters` | Limit possible target zones by domain suffixes (optional). | `[]` |
|
||||
| `extraArgs` | Optional object of extra args, as `name`: `value` pairs. Where the name is the command line arg to external-dns. | `{}` |
|
||||
| `extraEnv` | Optional array of extra environment variables. Supply a `name` property and either `value` of `valueFrom` for each. | `[]` |
|
||||
| `google.project` | When using the Google provider, specify the Google project (required when provider=google). | `""` |
|
||||
| `google.serviceAccountSecret` | When using the Google provider, optionally specify the secret which contains credentials.json if necessary. | `""` |
|
||||
| `image.name` | Container image name (Including repository name if not `hub.docker.com`). | `registry.opensource.zalan.do/teapot/external-dns` |
|
||||
| `image.pullPolicy` | Container pull policy. | `IfNotPresent` |
|
||||
| `image.tag` | Container image tag. | `v0.5.7` |
|
||||
| `image.pullSecrets` | Array of pull secret names | `[]` |
|
||||
| `logLevel` | Verbosity of the logs (options: panic, debug, info, warn, error, fatal) | `info` |
|
||||
| `nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `podAnnotations` | Additional annotations to apply to the pod. | `{}` |
|
||||
| `policy` | Modify how DNS records are sychronized between sources and providers (options: sync, upsert-only ). | `upsert-only` |
|
||||
| `provider` | The DNS provider where the DNS records will be created (options: aws, google, azure, cloudflare, digitalocean, inmemory ). | `aws` |
|
||||
| `publishInternalServices` | Allow external-dns to publish DNS records for ClusterIP services (optional). | `false` |
|
||||
| `rbac.create` | If true, create & use RBAC resources | `false` |
|
||||
| `rbac.serviceAccountName` | Existing ServiceAccount to use (ignored if rbac.create=true) | `default` |
|
||||
| `registry` | Registry method to use (options: txt, noop) | `txt` |
|
||||
| `resources` | CPU/Memory resource requests/limits. | `{}` |
|
||||
| `priorityClassName` | priorityClassName | `""` |
|
||||
| `service.annotations` | Annotations to add to service | `{}` |
|
||||
| `service.clusterIP` | IP address to assign to service | `""` |
|
||||
| `service.externalIPs` | Service external IP addresses | `[]` |
|
||||
| `service.loadBalancerIP` | IP address to assign to load balancer (if supported) | `""` |
|
||||
| `service.loadBalancerSourceRanges` | List of IP CIDRs allowed access to load balancer (if supported) | `[]` |
|
||||
| `service.servicePort` | Service port to expose | `7979` |
|
||||
| `service.type` | Type of service to create | `ClusterIP` |
|
||||
| `sources` | List of resource types to monitor, possible values are fake, service or ingress. | `[service, ingress]` |
|
||||
| `tolerations` | List of node taints to tolerate (requires Kubernetes >= 1.6) | `[]` |
|
||||
| `affinity` | List of affinities (requires Kubernetes >=1.6) | `{}` |
|
||||
| `txtOwnerId` | When using the TXT registry, a name that identifies this instance of ExternalDNS (optional) | `"default"` |
|
||||
| `txtPrefix` | When using the TXT registry, a prefix for ownership records that avoids collision with CNAME entries (optional) | `""` |
|
||||
| `zoneIdFilters` | Limit possible target zones by zone id (optional) | `[]` |
|
||||
| Parameter | Description | Default |
|
||||
| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
|
||||
| `annotationFilter` | Filter sources managed by external-dns via annotation using label selector semantics (default: all sources) (optional). | `""` |
|
||||
| `aws.accessKey` | `AWS_ACCESS_KEY_ID` to set in the environment (optional). | `""` |
|
||||
| `aws.secretKey` | `AWS_SECRET_ACCESS_KEY` to set in the environment (optional). | `""` |
|
||||
| `aws.region` | `AWS_DEFAULT_REGION` to set in the environment (optional). | `us-east-1` |
|
||||
| `aws.roleArn` | If assume role credentials are used then is the role_arn (arn:aws:iam::....). Leave empty if not used. | `""` |
|
||||
| `aws.zoneType` | Filter for zones of this type (optional, options: public, private). | `""` |
|
||||
| `azure.secretName` | Set the secret created for the SP for azure, should contain an azure.json file | `""` |
|
||||
| `cloudflare.apiKey` | `CF_API_KEY` to set in the environment (optional). | `""` |
|
||||
| `cloudflare.email` | `CF_API_EMAIL` to set in the environment (optional). | `""` |
|
||||
| `domainFilters` | Limit possible target zones by domain suffixes (optional). | `[]` |
|
||||
| `extraArgs` | Optional object of extra args, as `name`: `value` pairs. Where the name is the command line arg to external-dns. | `{}` |
|
||||
| `extraEnv` | Optional array of extra environment variables. Supply a `name` property and either `value` of `valueFrom` for each. | `[]` |
|
||||
| `google.project` | When using the Google provider, specify the Google project (required when provider=google). | `""` |
|
||||
| `google.serviceAccountSecret` | When using the Google provider, optionally specify the secret which contains credentials.json if necessary. | `""` |
|
||||
| `image.name` | Container image name (Including repository name if not `hub.docker.com`). | `registry.opensource.zalan.do/teapot/external-dns` |
|
||||
| `image.pullPolicy` | Container pull policy. | `IfNotPresent` |
|
||||
| `image.tag` | Container image tag. | `v0.5.7` |
|
||||
| `image.pullSecrets` | Array of pull secret names | `[]` |
|
||||
| `infoblox.gridHost` | When using the Infoblox provider, specify the Infoblox Grid host. | `""` |
|
||||
| `infoblox.wapiUsername` | When using the Infoblox provider, specify the Infoblox WAPI username. | `""` |
|
||||
| `infoblox.wapiPassword` | When using the Infoblox provider, specify the Infoblox WAPI password. | `""` |
|
||||
| `infoblox.domainFilter` | When using the Infoblox provider, optionally specify the domain. | `""` |
|
||||
| `infoblox.noSslVerify` | When using the Infoblox provider, optionally disable SSL verification. | `false` |
|
||||
| `infoblox.wapiPort` | When using the Infoblox provider, optionally specify the Infoblox WAPI port. | `""` |
|
||||
| `infoblox.wapiVersion` | When using the Infoblox provider, optionally specify the Infoblox WAPI version. | `""` |
|
||||
| `infoblox.wapiConnectionPoolSize` | When using the Infoblox provider, optionally specify the Infoblox WAPI request connection pool size. | `""` |
|
||||
| `infoblox.wapiHttpTimeout` | When using the Infoblox provider, optionally specify the Infoblox WAPI request timeout in seconds. | `""` |
|
||||
| `logLevel` | Verbosity of the logs (options: panic, debug, info, warn, error, fatal) | `info` |
|
||||
| `nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `podAnnotations` | Additional annotations to apply to the pod. | `{}` |
|
||||
| `policy` | Modify how DNS records are sychronized between sources and providers (options: sync, upsert-only ). | `upsert-only` |
|
||||
| `provider` | The DNS provider where the DNS records will be created (options: aws, google, azure, cloudflare, digitalocean, inmemory, infoblox). | `aws` |
|
||||
| `publishInternalServices` | Allow external-dns to publish DNS records for ClusterIP services (optional). | `false` |
|
||||
| `rbac.create` | If true, create & use RBAC resources | `false` |
|
||||
| `rbac.serviceAccountName` | Existing ServiceAccount to use (ignored if rbac.create=true) | `default` |
|
||||
| `registry` | Registry method to use (options: txt, noop) | `txt` |
|
||||
| `resources` | CPU/Memory resource requests/limits. | `{}` |
|
||||
| `priorityClassName` | priorityClassName | `""` |
|
||||
| `service.annotations` | Annotations to add to service | `{}` |
|
||||
| `service.clusterIP` | IP address to assign to service | `""` |
|
||||
| `service.externalIPs` | Service external IP addresses | `[]` |
|
||||
| `service.loadBalancerIP` | IP address to assign to load balancer (if supported) | `""` |
|
||||
| `service.loadBalancerSourceRanges` | List of IP CIDRs allowed access to load balancer (if supported) | `[]` |
|
||||
| `service.servicePort` | Service port to expose | `7979` |
|
||||
| `service.type` | Type of service to create | `ClusterIP` |
|
||||
| `sources` | List of resource types to monitor, possible values are fake, service or ingress. | `[service, ingress]` |
|
||||
| `tolerations` | List of node taints to tolerate (requires Kubernetes >= 1.6) | `[]` |
|
||||
| `affinity` | List of affinities (requires Kubernetes >=1.6) | `{}` |
|
||||
| `txtOwnerId` | When using the TXT registry, a name that identifies this instance of ExternalDNS (optional) | `"default"` |
|
||||
| `txtPrefix` | When using the TXT registry, a prefix for ownership records that avoids collision with CNAME entries (optional) | `""` |
|
||||
| `zoneIdFilters` | Limit possible target zones by zone id (optional) | `[]` |
|
||||
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
|
||||
|
||||
@@ -67,6 +67,23 @@ spec:
|
||||
{{- if .Values.google.project }}
|
||||
- --google-project={{ .Values.google.project }}
|
||||
{{- end }}
|
||||
{{- if eq .Values.provider "infoblox" }}
|
||||
- --infoblox-grid-host={{ .Values.infoblox.gridHost }}
|
||||
{{- if .Values.infoblox.domainFilter }}
|
||||
- --domain-filter={{ .Values.infoblox.domainFilter }}
|
||||
{{- end }}
|
||||
{{- if .Values.infoblox.wapiPort }}
|
||||
- --infoblox-wapi-port={{ .Values.infoblox.wapiPort }}
|
||||
{{- end }}
|
||||
{{- if .Values.infoblox.wapiVersion }}
|
||||
- --infoblox-wapi-version={{ .Values.infoblox.wapiVersion }}
|
||||
{{- end }}
|
||||
{{- if .Values.infoblox.noSslVerify }}
|
||||
- --no-infoblox-ssl-verify
|
||||
{{- else }}
|
||||
- --infoblox-ssl-verify
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
{{- if .Values.google.serviceAccountSecret }}
|
||||
- name: google-service-account
|
||||
@@ -106,6 +123,26 @@ spec:
|
||||
- name: CF_API_EMAIL
|
||||
value: "{{ .Values.cloudflare.email }}"
|
||||
{{- end }}
|
||||
{{- if .Values.infoblox.wapiConnectionPoolSize }}
|
||||
- name: EXTERNAL_DNS_INFOBLOX_HTTP_POOL_CONNECTIONS
|
||||
value: "{{ .Values.infoblox.wapiConnectionPoolSize }}"
|
||||
{{- end }}
|
||||
{{- if .Values.infoblox.wapiHttpTimeout }}
|
||||
- name: EXTERNAL_DNS_INFOBLOX_HTTP_REQUEST_TIMEOUT
|
||||
value: "{{ .Values.infoblox.wapiHttpTimeout }}"
|
||||
{{- end }}
|
||||
{{- if and .Values.infoblox.wapiUsername .Values.infoblox.wapiPassword }}
|
||||
- name: EXTERNAL_DNS_INFOBLOX_WAPI_USERNAME
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "external-dns.fullname" . }}
|
||||
key: infoblox_wapi_username
|
||||
- name: EXTERNAL_DNS_INFOBLOX_WAPI_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "external-dns.fullname" . }}
|
||||
key: infoblox_wapi_password
|
||||
{{- end }}
|
||||
{{- $root := . -}}
|
||||
{{- range .Values.extraEnv }}
|
||||
- name: {{ .name }}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{{- if or (and .Values.aws.secretKey .Values.aws.accessKey) .Values.cloudflare.apiKey .Values.extraEnv -}}
|
||||
{{- if or (and .Values.aws.secretKey .Values.aws.accessKey) .Values.cloudflare.apiKey (and .Values.infoblox.wapiUsername .Values.infoblox.wapiPassword) .Values.extraEnv -}}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
@@ -14,6 +14,11 @@ data:
|
||||
{{- if .Values.cloudflare.apiKey }}
|
||||
cloudflare_api_key: {{ .Values.cloudflare.apiKey | b64enc | quote }}
|
||||
{{- end }}
|
||||
{{- if and .Values.infoblox.wapiUsername .Values.infoblox.wapiPassword }}
|
||||
infoblox_wapi_username: {{ .Values.infoblox.wapiUsername | b64enc | quote }}
|
||||
infoblox_wapi_password: {{ .Values.infoblox.wapiPassword | b64enc | quote }}
|
||||
{{- end }}
|
||||
|
||||
{{- range .Values.extraEnv }}
|
||||
{{- if .value }}
|
||||
{{ .name }}: {{ .value | b64enc | quote }}
|
||||
|
||||
@@ -39,6 +39,20 @@ google:
|
||||
project: ""
|
||||
serviceAccountSecret: ""
|
||||
|
||||
# Infoblox keys to inject
|
||||
infoblox:
|
||||
# Required keys:
|
||||
wapiUsername: ""
|
||||
wapiPassword: ""
|
||||
gridHost: ""
|
||||
# Optional keys:
|
||||
domainFilter: ""
|
||||
noSslVerify: false
|
||||
wapiPort: ""
|
||||
wapiVersion: ""
|
||||
wapiConnectionPoolSize: ""
|
||||
wapiHttpTimeout: ""
|
||||
|
||||
## Limit possible target zones by domain suffixes (optional)
|
||||
domainFilters: []
|
||||
## Limit possible target zones by zone id (optional)
|
||||
|
||||
Reference in New Issue
Block a user