Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Microk8s for MacOS #72

Draft
wants to merge 11 commits into
base: master
Choose a base branch
from
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,5 @@ npm-debug.log.*
*.scss.d.ts
package-lock.json
local.values.yaml

inspection-report-*
2 changes: 1 addition & 1 deletion assets/scripts/check-helm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ else
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
echo "$PASSWORD" | sudo -S chmod 700 get_helm.sh
echo "$PASSWORD" | sudo -S bash get_helm.sh
rm get_helm.sh -f
rm -f get_helm.sh
fi

HELM_VERSION=$(helm version)
Expand Down
131 changes: 131 additions & 0 deletions assets/scripts/check-microk8s-macos.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
#!/bin/bash

set -e

#===========
# Parameters
#===========

PASSWORD=$1
ASSETS_FOLDER=$2

#================
# Verify MicroK8s
#================

CONFIGURE_MICROK8S=false
if echo "$PASSWORD" | sudo -S microk8s version >/dev/null; then
echo "microk8s is installed"
else
echo "microk8s is not installed"

# multipass is needed to package microk8s locally
brew install --cask multipass

brew install ubuntu/microk8s/microk8s
microk8s install --channel=1.26

echo "Installed multipass and microk8s"

CONFIGURE_MICROK8S=true
fi

#==============================
# Ensure kubeconfig of microk8s
#==============================

# Check if .kube directory exists
if [[ ! -d ~/.kube ]]; then
mkdir ~/.kube
fi

microk8sConfig=~/.kube/config-microk8s
eval microk8sConfig=$microk8sConfig

echo "$PASSWORD" | sudo -S microk8s config > $microk8sConfig

echo "Exported microk8s kubeconfig to: $microk8sConfig"

kubectl config rename-context microk8s etherealengine-microk8s --kubeconfig="$microk8sConfig"

# Check if .bashrc file exists
if [[ ! -f ~/.bashrc ]]; then
touch ~/.bashrc
fi


if [[ -z $KUBECONFIG ]]; then
KUBECONFIG=$HOME/.kube/config
fi

export KUBECONFIG=$KUBECONFIG:$microk8sConfig

# Append config-microk8s in $KUBECONFIG paths of .bashrc
if grep -F config-microk8s ~/.bashrc; then
echo "config-microk8s exists in KUBECONFIG of ~/.bashrc"
else
echo "config-microk8s does not exist in KUBECONFIG of ~/.bashrc"

echo "export KUBECONFIG=$KUBECONFIG" >> ~/.bashrc
source ~/.bashrc

echo "config-microk8s entry added in KUBECONFIG of ~/.bashrc"
fi

kubectl config use-context etherealengine-microk8s

MICROK8S_VERSION=$(echo "$PASSWORD" | sudo -S microk8s version)
echo "microk8s version is $MICROK8S_VERSION"

MICROK8S_STATUS=$(echo "$PASSWORD" | sudo -S microk8s status)
echo "microk8s status is $MICROK8S_STATUS"

#=======================================================
# Ensure microk8s is running with correct configurations
#=======================================================


if microk8s status | grep 'microk8s is not running'; then
CONFIGURE_MICROK8S=true
fi

if $CONFIGURE_MICROK8S; then
echo "Microk8s not running, starting..."

# Start microk8s
echo "$PASSWORD" | sudo -S microk8s start

echo "Microk8s started"

# Enable Addons
echo "$PASSWORD" | sudo -S microk8s enable dashboard
echo "$PASSWORD" | sudo -S microk8s enable dns
echo "$PASSWORD" | sudo -S microk8s enable registry
# Since below command can cause terminal to exit.
set +e
echo "$PASSWORD" | sudo -S microk8s enable host-access
set -e
echo "$PASSWORD" | sudo -S microk8s enable ingress
echo "$PASSWORD" | sudo -S microk8s enable rbac
echo "$PASSWORD" | sudo -S microk8s enable hostpath-storage
echo "$PASSWORD" | sudo -S microk8s enable helm3

sleep 30

# Inspect microk8s
echo "$PASSWORD" | sudo -S microk8s inspect

# Check microk8s status
MICROK8S_STATUS=$(echo "$PASSWORD" | sudo -S microk8s status)
echo "microk8s status is $MICROK8S_STATUS"

if echo "$PASSWORD" | sudo -S microk8s status | grep 'microk8s is not running'; then
echo "There is something wrong in your microk8s. Please fix all warnings in 'sudo microk8s inspect' and reboot. If you still face this issue then, try 'sudo snap remove microk8s --purge'"
exit 4
fi

# Update kubernetes dashboard to allow skip login and update user role to have access to metrics.
kubectl patch deployment kubernetes-dashboard -n kube-system --type 'json' -p '[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--enable-skip-login"}]'
kubectl delete clusterrolebinding kubernetes-dashboard -n kube-system
kubectl apply -f "$ASSETS_FOLDER/files/microk8s-dashboard.yaml"
fi
Loading