mirror of
https://github.com/andwati/telecom-platform.git
synced 2026-10-21 04:04:28 +00:00
feat: Add Helm chart for telecom platform with dependencies and comprehensive configuration
- Add Chart.yaml with telecom-platform v1.0.0, MIT license, infrastructure category - Add chart dependencies: postgresql 12.1.9, redis 17.3.7, prometheus 23.1.0, grafana 6.58.9, elasticsearch 19.5.0, kibana 10.2.0, logstash 8.5.1 - Add values.yaml with global configuration for imageRegistry, imagePullSecrets, storageClass, environment - Add platform configuration for api-server (3-10 replicas, 8000 port), charging-engine (2-8 replicas, 8080 port), packet-gateway (2-6 replicas, 9090 port), web-dashboard (2-4 replicas, 3000
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
apiVersion: v2
|
||||
name: telecom-platform
|
||||
description: A Helm chart for Telecom Platform - Complete telecommunications management solution
|
||||
type: application
|
||||
version: 1.0.0
|
||||
appVersion: "1.0.0"
|
||||
home: https://github.com/nutcas3/telecom-platform
|
||||
sources:
|
||||
- https://github.com/nutcas3/telecom-platform
|
||||
maintainers:
|
||||
- name: Telecom Platform Team
|
||||
email: [email protected]
|
||||
keywords:
|
||||
- telecom
|
||||
- platform
|
||||
- kubernetes
|
||||
- monitoring
|
||||
- billing
|
||||
- charging
|
||||
- subscriber-management
|
||||
annotations:
|
||||
category: Infrastructure
|
||||
licenses: MIT
|
||||
dependencies:
|
||||
- name: postgresql
|
||||
version: 12.1.9
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
condition: postgresql.enabled
|
||||
- name: redis
|
||||
version: 17.3.7
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
condition: redis.enabled
|
||||
- name: prometheus
|
||||
version: 23.1.0
|
||||
repository: https://prometheus-community.github.io/helm-charts
|
||||
condition: prometheus.enabled
|
||||
- name: grafana
|
||||
version: 6.58.9
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
condition: grafana.enabled
|
||||
- name: elasticsearch
|
||||
version: 19.5.0
|
||||
repository: https://helm.elastic.co
|
||||
condition: elasticsearch.enabled
|
||||
- name: kibana
|
||||
version: 10.2.0
|
||||
repository: https://helm.elastic.co
|
||||
condition: kibana.enabled
|
||||
- name: logstash
|
||||
version: 8.5.1
|
||||
repository: https://helm.elastic.co
|
||||
condition: logstash.enabled
|
||||
@@ -0,0 +1,585 @@
|
||||
# Default values for telecom-platform.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
# Global configuration
|
||||
global:
|
||||
imageRegistry: ""
|
||||
imagePullSecrets: []
|
||||
storageClass: ""
|
||||
# Environment: dev, staging, prod
|
||||
environment: "dev"
|
||||
|
||||
# Platform configuration
|
||||
platform:
|
||||
# Domain configuration
|
||||
domain: "telecom.local"
|
||||
tls:
|
||||
enabled: false
|
||||
secretName: "telecom-tls"
|
||||
certManager:
|
||||
enabled: false
|
||||
issuerName: "letsencrypt-prod"
|
||||
|
||||
# API configuration
|
||||
api:
|
||||
replicas: 3
|
||||
image:
|
||||
repository: telecom-platform/api-server
|
||||
tag: "1.0.0"
|
||||
pullPolicy: IfNotPresent
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: true
|
||||
minReplicas: 3
|
||||
maxReplicas: 10
|
||||
targetCPUUtilizationPercentage: 70
|
||||
targetMemoryUtilizationPercentage: 80
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8000
|
||||
ingress:
|
||||
enabled: true
|
||||
className: "nginx"
|
||||
annotations: {}
|
||||
hosts:
|
||||
- host: api.telecom.local
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
tls: []
|
||||
|
||||
# Charging Engine configuration
|
||||
charging:
|
||||
replicas: 2
|
||||
image:
|
||||
repository: telecom-platform/charging-engine
|
||||
tag: "1.0.0"
|
||||
pullPolicy: IfNotPresent
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
autoscaling:
|
||||
enabled: true
|
||||
minReplicas: 2
|
||||
maxReplicas: 8
|
||||
targetCPUUtilizationPercentage: 75
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8080
|
||||
config:
|
||||
databaseUrl: "postgresql://postgres:password@postgres:5432/telecom"
|
||||
redisUrl: "redis://redis:6379"
|
||||
|
||||
# Packet Gateway configuration
|
||||
gateway:
|
||||
replicas: 2
|
||||
image:
|
||||
repository: telecom-platform/packet-gateway
|
||||
tag: "1.0.0"
|
||||
pullPolicy: IfNotPresent
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 1Gi
|
||||
autoscaling:
|
||||
enabled: true
|
||||
minReplicas: 2
|
||||
maxReplicas: 6
|
||||
targetCPUUtilizationPercentage: 80
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 9090
|
||||
privileged: true
|
||||
hostNetwork: false
|
||||
|
||||
# Web Dashboard configuration
|
||||
dashboard:
|
||||
replicas: 2
|
||||
image:
|
||||
repository: telecom-platform/web-dashboard
|
||||
tag: "1.0.0"
|
||||
pullPolicy: IfNotPresent
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
autoscaling:
|
||||
enabled: true
|
||||
minReplicas: 2
|
||||
maxReplicas: 4
|
||||
targetCPUUtilizationPercentage: 70
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 3000
|
||||
ingress:
|
||||
enabled: true
|
||||
className: "nginx"
|
||||
annotations: {}
|
||||
hosts:
|
||||
- host: dashboard.telecom.local
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
tls: []
|
||||
|
||||
# PostgreSQL configuration
|
||||
postgresql:
|
||||
enabled: true
|
||||
auth:
|
||||
postgresPassword: "telecom123"
|
||||
database: "telecom"
|
||||
primary:
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 20Gi
|
||||
storageClass: ""
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 1Gi
|
||||
service:
|
||||
ports:
|
||||
postgresql: 5432
|
||||
|
||||
# Redis configuration
|
||||
redis:
|
||||
enabled: true
|
||||
auth:
|
||||
enabled: false
|
||||
password: ""
|
||||
master:
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 8Gi
|
||||
storageClass: ""
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
service:
|
||||
ports:
|
||||
redis: 6379
|
||||
|
||||
# Prometheus configuration
|
||||
prometheus:
|
||||
enabled: true
|
||||
server:
|
||||
replicaCount: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 2Gi
|
||||
persistentVolume:
|
||||
enabled: true
|
||||
size: 20Gi
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 9090
|
||||
ingress:
|
||||
enabled: true
|
||||
ingressClassName: "nginx"
|
||||
hosts:
|
||||
- prometheus.telecom.local
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
alertmanager:
|
||||
enabled: true
|
||||
replicaCount: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 9093
|
||||
ingress:
|
||||
enabled: true
|
||||
ingressClassName: "nginx"
|
||||
hosts:
|
||||
- alertmanager.telecom.local
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
|
||||
# Grafana configuration
|
||||
grafana:
|
||||
enabled: true
|
||||
replicaCount: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 10Gi
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 3000
|
||||
ingress:
|
||||
enabled: true
|
||||
ingressClassName: "nginx"
|
||||
hosts:
|
||||
- grafana.telecom.local
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
adminPassword: "admin123"
|
||||
sidecar:
|
||||
datasources:
|
||||
enabled: true
|
||||
dashboards:
|
||||
enabled: true
|
||||
|
||||
# ELK Stack configuration
|
||||
elasticsearch:
|
||||
enabled: true
|
||||
master:
|
||||
replicaCount: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 1Gi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 2Gi
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 20Gi
|
||||
data:
|
||||
replicaCount: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 1Gi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 2Gi
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 30Gi
|
||||
|
||||
kibana:
|
||||
enabled: true
|
||||
replicaCount: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 512Mi
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 5601
|
||||
ingress:
|
||||
enabled: true
|
||||
ingressClassName: "nginx"
|
||||
hosts:
|
||||
- kibana.telecom.local
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
|
||||
logstash:
|
||||
enabled: true
|
||||
replicaCount: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 1Gi
|
||||
service:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 5044
|
||||
name: beats
|
||||
- port: 9600
|
||||
name: http
|
||||
|
||||
# Monitoring configuration
|
||||
monitoring:
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
namespace: telecom-platform
|
||||
labels:
|
||||
release: prometheus
|
||||
interval: 30s
|
||||
scrapeTimeout: 10s
|
||||
|
||||
prometheusRule:
|
||||
enabled: true
|
||||
namespace: telecom-platform
|
||||
labels:
|
||||
release: prometheus
|
||||
groups:
|
||||
- name: telecom-platform
|
||||
rules:
|
||||
- alert: APIHighErrorRate
|
||||
expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.1
|
||||
for: 5m
|
||||
labels:
|
||||
severity: critical
|
||||
annotations:
|
||||
summary: "API error rate is high"
|
||||
description: "API error rate is {{ $value }} errors per second"
|
||||
|
||||
- alert: HighMemoryUsage
|
||||
expr: container_memory_usage_bytes / container_spec_memory_limit_bytes > 0.9
|
||||
for: 5m
|
||||
labels:
|
||||
severity: warning
|
||||
annotations:
|
||||
summary: "High memory usage"
|
||||
description: "Memory usage is above 90%"
|
||||
|
||||
- alert: HighCPUUsage
|
||||
expr: rate(container_cpu_usage_seconds_total[5m]) > 0.8
|
||||
for: 5m
|
||||
labels:
|
||||
severity: warning
|
||||
annotations:
|
||||
summary: "High CPU usage"
|
||||
description: "CPU usage is above 80%"
|
||||
|
||||
# Service Mesh (Istio) configuration
|
||||
istio:
|
||||
enabled: false
|
||||
namespace: "istio-system"
|
||||
injectionPolicy: enabled
|
||||
gateway:
|
||||
enabled: true
|
||||
selectors:
|
||||
- istio: ingressgateway
|
||||
virtualService:
|
||||
enabled: true
|
||||
hosts:
|
||||
- api.telecom.local
|
||||
- dashboard.telecom.local
|
||||
- grafana.telecom.local
|
||||
- prometheus.telecom.local
|
||||
- kibana.telecom.local
|
||||
destinationRule:
|
||||
enabled: true
|
||||
trafficPolicy:
|
||||
loadBalancer:
|
||||
simple: ROUND_ROBIN
|
||||
connectionPool:
|
||||
tcp:
|
||||
maxConnections: 100
|
||||
http:
|
||||
http1MaxPendingRequests: 50
|
||||
maxRequestsPerConnection: 10
|
||||
|
||||
# Backup configuration
|
||||
backup:
|
||||
enabled: true
|
||||
schedule: "0 2 * * *" # Daily at 2 AM
|
||||
retention: "30d"
|
||||
storage:
|
||||
type: "s3"
|
||||
s3:
|
||||
bucket: "telecom-platform-backups"
|
||||
region: "us-east-1"
|
||||
endpoint: ""
|
||||
accessKey: ""
|
||||
secretKey: ""
|
||||
databases:
|
||||
postgresql:
|
||||
enabled: true
|
||||
host: "postgres"
|
||||
port: 5432
|
||||
database: "telecom"
|
||||
username: "postgres"
|
||||
password: "telecom123"
|
||||
|
||||
# Velero configuration for Kubernetes backups
|
||||
velero:
|
||||
enabled: true
|
||||
namespace: "velero"
|
||||
version: "v1.9.0"
|
||||
serviceAccount:
|
||||
server:
|
||||
create: true
|
||||
name: "velero"
|
||||
configuration:
|
||||
provider: "aws"
|
||||
backupStorageLocation:
|
||||
name: "default"
|
||||
bucket: "velero-backups"
|
||||
config:
|
||||
region: "us-east-1"
|
||||
volumeSnapshotLocation:
|
||||
name: "default"
|
||||
config:
|
||||
region: "us-east-1"
|
||||
|
||||
# Secrets management
|
||||
secrets:
|
||||
vault:
|
||||
enabled: false
|
||||
namespace: "vault"
|
||||
version: "1.14.0"
|
||||
ha:
|
||||
enabled: true
|
||||
replicas: 3
|
||||
ui:
|
||||
enabled: true
|
||||
serviceType: "ClusterIP"
|
||||
injector:
|
||||
enabled: true
|
||||
auth:
|
||||
enabled: true
|
||||
method: "kubernetes"
|
||||
kubernetes:
|
||||
host: "https://kubernetes.default.svc"
|
||||
role: "telecom-platform"
|
||||
|
||||
certManager:
|
||||
enabled: false
|
||||
namespace: "cert-manager"
|
||||
version: "v1.13.0"
|
||||
installCRDs: true
|
||||
webhook:
|
||||
timeout: "30s"
|
||||
|
||||
# GDPR compliance configuration
|
||||
gdpr:
|
||||
enabled: true
|
||||
dataRetention:
|
||||
logs: "90d"
|
||||
metrics: "365d"
|
||||
userProfiles: "2555d" # 7 years
|
||||
billing: "3650d" # 10 years
|
||||
|
||||
privacy:
|
||||
anonymization:
|
||||
enabled: true
|
||||
fields:
|
||||
- phone
|
||||
- email
|
||||
- address
|
||||
encryption:
|
||||
enabled: true
|
||||
algorithm: "AES-256"
|
||||
keyRotation: "90d"
|
||||
|
||||
audit:
|
||||
enabled: true
|
||||
retention: "2555d"
|
||||
events:
|
||||
- user.login
|
||||
- user.logout
|
||||
- data.access
|
||||
- data.modification
|
||||
- admin.actions
|
||||
|
||||
# Auto-scaling configuration
|
||||
autoscaling:
|
||||
enabled: true
|
||||
clusterAutoscaler:
|
||||
enabled: true
|
||||
version: "1.28.0"
|
||||
scaleDownDelayAfterAdd: "10m"
|
||||
scaleDownUnneededTime: "10m"
|
||||
maxNodesTotal: 100
|
||||
resourceLimits:
|
||||
maxCPU: 100
|
||||
maxMemory: 500Gi
|
||||
|
||||
metricsServer:
|
||||
enabled: true
|
||||
version: "v0.6.4"
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 100Mi
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 200Mi
|
||||
|
||||
# Multi-environment configuration
|
||||
environments:
|
||||
dev:
|
||||
replicas:
|
||||
api: 1
|
||||
charging: 1
|
||||
gateway: 1
|
||||
dashboard: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
domain: "dev.telecom.local"
|
||||
|
||||
staging:
|
||||
replicas:
|
||||
api: 2
|
||||
charging: 2
|
||||
gateway: 2
|
||||
dashboard: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
domain: "staging.telecom.local"
|
||||
|
||||
prod:
|
||||
replicas:
|
||||
api: 3
|
||||
charging: 2
|
||||
gateway: 2
|
||||
dashboard: 2
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 512Mi
|
||||
limits:
|
||||
cpu: 1000m
|
||||
memory: 2Gi
|
||||
domain: "telecom.platform"
|
||||
tls:
|
||||
enabled: true
|
||||
certManager:
|
||||
enabled: true
|
||||
issuerName: "letsencrypt-prod"
|
||||
Reference in New Issue
Block a user