{"id":22772707,"url":"https://github.com/akyriako/strato-dyndns","last_synced_at":"2025-04-15T06:49:50.052Z","repository":{"id":80158165,"uuid":"570713397","full_name":"akyriako/strato-dyndns","owner":"akyriako","description":"Strato DynDNS Controller updates your domains' DNS records on STRATO AG. A custom Controller is observing Domain CRs and syncing their desired state with STRATO DNS servers. THIS SOFTWARE IS IN NO WAY ASSOCIATED OR AFFILIATED WITH STRATO AG","archived":false,"fork":false,"pushed_at":"2024-01-17T15:06:59.000Z","size":254,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-15T06:49:44.864Z","etag":null,"topics":["dyndns","dyndns-refresh","dyndns-updater","golang","kubebuilder","kubernetes","kubernetes-controller","kubernetes-crd","kubernetes-operator","strato"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akyriako.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2022-11-25T22:38:59.000Z","updated_at":"2024-03-02T13:28:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"2d44c710-9fe6-4926-b5c7-830d52ee17a4","html_url":"https://github.com/akyriako/strato-dyndns","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akyriako%2Fstrato-dyndns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akyriako%2Fstrato-dyndns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akyriako%2Fstrato-dyndns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akyriako%2Fstrato-dyndns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akyriako","download_url":"https://codeload.github.com/akyriako/strato-dyndns/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249023707,"owners_count":21199958,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dyndns","dyndns-refresh","dyndns-updater","golang","kubebuilder","kubernetes","kubernetes-controller","kubernetes-crd","kubernetes-operator","strato"],"created_at":"2024-12-11T17:09:24.319Z","updated_at":"2025-04-15T06:49:50.033Z","avatar_url":"https://github.com/akyriako.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Strato DynDNS Controller for Kubernetes\nStrato DynDNS Controller updates your domains' DNS records on STRATO AG using Kubernetes Custom Resources and Controller\n\n![k9s domains list](assets/SCR-20221124-gda.png)\n\n## Disclaimer\nTHIS SOFTWARE IS IN NO WAY ASSOCIATED OR AFFILIATED WITH [STRATO AG](https://www.strato.de)\n\n## Description\nA custom Controller is observing Domain CRs and syncing their desired state with STRATO DNS servers. You can either define explicitely an IPv4 address (Manual mode) or let the Controller discover you public IPv4 assigned to you by your ISP (Dynamic mode) \n\n## Getting Started\nYou’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) or [K3D](https://k3d.io/v5.4.6/) to get a local cluster for testing, or run against a remote cluster.\n**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows).\n\n### Running on the cluster\n\n1. Build and push your image to the location specified by `IMG` in `Makefile`:\n\n```shell\n# Image URL to use all building/pushing image targets\nIMG_TAG ?= $(shell git rev-parse --short HEAD)\nIMG_NAME ?= strato-dyndns\nDOCKER_HUB_NAME ?= $(shell docker info | sed '/Username:/!d;s/.* //')\nIMG ?= $(DOCKER_HUB_NAME)/$(IMG_NAME):$(IMG_TAG)\n```\n\t\n```sh\nmake docker-build docker-push\n```\n\t\n2. Deploy the controller to the cluster with the image using `IMG`:\n\n```sh\nmake deploy\n```\n\nor \n\n3. Deploy the controller to the cluster with the image using Helm chart:\n\n```sh\nhelm install strato-dyndns config/helm/\n```\n\n4. Install Instances of Custom Resources:\n\nEncode your STRATO DynDNS password for your domain or your STRATO DynDNS master password:\n\n```sh\n\necho -n \"password\" | base64\n\n```\n\nCreate a Secret containing the base64 encoded password for your Domain:\n\n```\napiVersion: v1\nkind: Secret\nmetadata:\n  name: strato-dyndns-password\ntype: Opaque\ndata:\n  password: cGFzc3dvcmQ=\n```\n\nCreate a Domain pointing to the FQDN of your domain registered with STRATO and bind it with the Secret containing the password for this DynDNS account:\n\n```\napiVersion: dyndns.contrib.strato.com/v1alpha1\nkind: Domain\nmetadata:\n  name: www-example-de\nspec:\n  fqdn: \"www.example.de\"\n  enabled: true\n  interval: 5\n  password:\n    name: strato-dyndns-password\n```\n\nDeploy these resources to your Kubernetes cluster:\n\n```sh\nkubectl apply -f config/samples/\n```\n\n### Uninstall CRDs\nTo delete the CRDs from the cluster:\n\n```sh\nmake uninstall\n```\n\n### Undeploy controller\nUnDeploy the controller to the cluster:\n\n```sh\nmake undeploy\n```\n\nor if you have installed via Helm:\n\n```shell\nhelm uninstall strato-dyndns\n```\n\n## Contributing\nPlease refer to our [Contributing Guidelines](CONTRIBUTING.md)\n\n### How it works\nThis project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/)\n\nIt uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/) \nwhich provides a reconcile function responsible for synchronizing resources untile the desired state is reached on the cluster \n\n### Test It Out\n1. Install the CRDs into the cluster:\n\n```sh\nmake install\n```\n\n2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running):\n\n```sh\nmake run\n```\n\n**NOTE:** You can also run this in one step by running: `make install run`\n\n### Modifying the API definitions\nIf you are editing the API definitions, generate the manifests such as CRs or CRDs using:\n\n```sh\nmake manifests\n```\n\n**NOTE:** Run `make --help` for more information on all potential `make` targets\n\nMore information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakyriako%2Fstrato-dyndns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakyriako%2Fstrato-dyndns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakyriako%2Fstrato-dyndns/lists"}