"Die Erfindung des Alphabets wird die Lernenden in ihrer Seele vergesslich machen, weil sie dann das Gedächtnis nicht mehr üben..." (Platon)

Inspiration:


https://www.digitalocean.com/community/tutorials/how-to-set-up-an-object-storage-server-using-minio-on-ubuntu-18-04-de
https://docs.min.io/docs/minio-quickstart-guide.html
https://dl.min.io/server/minio/release/linux-arm64/minio
https://docs.min.io/docs/distributed-minio-quickstart-guide.html
https://github.com/minio/operator/blob/master/README.md
https://krew.sigs.k8s.io/docs/user-guide/setup/install/
 
Minio ist ein S3-kompatibler Object-Store, der in der Regel für Backups verwendet wird. Man kann Minio als externen Object-Store-Server installieren, oder man versucht Minio in Kubernetes zu integrieren.


#!/bin/bash
############################################################################################
#    $Date: 2021-05-29 12:24:47 +0200 (Sa, 29. Mai 2021) $
#    $Revision: 482 $
#    $Author: alfred $
#    $HeadURL: https://monitoring.slainte.at/svn/slainte/trunk/k8s/microk8s/microk8s_Installation_teil9_minio.sh $
#    $Id: microk8s_Installation_teil9_minio.sh 482 2021-05-29 10:24:47Z alfred $
#
# Installieren von Minio
#
############################################################################################
#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
# Voraussetzung: Scripts in der richtigen Reihenfolge
exit
#Wird nicht gemacht, da minio-kubernets nicht am Raspberry läuft
 
#
# Definitionen für das Deployment
#
app="mikrok8s/install/minio"
pf=\$"Revision: "
sf=" "\$
fr="\$Revision: 482 $"
revision=${fr#*"$pf"}
revision=${revision%"$sf"*}
xd=(`date '+%Y-%m-%d'`)
wd="${HOME}/copy/${app}/${xd}/r${revision}"
id="/opt/cluster/${app}/${xd}/r${revision}"
rm -f -R ${wd}
mkdir -p ${wd}
 
#
# Installieren von krew - https://krew.sigs.k8s.io/docs/user-guide/setup/install/
#
cat <<EOF  > ${wd}/install_krew.sh
#  \$Date: 2021-05-29 12:24:47 +0200 (Sa, 29. Mai 2021) $
#  \$Revision: 482 $
#  \$Author: alfred $
#  \$HeadURL: https://monitoring.slainte.at/svn/slainte/trunk/k8s/microk8s/microk8s_Installation_teil9_minio.sh $
#  \$Id: microk8s_Installation_teil9_minio.sh 482 2021-05-29 10:24:47Z alfred $
# Installation von krew
#
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
echo \$*
  set -x;  
  cd "\$(mktemp -d)"
  OS="\$(uname | tr '[:upper:]' '[:lower:]')"
  ARCH="\$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')"
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/krew.tar.gz"
  tar zxvf krew.tar.gz  
  KREW=./krew-"\${OS}_\${ARCH}"
  "\${KREW}" install krew
EOF
chmod 755 ${wd}/install_krew.sh
# Installation für ansible
ansible pc -m shell -a ${id}/install_krew.sh
# Installation für alfred
ansible pc -m shell -a 'sudo su -l alfred '${id}/install_krew.sh
#
# Update Path
#
cat <<EOF  > ${wd}/add_krew_to_path.ansible
#  \$Date: 2021-05-29 12:24:47 +0200 (Sa, 29. Mai 2021) $
#  \$Revision: 482 $
#  \$Author: alfred $
#  \$HeadURL: https://monitoring.slainte.at/svn/slainte/trunk/k8s/microk8s/microk8s_Installation_teil9_minio.sh $
#  \$Id: microk8s_Installation_teil9_minio.sh 482 2021-05-29 10:24:47Z alfred $
# Installation von krew
# #export PATH="\${KREW_ROOT:-\$HOME/.krew}/bin:\$PATH"
-
  name: 'Playbook for add krew to path in /.profile'
  hosts: pc
  become: True
  become_method: sudo
  tasks:
    - name: Add path to alfred
      lineinfile:
        path: /home/alfred/.profile
        regexp: 'export PATH="\$HOME/.krew/bin:\$PATH"'
        line: 'export PATH="\$HOME/.krew/bin:\$PATH"'
        state: present
    - name: Add path to ansible
      lineinfile:
        path: /home/ansible/.profile
        regexp: 'export PATH="\$HOME/.krew/bin:\$PATH"'
        line: 'export PATH="\$HOME/.krew/bin:\$PATH"'
        state: present
    - name: Add path to alfred-bashrc
      lineinfile:
        path: /home/alfred/.bashrc
        regexp: 'export PATH="\$HOME/.krew/bin:\$PATH"'
        line: 'export PATH="\$HOME/.krew/bin:\$PATH"'
        state: present
    - name: Add path to ansible-bashrc
      lineinfile:
        path: /home/ansible/.bashrc
        regexp: 'export PATH="\$HOME/.krew/bin:\$PATH"'
        line: 'export PATH="\$HOME/.krew/bin:\$PATH"'
        state: present
EOF
ansible-playbook -v ${wd}/add_krew_to_path.ansible
 
cat <<EOF > ${wd}/minio-namespace-tenant.yaml
#  \$Date: 2021-05-29 12:24:47 +0200 (Sa, 29. Mai 2021) $
#  \$Revision: 482 $
#  \$Author: alfred $
#  \$HeadURL: https://monitoring.slainte.at/svn/slainte/trunk/k8s/microk8s/microk8s_Installation_teil9_minio.sh $
#  \$Id: microk8s_Installation_teil9_minio.sh 482 2021-05-29 10:24:47Z alfred $
# Namespace für den Object-Store Tenant
#
apiVersion: v1
kind: Namespace
metadata:
  labels:
    kubernetes.io/metadata.name: minio-tenant-1
  name: minio-tenant-1
spec:
  finalizers:
  - kubernetes
EOF
 
cat <<EOF > ${wd}/minio-sc.yaml
#  \$Date: 2021-05-29 12:24:47 +0200 (Sa, 29. Mai 2021) $
#  \$Revision: 482 $
#  \$Author: alfred $
#  \$HeadURL: https://monitoring.slainte.at/svn/slainte/trunk/k8s/microk8s/microk8s_Installation_teil9_minio.sh $
#  \$Id: microk8s_Installation_teil9_minio.sh 482 2021-05-29 10:24:47Z alfred $
# Storageclass
#
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
    name: minio-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
EOF
 
#
ansible pc1 -m shell -a 'microk8s kubectl apply -f '${id}'/.'
#
# Dieses Statement geht nur vor Ort
#ansible pc -m shell -a 'kubectl krew'
# sehr seltsam
 
Exit

Das führt dann bei den händischen Tasks zu folgender Fehlermeldung.

alfred@pc1:~$ kubectl krew update
 
Updated the local copy of plugin index.
 
alfred@pc1:~$ kubectl krew install minio
 
Updated the local copy of plugin index.
 
Installing plugin: minio
 
W0529 12:28:32.313138 66907 install.go:164] failed to install plugin "minio": plugin "minio" does not offer installation for this platform
 
F0529 12:28:32.313366 66907 root.go:79] failed to install some plugins: [minio]: plugin "minio" does not offer installation for this platform
 
alfred@pc1:~$

 

Ein „externer“ Minio-Server außerhalb des Clusters ist aber nur der halbe Spaß. Das muß ich mir erst überlegen, ob das in meiner Situation Sinn gibt. Ich habe ja bereits den sshfs-mount der auf einen Raspberry ausserhalb des Clusters gemounted ist.