K8S Servicemesh Linkerd mit MicroK8S auf Raspberry PI (eBook)
322 Seiten
neobooks Self-Publishing (Verlag)
978-3-7549-8554-0 (ISBN)
Alfred Sabitzer wurde 1963 geboren, und wohnt in der Steiermark. Im Rahmen seiner beruflichen Laufbahn durfte er an vielen technologisch interessanten und herausfordernden Projekten mithelfen (Online Transaktionssysteme, Aufbau eines Telekommunikationsnetzes, Einführung eines internationalen Data Warehouses ...). Im Moment ist er mit der Migration von MicroServices aus einem Docker-Swarm Umfeld in eine Kubernetes-Cloud beschäftigt.
Alfred Sabitzer wurde 1963 geboren, und wohnt in der Steiermark. Im Rahmen seiner beruflichen Laufbahn durfte er an vielen technologisch interessanten und herausfordernden Projekten mithelfen (Online Transaktionssysteme, Aufbau eines Telekommunikationsnetzes, Einführung eines internationalen Data Warehouses ...). Im Moment ist er mit der Migration von MicroServices aus einem Docker-Swarm Umfeld in eine Kubernetes-Cloud beschäftigt.
Initiales Aufsetzen des Clusters
Inspiration:
https://microk8s.io/tutorials
Um den Cluster richtig (und immer wieder) aufsetzen zu können habe ich alles in ansible und bash-skripten abgebildet. Nach dem Initialisieren der SD-Karten haben wir fünf unabhängige Linux-Rechner. Auf jedem einzelnen Loggen wir uns ein und führen das Skript MicroK8SLocalNode.sh aus.
#!/bin/bash
############################################################################################
#
# Initialisierung auf dem lokalen Node
# Auf jedem Node einloggen, und Setup durchführen.
# Das ist eine notwendige Vorbereitung bevor der MicroK8S-Cluster aufgesetzt werden kann.
#
# wget https://gitlab.com/Alfred-Sabitzer/mikrok8s/-/raw/main/ClusterSetup/MicroK8SLocalNode.sh
#
############################################################################################
IFS="
"
#
if [[ ! ${1} =~ (pc1|pc2|pc3|pc4|pc5) ]]; then
echo "Usage ${0} (pc1|pc2|pc3|pc4|pc5) Passwort"
exit 1
fi
Node=${1}
if [[ "${2} " == " " ]]; then
echo "Usage ${0} (pc1|pc2|pc3|pc4|pc5) Passwort"
exit 1
fi
PASS=${2}
#
#shopt -o -s errexit #—Terminates the shell script if a command returns an error code.
shopt -o -s xtrace #—Displays each command before it’s executed.
shopt -o -s nounset #-No Variables without definition
#
# Wir werden Root
#
iam=$(whoami)
if [[ ! "${iam} " == "root " ]]; then
echo "Benutzer muß Root sein"
exit 1
fi
#
# Standarduser Ubuntu updaten
#
#echo ${PASS} > /tmp/pass.txt
#echo ${PASS} >> /tmp/pass.txt
#cat /tmp/pass.txt | passwd ubuntu
# Sudo einrichten
sed --in-place '/ALL=(ALL:ALL) NOPASSWD:ALL/d' /etc/sudoers
echo '%sudo ALL=(ALL:ALL) NOPASSWD:ALL' >> /etc/sudoers
#
# Anlegen der User
#
username=$(cat /etc/passwd | grep -i alfred)
if [[ ! "${username} " == " " ]]; then
userdel -f -r alfred
fi
username=$(cat /etc/passwd | grep -i ansible)
if [[ ! "${username} " == " " ]]; then
userdel -f -r ansible
fi
useradd --comment "Systemadmin" -m --shell "/bin/bash" --password $(openssl passwd -crypt $PASS) alfred
useradd --comment "Systembenutzer für ansible" -m --shell "/bin/bash" --password $(openssl passwd -crypt $PASS) ansible
usermod -aG sudo alfred
usermod -aG sudo ansible
#
# ssh-keys
#
mkdir -p /home/alfred/.ssh/
curl -L https://gitlab.com/Alfred-Sabitzer/mikrok8s/-/raw/main/ClusterSetup/alfred_id_rsa.pub -o /home/alfred/.ssh/authorized_keys
chown -R alfred:alfred /home/alfred/.ssh
chown -R alfred:alfred /home/alfred/.ssh/authorized_keys
mkdir -p /home/ansible/.ssh/
curl -L https://gitlab.com/Alfred-Sabitzer/mikrok8s/-/raw/main/ClusterSetup/ansible_id_rsa.pub -o /home/ansible/.ssh/authorized_keys
chown -R ansible:ansible /home/ansible/.ssh
chown -R ansible:ansible /home/ansible/.ssh/authorized_keys
#
# Firmware-Settings
#
curl -L https://gitlab.com/Alfred-Sabitzer/mikrok8s/-/raw/main/ClusterSetup/cmdline.txt -o /boot/firmware/cmdline.txt
#
# Hostname
#
echo ${Node} > /etc/hostname
#
# Hosts-File
#
curl -L https://gitlab.com/Alfred-Sabitzer/mikrok8s/-/raw/main/ClusterSetup/hosts -o /etc/hosts
NODEIP=$(cat /etc/hosts | grep -i ${Node})
sf=" ${Node}"
NODEIP=${NODEIP%"$sf"*}
sed -i "s,#NODE#,${Node},g" /etc/hosts
#
# Network-Config
#
curl -L https://gitlab.com/Alfred-Sabitzer/mikrok8s/-/raw/main/ClusterSetup/99-disable-network-config.cfg -o /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
curl -L https://gitlab.com/Alfred-Sabitzer/mikrok8s/-/raw/main/ClusterSetup/50-cloud-init.yaml -o /etc/cloud/cloud.cfg.d/50-cloud-init.yaml
sed -i "s,#NODE#,${NODEIP},g" /etc/cloud/cloud.cfg.d/50-cloud-init.yaml
#
# NTP
#
curl -L https://gitlab.com/Alfred-Sabitzer/mikrok8s/-/raw/main/ClusterSetup/timesyncd.conf -o /etc/systemd/timesyncd.conf
systemctl stop systemd-timesyncd.service
systemctl enable systemd-timesyncd.service
systemctl start systemd-timesyncd.service
systemctl status systemd-timesyncd.service
#
# Startup-file für Modprobe
#
curl -L https://gitlab.com/Alfred-Sabitzer/mikrok8s/-/raw/main/ClusterSetup/modprobe.service -o /etc/systemd/system/modprobe.service
chown root:root /etc/systemd/system/modprobe.service
chmod 755 /etc/systemd/system/modprobe.service
systemctl stop modprobe.service
systemctl enable modprobe.service
systemctl start modprobe.service
systemctl status modprobe.service
#
# Lokale Rechte
#
#
# Jetzt ist der Node Startklar und kann mit ansible weiter konfiguriert werden
#
Wir werden Root (mit sudo su -l) und laden das Skript herunter.
wget https://gitlab.com/Alfred-Sabitzer/mikrok8s/-/raw/main/ClusterSetup/MicroK8SLocalNode.sh
chmod 755 ./MicroK8SLocalNode.sh
/MicroK8SLocalNode.sh pc1 MeinGeheimesPasswort
Dieses Skript konfiguriert den lokalen Node für die spätere Benutzung. Es werden zwei User eingerichtet (eben alfred und ansible). Für diese User werden auch die SSH-Keys eingespielt (sie können sich später ohne Passwort einloggen). Diese User sind Mitglied der sudo-Gruppe und können jeden Befehl ohne Passwort absetzen. Danach kann von der Management-Console am "Management-Rechner" das Skript ClusterSetup.sh aufgerufen werden. Dieses Skript erzeugt dann den MicroK8S-Cluster und ruft die einzelnen Kommandos in der richtigen Reihenfolge auf.
#!/bin/bash
############################################################################################
#
# Schnell-Installation microk8s
#
############################################################################################
#shopt -o -s errexit #—Terminates the shell script if a command returns an error code.
shopt -o -s xtrace #—Displays each command before it’s executed.
shopt -o -s nounset #-No Variables without definition
indir=$(dirname "$0")
#
# Vorraussetzung: Sauber installierte Nodes
# Ansible Account verfügbar
# Lokal vorhandenes Kubectl, kpt, kustomize, docker
#
${indir}/MicroK8SInit.sh
...| Erscheint lt. Verlag | 5.12.2022 |
|---|---|
| Verlagsort | Berlin |
| Sprache | deutsch |
| Themenwelt | Mathematik / Informatik ► Informatik |
| Schlagworte | K8s • Kubernetes • Pi • raspberry |
| ISBN-10 | 3-7549-8554-X / 375498554X |
| ISBN-13 | 978-3-7549-8554-0 / 9783754985540 |
| Informationen gemäß Produktsicherheitsverordnung (GPSR) | |
| Haben Sie eine Frage zum Produkt? |
E-Book Endkundennutzungsbedinungen des Verlages
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belletristik und Sachbüchern. Der Fließtext wird dynamisch an die Display- und Schriftgröße angepasst. Auch für mobile Lesegeräte ist EPUB daher gut geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich