Saya rasa saya menemukan solusi (menggunakan Deployment dan Service).
Untuk penerapan saya, saya menggunakan dua wadah (aplikasi web + redis) dalam satu Pod, karena tidak masuk akal jika aplikasi web berjalan tanpa instance redis aktif, dan selain itu terhubung ke redis saat aplikasi dimulai. Saya bisa saja salah dalam alasan ini, jadi jangan ragu untuk mengoreksi saya jika Anda berpikir sebaliknya.
Inilah penerapan saya:
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: {}
Dan inilah definisi Layanan:
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
ports:
- port: 8080
protocol: TCP
type: NodePort
selector:
app: my-app-deployment
Saya membuat penerapan dengan:kubectl create -f deployment.yaml
Kemudian, saya membuat layanan dengan kubectl create -f service.yaml
Saya membaca IP dengan minikube ip
dan ekstrak port dari output kubectl describe service my-app-service
.