Penso di aver trovato una soluzione (usando una distribuzione e un servizio).
Per la mia distribuzione, ho utilizzato due contenitori (webapp + redis) all'interno di un Pod, poiché non ha senso che una webapp venga eseguita senza un'istanza redis attiva e inoltre si connette a redis all'avvio dell'applicazione. Potrei sbagliarmi in questo ragionamento, quindi sentiti libero di correggermi se la pensi diversamente.
Ecco la mia distribuzione:
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: {}
Ed ecco la definizione del servizio:
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
ports:
- port: 8080
protocol: TCP
type: NodePort
selector:
app: my-app-deployment
Creo la distribuzione con:kubectl create -f deployment.yaml
Quindi, creo il servizio con kubectl create -f service.yaml
Ho letto l'IP con minikube ip
ed estrai la porta dall'output di kubectl describe service my-app-service
.