feat(couchdb): split internal/external ingress for correct CN per cert
- values.yaml: internal ingress only (communicore.local.mk-labs.cloud) CN=communicore.local.mk-labs.cloud, secret=couchdb-tls - ingress-public.yaml: external ingress (communicore.mk-labs.cloud) CN=communicore.mk-labs.cloud, secret=couchdb-tls-public ExternalDNS opt-in annotations for Cloudflare -> ingress.mk-labs.cloud Obsidian Sync connects externally via communicore.mk-labs.cloud; JARVIS traffic stays internal on communicore.local.mk-labs.cloud.
This commit is contained in:
34
cluster/applications/couchdb/ingress-public.yaml
Normal file
34
cluster/applications/couchdb/ingress-public.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
# ------------------------------------------------------------------------------
|
||||
# FILE: cluster/applications/couchdb/ingress-public.yaml
|
||||
# DESCRIPTION: External ingress for CouchDB — communicore.mk-labs.cloud only.
|
||||
# Separate from the Helm-managed internal ingress so each cert
|
||||
# has the correct CN for its hostname. CN validation in Obsidian
|
||||
# Sync requires CN=communicore.mk-labs.cloud on the public cert.
|
||||
# ------------------------------------------------------------------------------
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: couchdb-public
|
||||
namespace: couchdb
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||
external-dns.alpha.kubernetes.io/hostname: "communicore.mk-labs.cloud"
|
||||
external-dns.alpha.kubernetes.io/target: "ingress.mk-labs.cloud"
|
||||
external-dns.alpha.kubernetes.io/public: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
rules:
|
||||
- host: communicore.mk-labs.cloud
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: couchdb-svc-couchdb
|
||||
port:
|
||||
number: 5984
|
||||
tls:
|
||||
- secretName: couchdb-tls-public
|
||||
hosts:
|
||||
- communicore.mk-labs.cloud
|
||||
@@ -53,24 +53,21 @@ service:
|
||||
type: ClusterIP
|
||||
port: 5984
|
||||
|
||||
# Ingress configuration
|
||||
# Ingress configuration — internal only
|
||||
# External access via separate ingress manifest (ingress-public.yaml)
|
||||
# which carries its own cert with CN=communicore.mk-labs.cloud
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||
external-dns.alpha.kubernetes.io/hostname: "communicore.local.mk-labs.cloud"
|
||||
external-dns.alpha.kubernetes.io/target: "ingress.mk-labs.cloud"
|
||||
# Opt in to public Cloudflare DNS — creates communicore.mk-labs.cloud -> ingress.mk-labs.cloud
|
||||
external-dns.alpha.kubernetes.io/public: "true"
|
||||
hosts:
|
||||
- communicore.local.mk-labs.cloud
|
||||
- communicore.mk-labs.cloud
|
||||
tls:
|
||||
- secretName: couchdb-tls
|
||||
hosts:
|
||||
- communicore.local.mk-labs.cloud
|
||||
- communicore.mk-labs.cloud
|
||||
|
||||
# Resource limits
|
||||
resources:
|
||||
|
||||
Reference in New Issue
Block a user