# FlowerCore Tenant — flowercore.io (main brand) # Public-facing placeholder landing page served by nginx # ArgoCD managed - BlueJay Lab --- apiVersion: v1 kind: Namespace metadata: name: tenant-flowercore labels: app.kubernetes.io/part-of: bluejay-infra flowercore.io/tenant: flowercore --- # NOTE: The existing cf-origin-flowercore-io secret (covering *.flowercore.io) # must be copied into this namespace. It already exists in other namespaces. # Copy with: kubectl get secret cf-origin-flowercore-io -n fc-system -o yaml \ # | sed 's/namespace: .*/namespace: tenant-flowercore/' \ # | kubectl apply -f - --- # Landing page HTML apiVersion: v1 kind: ConfigMap metadata: name: flowercore-web-html namespace: tenant-flowercore data: index.html: | FlowerCore — flowercore.io
Platform
🌻

FlowerCore

flowercore.io

Multi-tenant service management platform. Digital signage, telephony, MySQL hosting, and more.

Under Construction

Digital Signage

Screens, zones, scheduling

Telephony

IVR workflows, Twilio

MySQL Manager

Database provisioning

PHP Manager

Site deployment

--- # nginx configuration apiVersion: v1 kind: ConfigMap metadata: name: flowercore-web-nginx-conf namespace: tenant-flowercore data: default.conf: | server { listen 80; server_name _; root /usr/share/nginx/html; index index.html; location / { try_files $uri $uri/ =404; } location /healthz { access_log off; return 200 "ok"; add_header Content-Type text/plain; } } --- # Deployment apiVersion: apps/v1 kind: Deployment metadata: name: flowercore-web namespace: tenant-flowercore labels: app: flowercore-web spec: replicas: 1 selector: matchLabels: app: flowercore-web template: metadata: labels: app: flowercore-web spec: containers: - name: nginx image: nginx:alpine ports: - containerPort: 80 name: http volumeMounts: - name: nginx-conf mountPath: /etc/nginx/conf.d/default.conf subPath: default.conf - name: html mountPath: /usr/share/nginx/html resources: requests: memory: 32Mi cpu: 10m limits: memory: 64Mi cpu: 50m livenessProbe: httpGet: path: /healthz port: 80 initialDelaySeconds: 5 periodSeconds: 10 readinessProbe: httpGet: path: /healthz port: 80 initialDelaySeconds: 3 periodSeconds: 5 volumes: - name: nginx-conf configMap: name: flowercore-web-nginx-conf - name: html configMap: name: flowercore-web-html --- # Service apiVersion: v1 kind: Service metadata: name: flowercore-web namespace: tenant-flowercore spec: selector: app: flowercore-web ports: - port: 80 targetPort: 80 name: http --- # Traefik IngressRoute — public via Cloudflare # Uses existing cf-origin-flowercore-io cert (must be copied to this namespace) apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: flowercore-web namespace: tenant-flowercore spec: entryPoints: - websecure routes: - match: Host(`flowercore.io`) || Host(`www.flowercore.io`) kind: Rule services: - name: flowercore-web port: 80 tls: secretName: cf-origin-flowercore-io