apiVersion: apps/v1 kind: Deployment metadata: name: external-dns namespace: {{ taskserv.namespace }} labels: app.kubernetes.io/name: external-dns app.kubernetes.io/version: "{{ taskserv.version }}" spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: external-dns strategy: type: Recreate template: metadata: labels: app.kubernetes.io/name: external-dns spec: serviceAccountName: external-dns {% if taskserv.placement is defined and taskserv.placement.node_class %} affinity: nodeAffinity: {% if taskserv.placement.mode == "require" %} requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-class.{{ taskserv.placement.node_class.0 }} operator: In values: ["true"] {% else %} preferredDuringSchedulingIgnoredDuringExecution: {% for c in taskserv.placement.node_class %} - weight: {{ 100 - loop.index0 * 10 }} preference: matchExpressions: - key: node-class.{{ c }} operator: In values: ["true"] {% endfor %} {% endif %} {% endif %} containers: - name: external-dns image: registry.k8s.io/external-dns/external-dns:{{ taskserv.version }} args: - --source=service - --source=crd - --crd-source-apiversion=externaldns.k8s.io/v1alpha1 - --crd-source-kind=DNSEndpoint - --provider=cloudflare - --policy={{ policy }} - --registry=txt - --txt-owner-id={{ taskserv.txt_owner_id }} - --interval={{ taskserv.interval }} env: - name: CF_API_TOKEN valueFrom: secretKeyRef: name: {{ cf_secret_ref }} key: api-token {% if taskserv.resources_effective is defined %} resources: requests: cpu: "{{ taskserv.resources_effective.cpu.request }}" memory: "{{ taskserv.resources_effective.memory.request }}" limits: cpu: "{{ taskserv.resources_effective.cpu.limit }}" memory: "{{ taskserv.resources_effective.memory.limit }}" {% else %} resources: requests: cpu: 50m memory: 64Mi limits: cpu: 200m memory: 128Mi {% endif %}