Kubernetes Deployment¶
DeepTagger documentation is deployed to GKE (Google Kubernetes Engine).
Architecture¶
Internet → GCP Load Balancer → Nginx Ingress → oka-mkdocs-svc → oka-mkdocs pods
(HTTPS) (routes /docs) (port 80) (nginx)
Deployment Resources¶
Deployment¶
apiVersion: apps/v1
kind: Deployment
metadata:
name: oka-mkdocs
spec:
replicas: 2
template:
spec:
containers:
- name: oka-mkdocs
image: gcr.io/oka-gcp-004/oka-mkdocs:latest
ports:
- containerPort: 80
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 128Mi
Service¶
apiVersion: v1
kind: Service
metadata:
name: oka-mkdocs-svc
spec:
selector:
app: oka-mkdocs
ports:
- port: 80
targetPort: 80
type: ClusterIP
Ingress¶
Nginx ingress routes /docs
to the service:
Deployment Process¶
-
Build image:
-
Deploy to k8s:
-
Update ingress (if first time):
- Add
/docs
route to nginx ingress -
Apply ingress changes
-
Verify:
Scaling¶
Adjust replicas in deployment:
Updates¶
To update documentation:
- Edit markdown files
- Rebuild Docker image
- Push to registry
- Restart deployment (pulls new image)
Monitoring¶
- Health checks:
/health
endpoint - Logs:
kubectl logs deployment/oka-mkdocs
- Metrics: Grafana dashboard (if configured)
Troubleshooting¶
# Check pod status
kubectl get pods -l app=oka-mkdocs
# View logs
kubectl logs -f deployment/oka-mkdocs
# Test internal connectivity
kubectl run curl-pod --rm -i --tty --image=curlimages/curl --restart=Never -- curl http://oka-mkdocs-svc:80/
# Exec into pod
kubectl exec -it deployment/oka-mkdocs -- /bin/sh
Next Steps¶
See the deployment notebook in the oka-inf repository for automated deployment.