Ready-to-use Kubernetes folder with all manifests for your backend, frontend, and optional Ollama service, fully configured for HTTPS via cert-manager. You will just need to replace Docker Hub images and your email/domain.
Here’s the structure:
k8s/
├── namespace.yaml
├── clusterissuer.yaml
├── backend-deployment.yaml
├── frontend-deployment.yaml
├── ollama-deployment.yaml
├── ingress.yaml
1️⃣ namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: ollama-chat
2️⃣ clusterissuer.yaml
Replace your-email@domain.com
with your email.
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
email: your-email@domain.com
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: nginx
3️⃣ backend-deployment.yaml
Replace yourhubusername/ollama-backend:latest
with your Docker Hub backend image.
apiVersion: apps/v1
kind: Deployment
metadata:
name: ollama-backend
namespace: ollama-chat
spec:
replicas: 2
selector:
matchLabels:
app: ollama-backend
template:
metadata:
labels:
app: ollama-backend
spec:
containers:
- name: backend
image: yourhubusername/ollama-backend:latest
imagePullPolicy: Always
ports:
- containerPort: 8000
env:
- name: OLLAMA_HOST
value: "http://ollama:11434"
---
apiVersion: v1
kind: Service
metadata:
name: ollama-backend
namespace: ollama-chat
spec:
selector:
app: ollama-backend
ports:
- protocol: TCP
port: 8000
targetPort: 8000
type: ClusterIP
4️⃣ frontend-deployment.yaml
Replace yourhubusername/ollama-frontend:latest
with your Docker Hub frontend image.
apiVersion: apps/v1
kind: Deployment
metadata:
name: ollama-frontend
namespace: ollama-chat
spec:
replicas: 2
selector:
matchLabels:
app: ollama-frontend
template:
metadata:
labels:
app: ollama-frontend
spec:
containers:
- name: frontend
image: yourhubusername/ollama-frontend:latest
imagePullPolicy: Always
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: ollama-frontend
namespace: ollama-chat
spec:
selector:
app: ollama-frontend
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
5️⃣ ollama-deployment.yaml
(optional)
apiVersion: apps/v1
kind: Deployment
metadata:
name: ollama
namespace: ollama-chat
spec:
replicas: 1
selector:
matchLabels:
app: ollama
template:
metadata:
labels:
app: ollama
spec:
containers:
- name: ollama
image: ollama/ollama:latest
ports:
- containerPort: 11434
---
apiVersion: v1
kind: Service
metadata:
name: ollama
namespace: ollama-chat
spec:
selector:
app: ollama
ports:
- protocol: TCP
port: 11434
targetPort: 11434
type: ClusterIP
6️⃣ ingress.yaml
Replace immai.acintia.com
with your domain.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ollama-ingress
namespace: ollama-chat
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts:
- immai.acintia.com
secretName: ollama-tls
rules:
- host: immai.acintia.com
http:
paths:
- path: /api/
pathType: Prefix
backend:
service:
name: ollama-backend
port:
number: 8000
- path: /
pathType: Prefix
backend:
service:
name: ollama-frontend
port:
number: 80
7️⃣ Deployment Instructions
Step 1: Apply namespace
kubectl apply -f k8s/namespace.yaml
Step 2: Apply cert-manager ClusterIssuer
kubectl apply -f k8s/clusterissuer.yaml
Step 3: Deploy backend, frontend, and Ollama
kubectl apply -f k8s/backend-deployment.yaml
kubectl apply -f k8s/frontend-deployment.yaml
kubectl apply -f k8s/ollama-deployment.yaml # optional
Step 4: Deploy Ingress
kubectl apply -f k8s/ingress.yaml
Step 5: Verify resources
kubectl get pods -n ollama-chat
kubectl get svc -n ollama-chat
kubectl get ingress -n ollama-chat
Step 6: Access services
-
Frontend →
https://immai.acintia.com/
-
Backend API →
https://immai.acintia.com/api/
TLS is automatically handled by cert-manager.
✅ With this setup:
-
You can run your backend, frontend, and Ollama in any Kubernetes cluster.
-
Certificates auto-renew with cert-manager.
-
Services are scalable by adjusting
replicas
. -
Ingress routes traffic securely over HTTPS.
No comments:
Post a Comment