apiVersion: certmanager.k8s.io/v1alpha1 kind: Certificate metadata: name: dns.app.keks.cloud namespace: dyndns spec: secretName: dns-app-keks-cloud-tls acme: config: - dns01: provider: cf-dns domains: - 'dns.app.keks.cloud' commonName: 'dns.app.keks.cloud' dnsNames: - dns.app.keks.cloud issuerRef: kind: ClusterIssuer name: letsencrypt-prod --- apiVersion: v1 kind: ConfigMap metadata: name: env-dns-web namespace: dyndns data: DYNDNS_CONFIG: "file" DYNDNS_CONFIG_FILE: "pv/config.json" CLOUDFLARE_API_KEY: "b82e4168ec5b30b1a6cbda0679e8827af9481" CLOUDFLARE_DOMAIN: "keks.cloud" CLOUDFLARE_MAIL: "cloudflare@kekskurse.de" --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: webapi namespace: dyndns spec: replicas: 1 template: metadata: labels: app: webapi spec: containers: - name: web image: docker.keks.cloud/soeren/dyndns:latest ports: - containerPort: 80 envFrom: - configMapRef: name: env-dns-web imagePullSecrets: - name: docker-keks-cloud --- apiVersion: v1 kind: Service metadata: annotations: field.cattle.io/targetWorkloadIds: '["deployment:dyndns:webapi"]' name: ingress-dyndns namespace: dyndns spec: ports: - port: 80 protocol: TCP targetPort: 80 type: ClusterIP status: loadBalancer: {} --- apiVersion: extensions/v1beta1 kind: Ingress metadata: name: webapi namespace: dyndns spec: rules: - host: dns.app.keks.cloud http: paths: - backend: serviceName: ingress-dyndns servicePort: 80 path: / tls: - secretName: dns-app-keks-cloud-tls