v0.1.0
v0.1.0 — initial release
ExternalDNS configured for Cloudflare, plus optional cert-manager DNS-01 ClusterIssuer integration and an ExternalSecrets-based DX for the Cloudflare API token.
What it does
- ExternalDNS Helm Release configured with
provider.name: cloudflare. The pod readsCF_API_TOKENfrom a K8s Secret (default namecloudflare-api-token, keyapi-token). - cert-manager integration (
spec.certManager.enabled: true, default): a Let's Encrypt DNS-01 ClusterIssuer wired to the Cloudflare API token Secret, plus aprotection.crossplane.io.Usagethat holds the external cert-manager Helm Release until the ClusterIssuer is deleted. This stack does not install cert-manager — pair withaws-cert-stack(or another install) when this is on. - ExternalSecrets DX (
spec.externalSecrets.enabled: true): one user-supplied backend ref fans out to ExternalSecret resources in both the external-dns and cert-manager namespaces, keeping the same Secret name + key in each.
Install
```yaml
apiVersion: pkg.crossplane.io/v1
kind: Configuration
metadata:
name: cloudflare-dns-stack
spec:
package: ghcr.io/hops-ops/cloudflare-dns-stack:v0.1.0
```
Minimal claim
```yaml
apiVersion: cloudflare.hops.ops.com.ai/v1alpha1
kind: DNSStack
metadata:
name: dns
namespace: default
spec:
clusterName: my-cluster
domains:
- name: example.com
clusterIssuer:
email: admin@example.com
```
See the README for the full configuration reference and the with-external-secrets / standard examples.