gcpddns

module
v0.0.0-...-c58ce6d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 21, 2022 License: Apache-2.0

README

Github License Open Issues Docker Pulls Docker Build Last Commit Version

Google Cloud Platform Dynamic DNS Docker

This project is a containerized implementation of work done here. It contains both the underlying application and necessary components to launch it directly in Docker.

Requirements

  1. Google Cloud Platform project with Cloud DNS API enabled and domains active
  2. Docker

Configuration and Setup

You'll need to already have setup your DNS in GCP. This is beyond the scope of this project but instructions can be found online. You'll also need to setup a service account and get credentials for it. To do so, follow the directions below.

GCP Service Account Setup
  1. Create a GCP service account

    SA_EMAIL=$(gcloud iam service-accounts --format='value(email)' create gcpddns)

  2. Create a JSON key file associated with the new service account

    gcloud iam service-accounts keys create service-account.json --iam-account=$SA_EMAIL

  3. Add an IAM policy to the service account for the project.

    PROJECT=$(gcloud config list core/project --format='value(core.project)') gcloud projects add-iam-policy-binding $PROJECT --member serviceAccount:$SA_EMAIL --role roles/dns.admin

Once you've secured your GCP credentials, save the JSON as google.json in a directory that will be accessible to the running image (/config below)

Docker Setup
Docker Variables

Environmental

  • GOOGLE_APPLICATION_CREDENTIALS

Ports

  • 8080:8080

Volumes

  • {$Path_to_config}/config:/config
  1. Save the google.json service account credential in the directory you'll be using for this container.

  2. In that same directory, create a config.json for the client. Enter the domain name you want to update, the GCP project ID, and Cloud DNS managed zone name. Multiple domains can be added as part of the configuration.

    {
      "domains": {
        "mydomain.example.com": {
          "provider": "gcp",
          "provider_config": {
             "project_id": "example-project",
             "managed_zone": "example-zone",
          }
        }
      }
    }
    

I strongly recommend using a JSON linter at this step—especially if you're using multiple domains.

Running the Container

To run the container in Docker:

  docker run -d --name gcpddns \
  -v ${PATH}/config:/config \
  -p 8080:8080 \
  -e "GOOGLE_APPLICATION_CREDENTIALS=/config/google.json" \
  charlestephen/gcpddns:latest

Directories

Path Synopsis
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL