README.md

May 25, 2026 Β· View on GitHub

external-dns-webhook-infomaniak

External DNS webhook provider for infomaniak

OpenSSF Scorecard

πŸ”— Table of Contents

πŸͺ Usage

The deployment can be performed in every way Kubernetes supports. The following example shows the deployment as a sidecar container in the ExternalDNS pod using the charts for ExternalDNS.

Create the secret containing your Infomaniak API key

kubectl create secret generic infomaniak-credentials --from-literal=api-token=myapitoken

Install the ExternalDNS Helm chart as explained in the official documentation.

Here’s an example values.yaml file you can use as a reference. Adjust the values according to your needs:

image:
  tag: v0.20.0

# -- ExternalDNS Log level.
logLevel: debug # reduce in production

# -- if true, ExternalDNS will run in a namespaced scope (Role and Rolebinding will be namespaced too).
namespaced: false

# -- Kubernetes resources to monitor for DNS entries.
sources:
  - ingress
  - service
  - crd

# -- How DNS records are synchronized between sources and providers; available values are create-only, sync, & upsert-only.
policy: "sync"

provider:
  name: webhook
  webhook:
    image:
      repository: ghcr.io/m0nsterrr/external-dns-webhook-infomaniak
      # Check the latest GitHub release to get the newest tag.
      tag: v0.1.0
      pullPolicy: IfNotPresent
    env:
      - name: LOG_LEVEL
        value: debug # reduce in production
      - name: INFOMANIAK_API_TOKEN
        valueFrom:
          secretKeyRef:
            name: infomaniak-credentials
            key: api-token
      # The webhook server listens on localhost by default. Otherwise, you can set SERVER_HOST.
      - name: SERVER_PORT
        value: "8888" # default and recommended port for exposing webhook provider EPs
      # The exposed server listens on all interfaces (0.0.0.0) by default. Otherwise, you can set METRICS_HOST.
      - name: METRICS_PORT
        value: "8080" # default and recommended port for exposing metrics and health EPs
      - name: DRY_RUN
        value: "true" # set to "false" when you want to allow making changes to your DNS resources

πŸ› οΈ Dev

Install Go.

Run linter and formatter

golangci-lint must be installed.

golangci-lint run

Run test

go test -v ./... -race

devenv

A devenv is available; the documentation can be found on how to use it here.

πŸ™‹β€β™‚οΈ Support & Assistance

  • Take a look at the support document on guidelines for tips on how to ask the right questions.
  • For all questions/features/bugs/issues head over here.

🀝 Contributing

  • Please review the Code of Conduct for guidelines on ensuring everyone has the best experience interacting with the community.
  • We welcome and encourage contributions to this project ! Please review the contributing doc for submitting issues/a guide on submitting pull requests and helping out.

πŸ›‘οΈ Security

See security file for details.

βš–οΈ License

See here.