Einfaches Beispiel Deployment
2 Minuten Lesezeit
Deployment
nginx Ingress Controller
Um die Installation des Ingress Controllers zu vereinfachen, werden wir an dieser Stelle den Paketmanager “HELM” verwenden:
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace
Nach einer kurzen Wartezeit können Sie die öffentliche IP des Ingress-Controllers unter dem erstellten Dienst anzeigen:
kubectl --namespace ingress-nginx get services ingress-nginx-controller
nginx-Bereitstellung
In diesem Beispiel verwenden wir ein einfaches nginx-Deployment, um eine Beispiel-Webseite bereitzustellen. Zunächst muss ein PersistentVolumeClaim erstellt werden, um sicherzustellen, dass die Daten der Webseite über Pod-Neustarts hinweg bestehen bleiben:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
Nun können Sie die eigentliche nginx-Bereitstellung erstellen:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:stable-alpine
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: nginx-data
volumes:
- name: nginx-data
persistentVolumeClaim:
claimName: nginx-data
Anschließend muss die nginx-Bereitstellung innerhalb des Clusters über einen Dienst verfügbar gemacht werden:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
Ingress
Um eingehenden Datenverkehr vom Ingress Controller an die neu erstellte Bereitstellung zu leiten, muss eine Ingress-Ressource erstellt werden:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
Inhalt
Als letzter Schritt muss eine “index.html”-Datei innerhalb des PersistentVolume erstellt werden, damit die nginx-Bereitstellung keinen “403 - Forbidden”-Fehler anzeigt. Zum Beispiel:
kubectl exec deployment/nginx-deployment -- /bin/sh -c 'echo "<h1>Powered by PSKE</h1>" > /usr/share/nginx/html/index.html'
Ergebnis
Beim Zugriff auf die öffentliche IP des Ingress Controllers sollte die folgende Webseite angezeigt werden:
<h1>Powered by PSKE</h1>