Мисля, че намерих решение (с помощта на внедряване и услуга).
За моето внедряване използвах два контейнера (webapp + redis) в рамките на един Pod, тъй като няма смисъл уеб приложение да се изпълнява без активен екземпляр на redis и освен това се свързва с redis при стартиране на приложението. Може да греша в тези разсъждения, така че не се колебайте да ме поправите, ако мислите друго.
Ето моето разгръщане:
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: {}
А ето и дефиницията на услугата:
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
ports:
- port: 8080
protocol: TCP
type: NodePort
selector:
app: my-app-deployment
Създавам разполагането с:kubectl create -f deployment.yaml
След това създавам услугата с kubectl create -f service.yaml
Прочетох IP-то с minikube ip
и извлечете порта от изхода на kubectl describe service my-app-service
.