269 lines
7.2 KiB
YAML
269 lines
7.2 KiB
YAML
# Gravitee APIM OSS - prod-like single-node k3s deployment
|
|
# - Domain: gravitee.sttlab.pc
|
|
# - Ingress: nginx
|
|
# - TLS everywhere (ingress + internal component HTTPS)
|
|
# - Credentials resolved at runtime via Gravitee Secret Manager (kubernetes provider)
|
|
|
|
adminAccountEnable: true
|
|
adminPasswordBcrypt: "secret://kubernetes/gravitee-admin:admin-password-bcrypt"
|
|
|
|
jwtSecret: "secret://kubernetes/gravitee-jwt:GRAVITEE_JWT_SECRET"
|
|
|
|
# ============================================================
|
|
# MongoDB (management + ratelimit, same URI)
|
|
# ============================================================
|
|
mongo:
|
|
uri: "secret://kubernetes/gravitee-mongodb-uri:GRAVITEE_MANAGEMENT_MONGODB_URI"
|
|
|
|
# ============================================================
|
|
# Elasticsearch
|
|
# ============================================================
|
|
es:
|
|
endpoints:
|
|
- "https://gravitee-es-master.gravitee-apim.svc.cluster.local:9200"
|
|
security:
|
|
enabled: true
|
|
username: "secret://kubernetes/gravitee-es-master-credentials:username"
|
|
password: "secret://kubernetes/gravitee-es-master-credentials:password"
|
|
|
|
# ============================================================
|
|
# Kubernetes Secret Provider
|
|
# ============================================================
|
|
secrets:
|
|
kubernetes:
|
|
enabled: true
|
|
namespace: gravitee-apim
|
|
timeoutMs: 3000
|
|
|
|
# ============================================================
|
|
# API Gateway (data plane) - 2 replicas
|
|
# ============================================================
|
|
gateway:
|
|
enabled: true
|
|
replicaCount: 2
|
|
|
|
api:
|
|
properties:
|
|
encryption:
|
|
secret: "secret://kubernetes/gravitee-encryption:api-properties-encryption-secret"
|
|
|
|
extraVolumes: |
|
|
- name: gateway-internal-tls
|
|
secret:
|
|
secretName: gateway-internal-tls
|
|
items:
|
|
- key: keystore.p12
|
|
path: keystore.p12
|
|
- key: truststore.p12
|
|
path: truststore.p12
|
|
extraVolumeMounts: |
|
|
- name: gateway-internal-tls
|
|
mountPath: /run/secrets/tls
|
|
readOnly: true
|
|
|
|
env:
|
|
- name: JKS_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: gravitee-jks-password
|
|
key: password
|
|
- name: JAVA_OPTS
|
|
value: "-Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStore=/run/secrets/tls/truststore.p12 -Djavax.net.ssl.trustStorePassword=$(JKS_PASSWORD)"
|
|
|
|
# Enable HTTPS on the gateway listener (port 8082)
|
|
ssl:
|
|
enabled: true
|
|
keystore:
|
|
type: pkcs12
|
|
path: /run/secrets/tls/keystore.p12
|
|
password: "secret://kubernetes/gravitee-jks-password:password"
|
|
|
|
resources:
|
|
requests:
|
|
cpu: 200m
|
|
memory: 512Mi
|
|
limits:
|
|
cpu: 1000m
|
|
memory: 1Gi
|
|
|
|
service:
|
|
type: ClusterIP
|
|
externalPort: 443
|
|
internalPort: 8082
|
|
|
|
ingress:
|
|
enabled: true
|
|
ingressClassName: nginx
|
|
annotations:
|
|
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
|
|
nginx.ingress.kubernetes.io/proxy-ssl-verify: "on"
|
|
nginx.ingress.kubernetes.io/proxy-ssl-secret: "gravitee-apim/gravitee-ca-trust"
|
|
nginx.ingress.kubernetes.io/configuration-snippet: |
|
|
proxy_ssl_name gateway.gravitee.sttlab.pc;
|
|
hosts:
|
|
- gateway.gravitee.sttlab.pc
|
|
path: /
|
|
pathType: Prefix
|
|
tls:
|
|
- hosts:
|
|
- gateway.gravitee.sttlab.pc
|
|
secretName: gateway-tls
|
|
|
|
autoscaling:
|
|
enabled: false
|
|
|
|
# ============================================================
|
|
# Management API (control plane) - 1 replica
|
|
# ============================================================
|
|
api:
|
|
enabled: true
|
|
replicaCount: 1
|
|
|
|
api:
|
|
properties:
|
|
encryption:
|
|
secret: "secret://kubernetes/gravitee-encryption:api-properties-encryption-secret"
|
|
|
|
extraVolumes: |
|
|
- name: api-internal-tls
|
|
secret:
|
|
secretName: api-internal-tls
|
|
items:
|
|
- key: keystore.p12
|
|
path: keystore.p12
|
|
- key: truststore.p12
|
|
path: truststore.p12
|
|
extraVolumeMounts: |
|
|
- name: api-internal-tls
|
|
mountPath: /run/secrets/tls
|
|
readOnly: true
|
|
|
|
env:
|
|
- name: JKS_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: gravitee-jks-password
|
|
key: password
|
|
- name: JAVA_OPTS
|
|
value: "-Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStore=/run/secrets/tls/truststore.p12 -Djavax.net.ssl.trustStorePassword=$(JKS_PASSWORD)"
|
|
|
|
# Enable HTTPS on Management API + Portal API listeners
|
|
http:
|
|
services:
|
|
core:
|
|
http:
|
|
enabled: true
|
|
port: 18083
|
|
host: 0.0.0.0
|
|
|
|
ssl:
|
|
enabled: true
|
|
keystore:
|
|
type: pkcs12
|
|
path: /run/secrets/tls/keystore.p12
|
|
password: "secret://kubernetes/gravitee-jks-password:password"
|
|
|
|
resources:
|
|
requests:
|
|
cpu: 200m
|
|
memory: 2Gi
|
|
limits:
|
|
cpu: 1000m
|
|
memory: 2Gi
|
|
|
|
ingress:
|
|
management:
|
|
enabled: true
|
|
ingressClassName: nginx
|
|
annotations:
|
|
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
|
|
nginx.ingress.kubernetes.io/proxy-ssl-verify: "on"
|
|
nginx.ingress.kubernetes.io/proxy-ssl-secret: "gravitee-apim/gravitee-ca-trust"
|
|
nginx.ingress.kubernetes.io/configuration-snippet: |
|
|
proxy_ssl_name api.gravitee.sttlab.pc;
|
|
path: /management
|
|
pathType: Prefix
|
|
hosts:
|
|
- api.gravitee.sttlab.pc
|
|
tls:
|
|
- hosts:
|
|
- api.gravitee.sttlab.pc
|
|
secretName: api-tls
|
|
portal:
|
|
enabled: true
|
|
ingressClassName: nginx
|
|
annotations:
|
|
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
|
|
nginx.ingress.kubernetes.io/proxy-ssl-verify: "on"
|
|
nginx.ingress.kubernetes.io/proxy-ssl-secret: "gravitee-apim/gravitee-ca-trust"
|
|
nginx.ingress.kubernetes.io/configuration-snippet: |
|
|
proxy_ssl_name api.gravitee.sttlab.pc;
|
|
path: /portal
|
|
pathType: Prefix
|
|
hosts:
|
|
- api.gravitee.sttlab.pc
|
|
tls:
|
|
- hosts:
|
|
- api.gravitee.sttlab.pc
|
|
secretName: api-tls
|
|
|
|
# ============================================================
|
|
# Management UI (Console) - 1 replica
|
|
# ============================================================
|
|
ui:
|
|
enabled: true
|
|
replicaCount: 1
|
|
|
|
resources:
|
|
requests:
|
|
cpu: 100m
|
|
memory: 128Mi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 256Mi
|
|
|
|
ingress:
|
|
enabled: true
|
|
ingressClassName: nginx
|
|
annotations:
|
|
nginx.ingress.kubernetes.io/use-regex: "true"
|
|
hosts:
|
|
- console.gravitee.sttlab.pc
|
|
path: /(.*)
|
|
pathType: ImplementationSpecific
|
|
tls:
|
|
- hosts:
|
|
- console.gravitee.sttlab.pc
|
|
secretName: console-tls
|
|
|
|
|
|
# ============================================================
|
|
# Developer Portal UI - 1 replica
|
|
# ============================================================
|
|
portal:
|
|
enabled: true
|
|
replicaCount: 1
|
|
|
|
resources:
|
|
requests:
|
|
cpu: 100m
|
|
memory: 128Mi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 256Mi
|
|
|
|
ingress:
|
|
enabled: true
|
|
ingressClassName: nginx
|
|
annotations:
|
|
nginx.ingress.kubernetes.io/use-regex: "true"
|
|
nginx.ingress.kubernetes.io/rewrite-target: /$1
|
|
hosts:
|
|
- portal.gravitee.sttlab.pc
|
|
path: /(.*)
|
|
pathType: ImplementationSpecific
|
|
tls:
|
|
- hosts:
|
|
- portal.gravitee.sttlab.pc
|
|
secretName: portal-tls
|