The Kubernetes config repository for the corresponding MicroKino Microservices https://github.com/fh-erfurt/MicroKino
Unter Verwendung von Linux muss ggf. mit sudo
die Berechitung erteilt werden.
Dies folgenden Schritte müssen nur einmalig durchgeführt werden und sind ggf schon auf eurem System vorhanden.
Mac
Windows
Mac
brew install kind
Windows
choco install kind
Linux
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
Mac https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/
brew install kubectl
Windows https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/
choco install kubernetes-cli
Linux https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/
sudo snap install kubectl --classic
Mac https://docs.docker.com/docker-for-mac/install/
brew install docker
Windows https://docs.docker.com/docker-for-windows/install/
choco install docker-desktop
Linux Für Linux sind mehrere Schritte nötig, diese sind auf der Docker-Website beschrieben: https://docs.docker.com/engine/install/ubuntu/
- Einstellungen -> Developer Settings -> Personal Access Tokens -> Generate new token
- read:packages
https://dev.to/asizikov/using-github-container-registry-with-kubernetes-38fb
echo -n "<github-username>:<personal-access-token" | base64
output = base-64-encoded-pat
echo -n '{"auths":{"ghcr.io":{"auth":"<base-64-encoded-pat>"}}}' | base64
output = base-64-encoded-docker-config
Generate dockerconfigjson.yaml
file if not exists and add the base64 encoded PAT to the field data.dockerconfigjson
kind: Secret
type: kubernetes.io/dockerconfigjson
apiVersion: v1
metadata:
name: dockerconfigjson-github-com
labels:
app: app-name
data:
.dockerconfigjson: <base-64-encoded-docker-config>
docker login ghcr.io -u <github-username> -p <personal-access-token>
In der Datei traefik/ingressroutes.yaml
muss die Serveradresse angepasst werden:
Für jede Route muss die Serveradresse angepasst werden. Diese muss mit der Adresse des Servers übereinstimmen, auf dem die Microservices laufen. Dies kann euer Server sein oder wenn ihr es Lokal ausführt, dann ist es localhost
.
- match: Host(`<server-adresse>`) && PathPrefix(`/cinema`)
#z.B.:
- match: Host(`localhost`) && PathPrefix(`/cinema`)
- match: Host(`microkino.ai.fh-erfurt.de`) && PathPrefix(`/cinema`)
dem deploy.sh Script im root Ordner passende Rechte geben (muss nur einmalig gemacht werden)
chmod +x deploy.sh
Starten des Kubernetes Clusters über die Konfigurationsdatei (deploy.sh)
./deploy.sh
Wenn alle Pods laufen, dann muss noch das PortForwarding eingerichtet werden:
sudo kubectl port-forward --address 0.0.0.0 service/traefik 80:80 8080:8080 443:4443 -n default
- http://microkino.ai.fh-erfurt.de/cinema/cinemas
- http://microkino.ai.fh-erfurt.de/booking/creditCards
- ...
Mit Standardnamen kind
kind create cluster
Mit benutzerdefinierten Namen microkino-cluster
kind create cluster --name microkino-cluster
Mit Konfigdatei
Config File kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: micro-kino-cluster
nodes:
- role: control-plane
kind create cluster --config kind-config.yaml
kind get clusters
kubectl get nodes
kind delete cluster --name microkino-cluster
- Workflow für automatisiertes Deployment neuer Versionen inkl. Test
- Unzuverlässigkeit vom Kafka-Dienst beheben
- Tracing + Metrics