{"id":18496161,"url":"https://github.com/clayshek/tf-k8s-ddclient-arm","last_synced_at":"2026-05-06T06:35:44.113Z","repository":{"id":114755349,"uuid":"131003890","full_name":"clayshek/tf-k8s-ddclient-arm","owner":"clayshek","description":"Terraform Kubernetes Provisioner for DDClient on ARM (Raspberry Pi)","archived":false,"fork":false,"pushed_at":"2018-05-02T12:47:05.000Z","size":12,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-06T14:02:01.615Z","etag":null,"topics":["arm","arm32v7","ddclient","ddns","ddns-client","ddns-updater","debian-stretch","docker","kubernetes","raspberry-pi","raspberrypi","terraform"],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clayshek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-25T12:36:32.000Z","updated_at":"2018-09-27T14:13:37.000Z","dependencies_parsed_at":"2023-04-09T05:48:25.532Z","dependency_job_id":null,"html_url":"https://github.com/clayshek/tf-k8s-ddclient-arm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/clayshek/tf-k8s-ddclient-arm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clayshek%2Ftf-k8s-ddclient-arm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clayshek%2Ftf-k8s-ddclient-arm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clayshek%2Ftf-k8s-ddclient-arm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clayshek%2Ftf-k8s-ddclient-arm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clayshek","download_url":"https://codeload.github.com/clayshek/tf-k8s-ddclient-arm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clayshek%2Ftf-k8s-ddclient-arm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280979468,"owners_count":26423964,"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","status":"online","status_checked_at":"2025-10-25T02:00:06.499Z","response_time":81,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["arm","arm32v7","ddclient","ddns","ddns-client","ddns-updater","debian-stretch","docker","kubernetes","raspberry-pi","raspberrypi","terraform"],"created_at":"2024-11-06T13:28:11.151Z","updated_at":"2025-10-25T15:38:40.926Z","avatar_url":"https://github.com/clayshek.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tf-k8s-ddclient-arm\n\n## Summary\n\n\u003ca href=\"https://www.terraform.io/\"\u003eTerraform\u003c/a\u003e Provisioner for \u003ca href=\"https://sourceforge.net/p/ddclient/wiki/Home/\"\u003eDDClient\u003c/a\u003e Dynamic DNS update client in a \u003ca href=\"https://kubernetes.io/\"\u003eKubernetes\u003c/a\u003e cluster running on ARM architecture / \u003ca href=\"https://www.raspberrypi.org\"\u003eRaspberry Pi\u003c/a\u003e. Makes use of \u003ca href=\"https://www.terraform.io/docs/providers/kubernetes/\"\u003eTerraform Kubernetes Provider\u003c/a\u003e. Includes Terraform resource definitions for Kubernetes Secrets (for Dynamic DNS update credentials), and Kubernetes Persistent Volume (for DDClient cache file persistent storage). Functionality mostly similar to deploying using a \u003ca href=\"https://helm.sh/\"\u003eHelm\u003c/a\u003e chart, but currently no version of Tiller available to run on ARM architecture. This method allows for single-command deployment, with a single variables config file. \n\nContainer based off of Docker image located at \u003ca href=\"https://hub.docker.com/r/clayshek/ddclient-debian-arm/\"\u003ehttps://hub.docker.com/r/clayshek/ddclient-debian-arm/\u003c/a\u003e. Runs on top of ARM32v7/Debian:stretch-slim, approx size 84 MB. Containers based off this image configurable via terraform.tfvars and should work for most use-cases, but for deeper configuration needs, custom Docker images can be built and used by modifying image_name parameter in terraform.tfvars.\n\nSome code based off of \u003ca href=\"https://github.com/steasdal/ddclient-alpine\"\u003esteasdal/ddclient-alpine\u003c/a\u003e \u0026 \u003ca href=\"https://github.com/rycus86/docker-ddclient\"\u003erycus86/docker-ddclient\u003c/a\u003e\n\n## Requirements\n\n- Working Kubernetes cluster (developed on v1.9) on Raspberry Pi. \u003ca href=\"https://gist.github.com/alexellis/fdbc90de7691a1b9edb545c17da2d975\"\u003eInfo\u003c/a\u003e\n- \u003ca href=\"https://www.terraform.io/downloads.html\"\u003eTerraform\u003c/a\u003e (tested with v0.11.7)\n- Terraform must have connectivity to Kubernetes. Either run on K8s master (easiest), or other workstation with properly configured Kube config file and \u003ca href=\"https://www.terraform.io/docs/providers/kubernetes/guides/getting-started.html#provider-setup\"\u003eTerraform provider setup\u003c/a\u003e.\n- Pre-configured NFS share (default) or other Kubernetes supported \u003ca href=\"https://kubernetes.io/docs/concepts/storage/persistent-volumes/\"\u003ePersistent Volume\u003c/a\u003e for DDclient cache storage. If using other than NFS, customization of main.tf likely required in addition to tfvars file. See \u003ca href=\"https://www.terraform.io/docs/providers/kubernetes/r/persistent_volume.html\"\u003eTerraform kubernetes_persistent_volume\u003c/a\u003e resource documentation for further details. An alternative, if not using persistent storage, would be to comment out all volume related code in main.tf, but risk (relatively small) chance of being flagged for abuse by DDNS provider due to repeated update attempts after container restarts. \n\n## Usage\n\n- Clone the repository\n- Customize the parameters in the terraform.tfvars file as applicable for provisioning. Includes DDClient \u003ca href=\"https://sourceforge.net/p/ddclient/wiki/usage/\"\u003econfig\u003c/a\u003e as well as Persistent Volume config. See note in terraform.tfvars regarding base64 Secrets encoding differences from native Kubernetes secrets; also blurb on \u003ca href=\"https://www.terraform.io/docs/state/sensitive-data.html\"\u003eTerraform Sensitive Data in State\u003c/a\u003e.\n- Run \u003ccode\u003eterraform init\u003c/code\u003e (required for first run to pull Kubernetes provider). \n- Apply the configuration:\n\n```\nterraform apply\n```\n\n- Remove the configuration from Kubernetes:\n\n```\nterraform destroy\n```\n\n## To-Do\n\n - [ ] Metrics \u0026 Monitoring. \n - [ ] Change Replication Controller resource to Deployment when supported by the Provider. See \u003ca href=\"https://github.com/terraform-providers/terraform-provider-kubernetes/issues/3\"\u003eGit Issue\u003c/a\u003e\n - [ ] Use envFrom for mapping Config Map to environment variables, when supported by Provider. See \u003ca href=\"https://github.com/terraform-providers/terraform-provider-kubernetes/issues/78\"\u003eGit Issue\u003c/a\u003e)\n - [ ] Evaluate \u003ca href=\"https://www.vaultproject.io/\"\u003eVault\u003c/a\u003e for Secrets\n - [ ] Evaluate other Storage options. Possibly \u003ca href=\"https://rook.io/\"\u003eRook\u003c/a\u003e? \u003ca href=\"https://ceph.com/\"\u003eCeph\u003c/a\u003e?\n - [ ] Ultimately evaluate workload for Function as a Service, potentially \u003ca href=\"https://github.com/openfaas\"\u003eOpenFaaS\u003c/a\u003e \n\n## License\n\nThis is open-sourced software licensed under the [MIT license](http://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclayshek%2Ftf-k8s-ddclient-arm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclayshek%2Ftf-k8s-ddclient-arm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclayshek%2Ftf-k8s-ddclient-arm/lists"}