Ik denk dat ik een oplossing heb gevonden (met behulp van een implementatie en een service).
Voor mijn implementatie heb ik twee containers (webapp + redis) binnen één pod gebruikt, omdat het geen zin heeft om een webapp uit te voeren zonder actieve redis-instantie, en bovendien maakt deze verbinding met redis bij het starten van de applicatie. Ik kan me vergissen in deze redenering, dus corrigeer me gerust als je er anders over denkt.
Dit is mijn implementatie:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-deployment
spec:
selector:
matchLabels:
app: my-app-deployment
template:
metadata:
labels:
app: my-app-deployment
spec:
containers:
- name: redis
image: redis:latest
ports:
- containerPort: 6379
volumeMounts:
- mountPath: /srv/www
name: redis-storage
- name: my-app
image: my-app:latest
imagePullPolicy: Never
ports:
- containerPort: 8080
volumes:
- name: redis-storage
emptyDir: {}
En hier is de servicedefinitie:
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
ports:
- port: 8080
protocol: TCP
type: NodePort
selector:
app: my-app-deployment
Ik maak de implementatie met:kubectl create -f deployment.yaml
Vervolgens maak ik de service met kubectl create -f service.yaml
Ik lees het IP met minikube ip
en extraheer de poort uit de uitvoer van kubectl describe service my-app-service
.