github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/deploy/helm/templates/addons/external-dns-addon.yaml (about)

     1  apiVersion: extensions.kubeblocks.io/v1alpha1
     2  kind: Addon
     3  metadata:
     4    name: external-dns
     5    labels:
     6      {{- include "kubeblocks.labels" . | nindent 4 }}
     7    {{- if .Values.keepAddons }}
     8    annotations:
     9      helm.sh/resource-policy: keep
    10    {{- end }}
    11  spec:
    12    description: >-
    13      ExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers.
    14  
    15  {{- if (.Capabilities.KubeVersion.GitVersion | contains "-eks") }}
    16      Before enabling this addon, you should enable the aws-load-balancer-controller addon and create the hosted zone {{ index .Values "external-dns" "domain" }} in the Route53 first.
    17  
    18      Then you should properly setup permissions for external-dns to call the OpenAPI, please refer to this guide: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/aws.md
    19  
    20      Finally, you can enable this addon by executing the following command, please note replacing the variables.
    21  
    22      kbcli addon enable external-dns --set provider=aws \
    23          --set source=service \
    24          --set policy=sync \
    25          --set triggerLoopOnEvent=true \
    26          --set interval=5m \
    27          --set registry=txt \
    28          --set labelFilter=app.kubernetes.io/managed-by=kubeblocks \
    29          --set domainFilters={{ index .Values "external-dns" "domain" }} \
    30          --set aws.credentials.accessKey=${accessKey} \
    31          --set aws.credentials.secretKey=${secretKey} \
    32          --set aws.region=${region}
    33  
    34  {{- else if (.Capabilities.KubeVersion.GitVersion | contains "-ack") }}
    35      Before enabling this addon, you should create the domain {{ index .Values "external-dns" "domain" }} in the Cloud DNS service or Private Zone service first.
    36  
    37      Then you should properly setup permissions for external-dns to call the OpenAPI, please refer to this guide: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/alibabacloud.md
    38  
    39      Finally, you can enable this addon by executing the following command, please note replacing the variables.
    40  
    41      kbcli addon enable external-dns --set provider=alibabacloud \
    42          --set source=service \
    43          --set policy=sync \
    44          --set triggerLoopOnEvent=true \
    45          --set interval=5m \
    46          --set registry=txt \
    47          --set labelFilter=app.kubernetes.io/managed-by=kubeblocks \
    48          --set domainFilters={{ index .Values "external-dns" "domain" }} \
    49          --set alibabacloud.accessKeyId=${accessKeyId} \
    50          --set alibabacloud.accessKeySecret=${accessKeySecret} \
    51          --set alibabacloud.vpcId=${vpcId}
    52  
    53  {{- else if (.Capabilities.KubeVersion.GitVersion | contains "-gke") }}
    54      Before enabling this addon, you should create the zone {{ index .Values "external-dns" "domain" }} in the Cloud DNS service first.
    55  
    56      Then you should properly setup permissions for external-dns to call the OpenAPI, please refer to this guide: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/gke.md
    57  
    58      Finally, you can enable this addon by executing the following command, please note replacing the variables.
    59  
    60      kbcli addon enable external-dns --set provider=google \
    61          --set source=service \
    62          --set policy=sync \
    63          --set triggerLoopOnEvent=true \
    64          --set interval=5m \
    65          --set registry=txt \
    66          --set labelFilter=app.kubernetes.io/managed-by=kubeblocks \
    67          --set domainFilters={{ index .Values "external-dns" "domain" }} \
    68          --set google.project=${project} \
    69          --set google.serviceAccountSecret=${serviceAccountSecret} \
    70          --set google.serviceAccountSecretKey=${serviceAccountSecretKey} \
    71          --set google.serviceAccountKey=${serviceAccountKey}
    72  
    73  {{/* FIXME: Azure AKS does not have unique identifier in the git version, we should use other method to identify AKS */}}
    74  {{- else if (.Capabilities.KubeVersion.GitVersion | contains "-aks") }}
    75      Before enabling this addon, you should create the zone {{ index .Values "external-dns" "domain" }} in the Azure DNS or Azure Private Zone service first.
    76  
    77      Then you should properly setup permissions for external-dns to call the OpenAPI, please refer to these guides:
    78      https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/azure.md
    79      https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/azure-private-dns.md
    80  
    81      If it's a zone in Azure Private Zone service, you can enable this addon by executing the following command, please note replacing the variables.
    82  
    83      kbcli addon enable external-dns --set provider=azure-private-dns \
    84          --set source=service \
    85          --set policy=sync \
    86          --set triggerLoopOnEvent=true \
    87          --set interval=5m \
    88          --set registry=txt \
    89          --set labelFilter=app.kubernetes.io/managed-by=kubeblocks \
    90          --set domainFilters={{ index .Values "external-dns" "domain" }} \
    91          --set azure.subscriptionId=${subscriptionId} \
    92          --set azure.resourceGroup=${resourceGroup}
    93  
    94      If it's a zone in Azure DNS, please follow the command below.
    95  
    96      kbcli addon enable external-dns --set provider=azure \
    97          --set source=service \
    98          --set policy=sync \
    99          --set triggerLoopOnEvent=true \
   100          --set interval=5m \
   101          --set registry=txt \
   102          --set labelFilter=app.kubernetes.io/managed-by=kubeblocks \
   103          --set domainFilters={{ index .Values "external-dns" "domain" }} \
   104          --set azure.subscriptionId=${subscriptionId} \
   105          --set azure.resourceGroup=${resourceGroup}
   106  
   107  {{- end }}
   108  
   109    type: Helm
   110  
   111    helm:
   112      {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "external-dns" "version" "6.20.4" "values" .Values) | indent 4 }}
   113      {{- include "kubeblocks.addonChartsImage" . | indent 4 }}
   114  
   115      installOptions:
   116        {{- if hasPrefix "oci://" .Values.addonChartLocationBase }}
   117        version: 6.20.4
   118        {{- end }}
   119  
   120      installValues:
   121        configMapRefs:
   122        - name: external-dns-chart-kubeblocks-values
   123          key: values-kubeblocks-override.yaml
   124  
   125      valuesMapping:
   126        valueMap:
   127          replicaCount: replicaCount
   128  
   129        jsonMap:
   130          tolerations: tolerations
   131  
   132        resources:
   133          cpu:
   134            requests: resources.requests.cpu
   135            limits: resources.limits.cpu
   136          memory:
   137            requests: resources.requests.memory
   138            limits: resources.limits.memory
   139  
   140    defaultInstallValues:
   141    - replicas: 1
   142      {{- with .Values.tolerations }}
   143      tolerations: {{ toJson . | quote }}
   144      {{- end }}
   145  
   146    installable:
   147      autoInstall: {{ index .Values "external-dns" "enabled" }}