Kubernetes¶
Deploy grafeo-server on any Kubernetes cluster: ASK, EKS, GKE, or self-managed.
Quick Start¶
Deployment¶
# grafeo-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: grafeo-server
labels:
app: grafeo
spec:
replicas: 1
selector:
matchLabels:
app: grafeo
template:
metadata:
labels:
app: grafeo
spec:
containers:
- name: grafeo
image: grafeo/grafeo-server:full
ports:
- containerPort: 7474
name: http
env:
- name: GRAFEO_DATA_DIR
value: /data
- name: GRAFEO_LOG_FORMAT
value: json
volumeMounts:
- name: data
mountPath: /data
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: "2"
memory: 2Gi
livenessProbe:
httpGet:
path: /health
port: 7474
initialDelaySeconds: 5
periodSeconds: 30
readinessProbe:
httpGet:
path: /health
port: 7474
initialDelaySeconds: 3
periodSeconds: 10
volumes:
- name: data
persistentVolumeClaim:
claimName: grafeo-data
Persistent Volume Claim¶
# grafeo-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: grafeo-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
Service¶
# grafeo-service.yaml
apiVersion: v1
kind: Service
metadata:
name: grafeo-server
spec:
selector:
app: grafeo
ports:
- name: http
port: 7474
targetPort: 7474
type: ClusterIP
Apply¶
kubectl apply -f grafeo-pvc.yaml
kubectl apply -f grafeo-deployment.yaml
kubectl apply -f grafeo-service.yaml
Full Tier with All Protocols¶
Expose HTTP, Bolt, and GWP ports:
ports:
- containerPort: 7474
name: http
- containerPort: 7687
name: bolt
- containerPort: 7688
name: gwp
# Service with all ports
spec:
ports:
- name: http
port: 7474
targetPort: 7474
- name: bolt
port: 7687
targetPort: 7687
- name: gwp
port: 7688
targetPort: 7688
Ingress¶
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafeo-ingress
annotations:
cert-manager.io/cluster-issuer: letsencrypt
spec:
tls:
- hosts:
- grafeo.example.com
secretName: grafeo-tls
rules:
- host: grafeo.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: grafeo-server
port:
number: 7474
Horizontal Pod Autoscaler¶
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: grafeo-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: grafeo-server
minReplicas: 1
maxReplicas: 5
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
Cloud-Specific Notes¶
ASK (Azure)¶
az ask create --resource-group grafeo-rg --name grafeo-cluster --node-count 2
az ask get-credentials --resource-group grafeo-rg --name grafeo-cluster
Uses Azure Disk for PVCs by default.
EKS (AWS)¶
Install the EBS CSI driver for persistent volumes.
GKE (Google Cloud)¶
gcloud container clusters create grafeo-cluster --zone europe-west4-a --num-nodes 2
gcloud container clusters get-credentials grafeo-cluster --zone europe-west4-a
Uses Persistent Disk for PVCs by default.