7.6 KiB
Kubernetes Resources
Complete reference of all Kubernetes resources for the API Gateway deployment.
Namespace Overview
Namespace: Dedicated namespace for gateway components Environment Separation: Development, Staging, Production Resource Organization: Logical grouping by function
Helm Releases
Control Plane Release
Release Components:
- Chart: Control plane helm chart
- Status: Deployed
- Management: Dashboard, Portal, Data Plane Manager
Key Configuration:
dashboard_configuration:
database:
dsn: postgres://username:***@postgresql-service:5432/dbname
postgresql:
auth:
password: ***
primary:
persistence:
size: 10Gi
readReplicas:
persistence:
size: 10Gi
Data Plane Release
Release Components:
- Chart: Gateway data plane helm chart
- Status: Deployed
- Function: Request processing and routing
Key Configuration:
gateway:
extraEnvVars:
- name: GATEWAY_GROUP_ID
value: default
replicaCount: 3
configuration:
auth:
tls:
enabled: true
existingSecret: gateway-tls-secret
verify: true
endpoint:
- https://control-plane-endpoint:port
service:
type: ClusterIP
tls:
existingCASecret: gateway-tls-secret
Deployments
Dashboard
Specification:
Replicas: 1 (configurable)
Selector: app=dashboard
Ports: Management ports (HTTP/HTTPS)
Developer Portal
Specification:
Replicas: 1 (configurable)
Selector: app=developer-portal
Ports: Web service port
Data Plane Manager
Specification:
Replicas: 1 (configurable)
Selector: app=dp-manager
Ports: Management and proxy ports
Gateway Data Plane
Specification:
Replicas: 3+ (highly available)
Strategy: RollingUpdate (25% max unavailable)
Selector: app.kubernetes.io/name=gateway
Ports: 9080 (HTTP), 9443 (HTTPS)
Volumes:
- gateway-config (ConfigMap)
- tls-certificates (Secret)
- client-certificates (Secret)
Environment:
- GATEWAY_GROUP_ID: default
Readiness Probe:
tcp-socket: 9080
initialDelay: 10s
period: 10s
Monitoring Server
Specification:
Replicas: 1
Image: prometheus:latest
Ports: 9090
Volume: Persistent storage for metrics
Backend Applications
Generic Application Template:
Replicas: Based on load requirements
Ports: Application-specific
Service: ClusterIP for internal access
StatefulSets
PostgreSQL Database
Specification:
Replicas: 1 (can be scaled for HA)
Image: postgres:latest
Ports: 5432
Storage: Configurable persistent volume
Environment:
- POSTGRES_USER: gateway_user
- POSTGRES_PASSWORD: *** (from secret)
- POSTGRES_DB: gateway_db
Persistent Storage: Data persistence across pod restarts
Services
Control Plane Services
Dashboard Service
Type: ClusterIP
Ports:
- HTTP Management Port
- HTTPS Management Port
Selector: app=dashboard
Developer Portal Service
Type: ClusterIP
Ports:
- Web Service Port
Selector: app=developer-portal
Data Plane Manager Service
Type: ClusterIP
Ports:
- Management API Port
- Configuration Proxy Port
Selector: app=dp-manager
PostgreSQL Service
Type: ClusterIP
Ports:
- 5432/TCP
Selector: app=postgresql
PostgreSQL Headless Service
Type: ClusterIP (None)
Ports:
- 5432/TCP
Purpose: StatefulSet DNS resolution
Monitoring Service
Type: ClusterIP
Ports:
- 9090/TCP
Selector: app=prometheus
Gateway Service
Type: ClusterIP
Ports:
- name: http-gateway
port: 80
targetPort: 9080
- name: https-gateway
port: 443
targetPort: 9443
Selector:
app.kubernetes.io/name: gateway
Backend Application Services
Type: ClusterIP
Ports: Application-specific
Selector: app=<application-name>
Ingress Resources
Dashboard Ingress
Class: nginx
Hosts:
- dashboard.domain.com
TLS:
- hosts: [dashboard.domain.com]
secretName: dashboard-tls-secret
Backend:
Service: dashboard-service
Port: Management Port
Annotations:
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/proxy-body-size: 10m
Developer Portal Ingress
Class: nginx
Hosts:
- portal.domain.com
TLS:
- hosts: [portal.domain.com]
secretName: portal-tls-secret
Backend:
Service: developer-portal-service
Port: Web Port
Data Plane Manager Ingress
Class: nginx
Hosts:
- dp-manager.domain.com
TLS:
- hosts: [dp-manager.domain.com]
secretName: dp-manager-tls-secret
Backend:
Service: dp-manager-service
Port: Management Port
Gateway Ingress
Class: nginx
Hosts:
- *.domain.com
- domain.com
TLS:
- hosts: [*.domain.com, domain.com]
secretName: wildcard-tls-secret
Rules:
- host: "*.domain.com"
backend:
service: gateway-service
port: 80
- host: domain.com
backend:
service: gateway-service
port: 80
ConfigMaps
Monitoring Configuration
- Prometheus server configuration
- Alert rules and thresholds
Dashboard Configuration
- Dashboard application settings
- UI customization
Developer Portal Configuration
- Portal settings
- API documentation configuration
Data Plane Manager Configuration
- Manager settings
- Gateway group configurations
Gateway Configuration
- Gateway runtime settings
- Backend connection configuration
Certificate Authority
- Kubernetes root CA certificate
- Trust chain configuration
Secrets
TLS Certificates
Control Plane Certificates:
- Dashboard TLS certificates
- Developer Portal TLS certificates
- Data Plane Manager TLS certificates
Gateway Certificates:
- Gateway mutual TLS certificates
- Internal communication certificates
- Public-facing TLS certificates
Application Certificates:
- Backend service certificates
- Wildcard domain certificates
Database Credentials
Type: Opaque
Data:
- database-password: ***
- user-password: ***
Helm Release Secrets
- Helm release versioning secrets
- Configuration state storage
Persistent Volume Claims
Database Storage
Size: 10Gi+ (configurable)
Storage Class: Distributed storage
Access Mode: RWO
Purpose: Database persistence
Monitoring Storage
Size: 100Gi+ (based on retention)
Storage Class: Local or network storage
Access Mode: RWO
Purpose: Metrics retention
Configuration Storage
Size: Based on requirements
Storage Class: High-performance storage
Access Mode: RWO/RWX as needed
Purpose: Configuration persistence
Resource Management
Useful Commands
List all resources:
kubectl get all -n <namespace>
Get specific resource details:
kubectl describe deployment <deployment-name> -n <namespace>
kubectl get svc <service-name> -n <namespace> -o yaml
Check pod logs:
kubectl logs -n <namespace> <pod-name>
kubectl logs -n <namespace> <pod-name> -f # Follow logs
Access services locally:
# Forward dashboard to local port
kubectl port-forward -n <namespace> svc/dashboard-service 7080:7080
# Forward gateway to local port
kubectl port-forward -n <namespace> svc/gateway-service 8080:80
Scale deployments:
kubectl scale deployment <deployment-name> -n <namespace> --replicas=<count>
Check Helm releases:
helm list -n <namespace>
helm get values <release-name> -n <namespace>
helm status <release-name> -n <namespace>
Troubleshooting:
kubectl get events -n <namespace>
kubectl top pods -n <namespace>
kubectl describe pod <pod-name> -n <namespace>
Complete Kubernetes resource reference for API Gateway infrastructure deployment.