Ich glaube, ich habe eine Lösung gefunden (unter Verwendung einer Bereitstellung und eines Dienstes).
Für mein Deployment habe ich zwei Container (Webapp + Redis) innerhalb eines Pods verwendet, da es für eine Webapp nicht sinnvoll ist, ohne aktive Redis-Instanz zu laufen, und zusätzlich beim Anwendungsstart eine Verbindung zu Redis herstellt. Ich könnte mich in dieser Argumentation irren, also fühlen Sie sich frei, mich zu korrigieren, wenn Sie anders denken.
Hier ist meine Bereitstellung:
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: {}
Und hier ist die Dienstdefinition:
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
ports:
- port: 8080
protocol: TCP
type: NodePort
selector:
app: my-app-deployment
Ich erstelle die Bereitstellung mit:kubectl create -f deployment.yaml
Dann erstelle ich den Dienst mit kubectl create -f service.yaml
Ich lese die IP mit minikube ip
und extrahieren Sie den Port aus der Ausgabe von kubectl describe service my-app-service
.