use octodns
This commit is contained in:
		
							
								
								
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| [submodule "infrastructure/external-dns/octodns"] | ||||
| 	path = infrastructure/external-dns/octodns | ||||
| 	url = ssh://git@git.kluster.moll.re:2222/remoll/dns.git | ||||
							
								
								
									
										18
									
								
								infrastructure/external-dns/cloudflare-api.sealedsecret.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								infrastructure/external-dns/cloudflare-api.sealedsecret.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| --- | ||||
| apiVersion: bitnami.com/v1alpha1 | ||||
| kind: SealedSecret | ||||
| metadata: | ||||
|   creationTimestamp: null | ||||
|   name: cloudflare-api | ||||
|   namespace: external-dns | ||||
| spec: | ||||
|   encryptedData: | ||||
|     CLOUDFLARE_ACCOUNT_ID: AgCq4cWeBKbpqC4MgM2qkDgThjpmuOBMAA76SrOQqV7xW7KQaqkcVgwpdSWpcI3nhkx+5bdrm4RrwU4T5+svWN7TGu9BK003b0aHEkJwi0R5EQhVqCrmc9544rUrUHbfO5zgQtzU05zxs2jigs8YRJ1xEL0RzQ5scYUj385kzasdCqaHLNx5SLE0eCDBOcoOaqdorrZN3JpvM9ObNtGAUVb+zLNac3CAtQnG4ZxcClcr6t23ybwXdq1h2q6JPauet6kW+SViaE99AbqW7UPTZ5JfQ+KRl3Sz4JiqwO17qWc8gSLrU/V2fOrjqszxcRPC8u0N9YDZQeKCcSTIq/iMG9Jjuqwpr6G9D6rfNFuXzMCWgG/u80TTbnKVF+OKjUvX9jMyQjp6C3MyL14qLWTCkLsB1gfvg9nddC+AWmR1tV9rxNDQp8RS0aPHzuICNx6BfRIT/IGk7RpSppZyYYzdhtPjpcZICp2YpXFX0djFQmnTs1H56TNek9NVsx8A73jUGp0yq7d4WNY9zWPz1sV6qZYIiStwq1gD/pAZ7UE3aRjfdY4T+AgaUvUhHNSgjazkA3cty7xj80gHe9/ys8xrUAZB2ang2bvk9/UuwuqUZQdbLrWboI2phoUp48ZA2GEOvDa0mysFI8+inTBSXR0nQTO5j3FVp2tbYytQhN9w7ND3gvvHXc1iobL6IsqygWfnoyCTlH5lpnVTJY8ZRJiojxMUVsL1alut3LcOJc5bv2FBcA== | ||||
|     CLOUDFLARE_API_TOKEN: AgCiMDrPuEmucL5ZWMP6iA5VYQ+GRu7lJwyKgleitrNeFuiFOYcUg3zC+q3zot9xTTcZSTknzvT97lbvO8pIuN0HqSoL5DOi+b06Tl8vQ+LDPbjMRonULzt69EaRuU0XZIW0cPd5LxLVrRmKkNoV2y0z7BHZuR0GGGd5esfSLmUx9AJj27MQC+ucAV3QtyXaAoNtgK+E4h6ZlhIzUWGijtrBKc+A5oCtg3TunXvJ7EhiFDaWCvlNQAakrxrffT7GEmJcMN2j2ZMzChlMB6dpvH9xy7aj59JaQJHdzr8J5LU3n5aTDTZbRYAQNiYe6M/nmiiVWdob3XeZNXSdjskrw/sb6EIZbTeckVxQK0lbSoQ9ER5ihgL/WpKNRJytksm/7c0FD7NI4rBdyn7YrIllVUnQX/g7MOfNRdrveW47mNl2m2/y8jHBguYXn21YLTqKaZvRydtsJ1h+UnFyMmM7h5vH3iJ4WGdE7UHNitvZU5FuvcaZU79Xmd7KzG/Bo1NoPQFZ8bBteHoDYy7M9ROXXjVsXq60pLL8MO7nHz2XWKTu8QxgoehxW+xksN4HUZw1u4mcVo0vHAdoAn747MrEL0E58c1a7L9XMOlgofFshFbgOC6ieI2hbge5huVFTIlevxSzAGMYIZ6QcUPnKBdyayC2Njmgpeh5xGl8NV5Mt6v92wI5mzLVH9UblmbcfMuf4FJx2UprUSXdC6dc6XeaghXGJDHK2hEyoIwuqb4nRp2nlrYCfUYs8UbU | ||||
|     CLOUDFLARE_EMAIL: AgCuaYGqT6kY2bMazYHkzFe09btYA6NT3GpX7ZOyJceplv3IKGxl4b9FRuGI22qtzV2B7y/g2lRpeLMsFobk8sIRsk76wBE5LzQ6WdM3rXQ1QvIIodrzwlcwNreafh7vad85zcVb5RDMcTJGmkNAwGkThfmUIlUpuUBEgbc6q1KHUxVCjKFRUMvhhHMT3sQQBwwbfg2uQLP5AivC9VJXiKIw0JXc5VAWw9HbMjtagD+dW2VEwauTi3DHHTaTYfl2Jbuhcr3HtVj4cskWMkR5R8A7KugizBxfU0Gr2ac+DGG7MxN681GtmtgGymjzCdJBDrnu5B2xh12XHbl3/U5WBGb5m9OghtkbWJVpEKmypLqYpYfbWx+Kv9ryNOH8NnKoWruNTNx0bGSIeU9ZYgg3dnvT/7P7cMLJurWry8TfWcs+Q6n4P9Rhml5tYAx3Pgqew1GZgnq37ZxjSSrr8oAMoDMIOvX55Ip1MQZEeTLGTvaU47Tuc/nNqB7whTu9cskYafGIK8dKk/f33RnXWiy8JMRMjVIbj4MMbQHkxXhrvfjwDj+h00nARbSToc+7Vs7IFKbGSrss8YvyfDsKMnu8C3YU2Bj0D44IK8pxI7Onrme6SO9tUd7+rdojZFKONQZpQlRfeUNEReHwe8rFqfnkWgCN9M8xga3u4jDsFXyURXbfD9kHHkjeeoqr35gwyjOVR93iyheB/HldmH5J9LD0myLabTg5 | ||||
|   template: | ||||
|     metadata: | ||||
|       creationTimestamp: null | ||||
|       name: cloudflare-api | ||||
|       namespace: external-dns | ||||
|     type: Opaque | ||||
| @@ -1,16 +0,0 @@ | ||||
| --- | ||||
| apiVersion: bitnami.com/v1alpha1 | ||||
| kind: SealedSecret | ||||
| metadata: | ||||
|   creationTimestamp: null | ||||
|   name: cloudflare-api | ||||
|   namespace: external-dns | ||||
| spec: | ||||
|   encryptedData: | ||||
|     api-token: AgCk1ymW3g9a6kIqpZtjeaeVYB/gGw06bs7E8u2MWX0wJlegoYW5uRJ52QhKZJrD7Omh609WdfXaJlZFByteNWWUEpUO+AkpFXvUd0y8qazEzdRkhDuJBCcRS0Gi9p/FgmqOQ7q0ot3vKMPA0sqmNFeKrG1b8wCyLVbuoYSX2WD4LE1ibVUyeTBXuLTVQy+XnEI2CnQ/sq7tAHGpHxOrLqGdcW5CzVPxva1TBtBrYG9DxFpX08IaG1dIXNCm4tpCSAoceSfgTRtbWZEg2Y0MovxYS79t7NTqx7odLeZnTeqAcM0hE+fCHUwMk03MKtGhe88K9xsCKqZBe/qrY/t+1LNug0p26HoO4tjqGgXjKNEkk1Fpp2UuNq0GEJOgitIoo/TGAR4mefBZZ6KinHYTw3D3nQKphU7pDy9a5ivH+aFO+Bm7vlRvyAtjK4SHbPQOZDmbE/jkkgVZ6yP4koPMTibyLeY2gTPs3Dvviq6BhanUaAQSgjujU0T+9FagC2wKQdppzJCx0wcD9vWSn1Dikhb9SfpicTnztAKH3Ww7fA/siZvuJmMRB40e7rGXZqG3esMNtptlnt8mGlfWG4MzJ4dyRT7M67lfJVC8yDxHlGWyJic6eDEFxfzvBmiZg9kwA0GwkBFf0w/iIgXlkHlKCg8WBMa9U2gTPxcOiMJMlDi1m/NkwhrOL39++WThcP9ahJNoSkhV8feWJ632vP21ldd15TiOcr+hTOxTPj2u252X/i7OOJTgzmf5 | ||||
|   template: | ||||
|     metadata: | ||||
|       creationTimestamp: null | ||||
|       name: cloudflare-api | ||||
|       namespace: external-dns | ||||
|     type: Opaque | ||||
							
								
								
									
										52
									
								
								infrastructure/external-dns/cronjob.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								infrastructure/external-dns/cronjob.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| apiVersion: batch/v1beta1 | ||||
| kind: CronJob | ||||
| metadata: | ||||
|   name: octodns-deployment | ||||
| spec: | ||||
|   schedule: "*/1 * * * *" | ||||
|   jobTemplate: | ||||
|     spec: | ||||
|       template: | ||||
|         spec: | ||||
|           containers: | ||||
|             - name: git | ||||
|               image: alpine/git | ||||
|               command: ["git"] | ||||
|               args: | ||||
|                 - clone | ||||
|                 - https://git.kluster.moll.re/remoll/dns.git | ||||
|                 - /etc/octodns/dns | ||||
|               volumeMounts: | ||||
|                 - name: octodns-config | ||||
|                   mountPath: /etc/octodns | ||||
|  | ||||
|             - name: octodns | ||||
|               image: octodns | ||||
|               env: | ||||
|                 - name: CLOUDFLARE_ACCOUNT_ID | ||||
|                   valueFrom: | ||||
|                     secretKeyRef: | ||||
|                       name: cloudflare-api | ||||
|                       key: CLOUDFLARE_ACCOUNT_ID | ||||
|                 - name: CLOUDFLARE_API_TOKEN | ||||
|                   valueFrom: | ||||
|                     secretKeyRef: | ||||
|                       name: cloudflare-api | ||||
|                       key: CLOUDFLARE_API_TOKEN | ||||
|                 - name: CLOUDFLARE_EMAIL | ||||
|                   valueFrom: | ||||
|                     secretKeyRef: | ||||
|                       name: cloudflare-api | ||||
|                       key: CLOUDFLARE_EMAIL | ||||
|  | ||||
|               command: ["octodns-sync"] | ||||
|               args: | ||||
|                 - octodns-sync --config-file /etc/octodns/config.yaml # --doit | ||||
|               volumeMounts: | ||||
|                 - name: octodns-config | ||||
|                   mountPath: /etc/octodns | ||||
|  | ||||
|           volumes: | ||||
|           - name: octodns-config | ||||
|             emptyDir: {} | ||||
|           restartPolicy: Never | ||||
| @@ -1,29 +0,0 @@ | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: external-dns | ||||
| spec: | ||||
|   strategy: | ||||
|     type: Recreate | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: external-dns | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: external-dns | ||||
|     spec: | ||||
|       serviceAccountName: external-dns | ||||
|       containers: | ||||
|       - name: external-dns | ||||
|         image: external-dns | ||||
|         args: | ||||
|         - --source=traefik-proxy | ||||
|         - --domain-filter=moll.re | ||||
|         - --provider=cloudflare | ||||
|         env: | ||||
|         - name: CF_API_TOKEN | ||||
|           valueFrom: | ||||
|             secretKeyRef: | ||||
|               name: cloudflare-api | ||||
|               key: api-token | ||||
| @@ -5,11 +5,10 @@ namespace: external-dns | ||||
|  | ||||
| resources: | ||||
|   - namespace.yaml | ||||
|   - cloudflare.sealedsecret.yaml | ||||
|   - deployment.yaml | ||||
|   - rbac.yaml | ||||
|   - cloudflare-api.sealedsecret.yaml | ||||
|   - cronjob.yaml | ||||
|  | ||||
| images: | ||||
|   - name: external-dns | ||||
|     newName: registry.k8s.io/external-dns/external-dns | ||||
|     newTag: v0.14.0 | ||||
|   - name: octodns | ||||
|     newName: octodns/octodns # has all plugins | ||||
|     newTag: "2023.12" | ||||
|   | ||||
| @@ -1,32 +0,0 @@ | ||||
| apiVersion: v1 | ||||
| kind: ServiceAccount | ||||
| metadata: | ||||
|   name: external-dns | ||||
| --- | ||||
| apiVersion: rbac.authorization.k8s.io/v1 | ||||
| kind: ClusterRole | ||||
| metadata: | ||||
|   name: external-dns | ||||
| rules: | ||||
| - apiGroups: [""] | ||||
|   resources: ["services","endpoints","pods"] | ||||
|   verbs: ["get","watch","list"] | ||||
| - apiGroups: [""] | ||||
|   resources: ["nodes"] | ||||
|   verbs: ["list","watch"] | ||||
| - apiGroups: ["traefik.containo.us","traefik.io"] | ||||
|   resources: ["ingressroutes", "ingressroutetcps", "ingressrouteudps"] | ||||
|   verbs: ["get","watch","list"] | ||||
| --- | ||||
| apiVersion: rbac.authorization.k8s.io/v1 | ||||
| kind: ClusterRoleBinding | ||||
| metadata: | ||||
|   name: external-dns-viewer | ||||
| roleRef: | ||||
|   apiGroup: rbac.authorization.k8s.io | ||||
|   kind: ClusterRole | ||||
|   name: external-dns | ||||
| subjects: | ||||
| - kind: ServiceAccount | ||||
|   name: external-dns | ||||
|   namespace: external-dns | ||||
		Reference in New Issue
	
	Block a user