Ich hab bei meinen Reisen durch das Internet mal wieder allerhand gefunden.
Eine richtige coole und brauche Kubernetes-UI... damit kann man sich auch das Dashboard in seinem Cluster sparen. Wirklich nett finde ich, das man sich mehrere cluster einrichten kann, die man dann natürlich auch damit im Wechsel ansprechen und verwalten kann.
https://opensource.com/article/20/6/kubernetes-lens
Kubernetes as a Service... so wird die Zukunft lauten... Ebene auf Ebene auf Ebene auf Ebene... wer sich schon mal damit befassen will, kann sich OpenInfra anschauen.
https://github.com/oneinfra/oneinfra?utm_sq=ge2xx3zj5m
Ich steh ja total auf dieses ganze Mesh Zeug. Schon immer war ich an verteilten Systemen interessiert. Nebula macht quasi MeshVPN... ein bisschen wie tinc auf steroiden... Sehr, sehr cool.
https://github.com/slackhq/nebula https://www.innoq.com/de/blog/nebula-vpn/ https://haxys.net/tutorials/toolkit/0-dropbox/3-nebula/
OpenGPG Milter ist quasi en Addon für deinen Mailserver und vereinfacht dir das Arbeiten mit OpenGPG.
https://github.com/letoams/openpgpkey-milter
Ich war sehr froh zu sehen, das man auch mit der Hetznercloud so autoscaling Dingens machen kann - und zwar super easy. Wer also seine Infrastruktur ein wenig dynamischer haben will, kann es mal mit diesem super Artikel versuchen.
Bei der Pod-Security-Policy habe ich doch die eine oder andere Minute gebraucht um dahinter zu steigen wo ich wie und was am besten machen kann. Dieser Artikel war wirklich eine Hilfe um da einmal den Einstieg zu finden. Es geht natürlich um Kubernetes.
https://octetz.com/docs/2018/2018-12-07-psp/?utm_sq=gf4j2xy1er
Storage ist bei Kubernetes ein wahrer PainPoint. Wer sich mal die für mich gängigen Lösungen - auch im Vergleich - anschauen möchte, sollte einen Blick riskieren. ich mag ja die einfachen Lösungen...
https://vitobotta.com/2019/08/06/kubernetes-storage-openebs-rook-longhorn-storageos-robin-portworx/ https://openebs.io/ https://storageos.com/ https://longhorn.io/
Ich liebe ja die aktuelle Bewegung zurück zu statischen Webseiten und unkomplizierten Setups. Es hat auch nur 20 Jahre gedauert bis hier Einsicht gezeigt wurde.
Gern nutze ich ja [Jekyll]https://jekyllrb.com/)... Hugo hatte ich mal getestet, es aber in 4 Stunden nicht geschafft ein eigenes Template an den Start zu bringen. Dafür bin ich dann halt nicht intelligent genug.
Jedenfalls ist es für mich eine Aufgabe meine Code zu minifiyen. Also unnötige Dingens Bummens zu entfernen. Das geht unabhägig von allem mit dem Tool "minify"... und wie man das benutzt, erklärt sich schon fast von allein :)
wget https://github.com/tdewolff/minify/releases/download/v2.8.0/minify_linux_amd64.tar.gz
gunzip minify_linux_amd64.tar.gz
tar xvf minify_linux_amd64.tar
rm LICENSE README.md
chmod +x minify
./minify -a -r -o _site/ --match=\.html --html-keep-document-tags --html-keep-end-tags --html-keep-conditional-comments _site/
Quellen und Links:
Ich arbeite ja gern mit verteilten Systemen und auch das ganze provisionierungszeug macht mir eine Menge Spaß. Weil das aber immer Fehleranfällig ist, wenn man nicht schon in einer durchgestylen Umgebung arbeitet, mache ich mir beim Aufbau einer solchen immer ein paar wiederverwendbare Notitzen in Form eines "quick and dirty" Skriptes.
So hat es sich mittlerweile als ganz brauchbar herausgestellt die folgenden Schritte beim Setup eines RKE Nodes für die Nutzung von Kubernetes zu gehen:
yum upgrade -y
yum install -y arptables.x86_64 ebtables.x86_64 nscd.x86_64 iptables.x86_64 nftables.x86_64 conntrack-tools.x86_64
systemctl start nscd nftables
systemctl enable nscd nftables
useradd -m -G docker rke
passwd rke
su - rke
mkdir $HOME/.ssh
chmod 700 $HOME/.ssh
touch $HOME/.ssh/authorized_keys
echo "PLEASE PUT YOUR SSH KEY HERE" >> /home/rke/.ssh/authorized_keys
Dieser Schritt ist nur für Knoten notwendig die etcd hosten werden.
groupadd --gid 52034 etcd
useradd --comment "etcd service account" --uid 52034 --gid 52034 etcd
Sofern vorhanden richte ich immer ganz gern die wichtigsten Knoten in einem Cluster so ein, das sie auch im Falle eines DNS Ausfalls miteinander sprechen können .
111.222.000.111 node1 node1.localdomain 111.222.000.112 node2 node3.localdomain 111.222.000.113 node3 node3.localdomain 127.0.0.1 localhost localhost.local
cat << EOF > /etc/sysctl.d/90-kubelet.conf
vm.overcommit_memory=1
vm.panic_on_oom=0
kernel.panic=10
kernel.panic_on_oops=1
kernel.keys.root_maxbytes=25000000
EOF
sysctl -p /etc/sysctl.d/90-kubelet.conf
Wenn man der offizielle Doku folgt, dann ist das hier gar nicht so unwichtig
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
Ich brauche in den Netzwerken in denen ich arbeite kein IPv6. Daher kommt raus was keine Miete zahlt.
cat <<EOF | sudo tee /etc/sysctl.d/disable-ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
EOF
sudo sysctl -p -f /etc/sysctl.d/disable-ipv6.conf
timedatectl set-timezone "Europe/Berlin"
Die Module werden immer wieder gern vergessen. Daher habe ich sie immer in einem meiner Skripte mit dabei.
cat <<EOF | sudo tee /etc/modules-load.d/rke.conf
ip6_udp_tunnel
ip_set
ip_set_hash_ip
ip_set_hash_net
iptable_mangle
iptable_raw
nf_conntrack
veth
vxlan
xt_comment
xt_mark
xt_multiport
xt_nat
xt_recent
xt_set
xt_statistic
xt_tcpudp
nf_conntrack
EOF
for i in $(cat /etc/modules-load.d/rke.conf)
do
modprobe $i
done
Vertrauen ist gut - Kontrolle ist besser
for module in br_netfilter ip6_udp_tunnel ip_set ip_set_hash_ip ip_set_hash_net iptable_filter iptable_nat iptable_mangle iptable_raw nf_conntrack_netlink nf_conntrack nf_defrag_ipv4 nf_nat nf_nat_ipv4 nfnetlink udp_tunnel veth vxlan x_tables xt_addrtype xt_conntrack xt_comment xt_mark xt_multiport xt_nat xt_recent xt_set xt_statistic xt_tcpudp;
do
if ! lsmod | grep -q $module; then
echo "module $module is not present";
fi;
done
Rancher hat ja schon alles für eine einfache Installation vorbereitet. Daher nutze ich auch einfach deren Skript zur Installation von Docker.
curl https://raw.githubusercontent.com/rancher/install-docker/master/19.03.12.sh | sh
systemctl enable docker
systemctl stop docker
systemctl start docker
# For etcd nodes, run the following commands:
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=2379/tcp
firewall-cmd --permanent --add-port=2380/tcp
firewall-cmd --permanent --add-port=8472/udp
firewall-cmd --permanent --add-port=9099/tcp
firewall-cmd --permanent --add-port=10250/tcp
# For control plane nodes, run the following commands:
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=8472/udp
firewall-cmd --permanent --add-port=9099/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10254/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --permanent --add-port=30000-32767/udp
# For worker nodes, run the following commands:
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=8472/udp
firewall-cmd --permanent --add-port=9099/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10254/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --permanent --add-port=30000-32767/udp
firewall-cmd --reload