1import * as _ from 'lodash-es'2import { kubeApplyK } from '../../kustomizeF.mts'3import { secretEnvTemplate } from '../../k8sSecF.mts'4import { getKlusterCtx } from '../../ctxF/klusterCtxF.mts'5import { guardHasCfSecret } from '../certmanager/certManagerCoreF.mts'6import { resourcesAction } from '../../resourcesActionF.mts'7import { getMyDir } from '../../../setPtDirForImportMetaUrlF.mts'8import { getAction } from '../../../ctxF/actionCtxF.mts'9import { tsImportMetaUrl } from '../../../../ptDirF.mts'10import { tsSec } from '../../../../serverF/secretsF/tsSecF.mts'12const thisDir = getMyDir(tsImportMetaUrl(import.meta.url))13const kustPath = thisDir + '/kust'15const deploymentTmpl = ({domainNames, secretName, cluster_name, extDnsPolicy = 'upsert-only'}: {domainNames?: string[], secretName?: string, cluster_name: string, extDnsPolicy?: string}) => {16 const name = 'external-dns'18 return {19 apiVersion: "apps/v1",20 kind: "Deployment",21 metadata: {22 name,23 labels: {24 cluster_name25 }26 },27 spec: {28 replicas: 1,29 selector: {30 matchLabels: {31 name32 }33 },34 strategy: {35 type: "Recreate"36 },37 template: {38 metadata: {39 labels: {40 name41 }42 },43 spec: {44 serviceAccountName: 'external-dns',45 containers: [46 {47 name: "external-dns",48 image: "registry.k8s.io/external-dns/external-dns:v0.15.1",49 args: [50 "--source=service",51 "--source=ingress",52 `--policy=${extDnsPolicy}`,53 `--txt-owner-id=${cluster_name}`,54 ..._.map(domainNames, (domain) => `--domain-filter=${domain}`),55 "--provider=cloudflare"56 ],57 envFrom: [58 {59 secretRef: {60 name: secretName61 }62 }63 ],64 }65 ]66 }67 }68 }69 }70}72export const k8sExtDns = async () => {73 const {cluster_name, cfApiKeySecretName: secretName, domainNames, extDnsPolicy} = getKlusterCtx()77 const resources = [78 deploymentTmpl({domainNames, secretName, cluster_name, extDnsPolicy}),79 secretEnvTemplate({name: secretName, kubeName: secretName}),80 ]81 await resourcesAction({resources, action})83 await kubeApplyK({path: kustPath, cluster_name, replacementH: {}, action})84}