Skip to content

Instantly share code, notes, and snippets.

@bodsch
Last active September 8, 2023 07:15
Show Gist options
  • Save bodsch/ed1e07609892e3b4340e619f69e6e5e5 to your computer and use it in GitHub Desktop.
Save bodsch/ed1e07609892e3b4340e619f69e6e5e5 to your computer and use it in GitHub Desktop.
minikube
#!/usr/bin/env bash
set -e
[ -d configs ] || mkdir configs
MK=$(command -v minikube)
minikube_start() {
${MK} start --driver=kvm2 --cpus='4' --memory='10G' # --addons=ingress,metrics-server,dashboard,metallb-system
INSATNCE_IP=$(sudo virsh domifaddr minikube | grep "192.168.122" | awk -F ' ' '{print $4}' | cut -d "/" -f1)
echo -e "\n => instance ip: ${INSATNCE_IP}\n"
}
minikube_delete() {
${MK} delete --all
}
addon_metallb() {
${MK} addons enable metallb
METALLB_IP_PREFIX_RANGE=$(sudo virsh domifaddr minikube | grep "192.168.122" | awk -F ' ' '{print $4}' | cut -d "." -f1-3)
METALLB_IP_START=${METALLB_IP_PREFIX_RANGE}.10
METALLB_IP_END=${METALLB_IP_PREFIX_RANGE}.20
cat > configs/metallb.yaml << EOF
---
apiVersion: v1
kind: ConfigMap
metadata:
name: config
namespace: metallb-system
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- ${METALLB_IP_START}-${METALLB_IP_END}
EOF
kubectl apply --namespace metallb-system --filename configs/metallb.yaml
kubectl get --namespace metallb-system configmap/config --output yaml
}
addon_dashboard() {
${MK} addons enable dashboard
cat > configs/dashboard.yaml << EOF
---
apiVersion: v1
kind: Service
metadata:
name: loadbalancer
namespace: kubernetes-dashboard
spec:
selector:
k8s-app: kubernetes-dashboard
type: LoadBalancer
ports:
- port: 80
protocol: TCP
targetPort: 80
EOF
kubectl apply --namespace kubernetes-dashboard --filename configs/dashboard.yaml
kubectl get --namespace kubernetes-dashboard --no-headers services
kubectl get --namespace kubernetes-dashboard services --selector k8s-app=kubernetes-dashboard
}
addon_metrics() {
${MK} addons enable metrics-server
}
run() {
minikube_start
addon_metallb
addon_dashboard
addon_metrics
}
run
@bodsch
Copy link
Author

bodsch commented Sep 8, 2023

update

#!/usr/bin/env bash

set -e

LANG=C

[ -d configs ] || mkdir configs

MK=$(command -v minikube)

minikube_config() {
    ${MK} config set driver kvm2
    ${MK} config set cpus 4
    ${MK} config set memory 10G
    ${MK} config set disk-size 20G
}

minikube_start() {

    ${MK} start --driver=kvm2 --cpus='4' --memory='10G' # --addons=ingress,metrics-server,dashboard,metallb-system

    minikube_ips

    echo -e "\n"
    echo -e " => instance ip: ${INSTANCE_IP}"
    echo -e " => minikube ip: ${MINIKUBE_IP}"
    echo -e "\n"
}

minikube_ips(){

    MINIKUBE_IP=$(${MK} ip)
    INSTANCE_IP=$(sudo virsh domifaddr minikube | grep "192.168.122" | awk -F ' ' '{print $4}' | cut -d "/" -f1)
    INSTANCE_IP_PREFIX=$(sudo virsh domifaddr minikube | grep ${MINIKUBE_IP} | awk -F ' ' '{print $4}' | cut -d "." -f1-3)

    export MINIKUBE_IP
    export INSTANCE_IP
    export INSTANCE_IP_PREFIX
}

minikube_delete() {

    ${MK} delete --all
}

addon_metallb() {

    echo "addon: metallb"

    minikube_ips

    ${MK} addons enable metallb

    METALLB_IP_START=${INSTANCE_IP_PREFIX}.10
    METALLB_IP_END=${INSTANCE_IP_PREFIX}.20
    echo -e "\n"
    echo " START: ${METALLB_IP_START}"
    echo " End  : ${METALLB_IP_END}"
    echo -e "\n"

    cat > configs/metallb.yaml << EOF
---
apiVersion: v1
kind: ConfigMap

metadata:
  name: config
  namespace: metallb-system

data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - ${METALLB_IP_START}-${METALLB_IP_END}
EOF

    kubectl apply --namespace metallb-system --filename configs/metallb.yaml
    kubectl get --namespace metallb-system  configmap/config --output yaml
    echo -e "\n"
}

addon_dashboard() {

    echo "addon: dashboard"

    ${MK} addons enable dashboard

    cat > configs/dashboard.yaml << EOF
---
apiVersion: v1
kind: Service

metadata:
  name: loadbalancer
  namespace: kubernetes-dashboard

spec:
  selector:
    k8s-app: kubernetes-dashboard
  type: LoadBalancer
  ports:
    - port: 8080
      protocol: TCP
      targetPort: 9090
EOF

    kubectl apply --namespace kubernetes-dashboard --filename configs/dashboard.yaml
    kubectl get --namespace kubernetes-dashboard services # --no-headers
    kubectl get --namespace kubernetes-dashboard services --selector k8s-app=kubernetes-dashboard
    echo -e "\n"
}

addon_metrics() {

    echo "addon: metrics-server"

    ${MK} addons enable metrics-server

    echo -e "\n"
}

run() {
    if [ $0 = "./minikube_config" ]
    then
        minikube_config
    elif [ $0 = "./minikube_start" ]
    then
        minikube_start
    elif [ $0 = "./minikube_addon" ]
    then
        addon_metallb
        addon_dashboard
        addon_metrics
    elif [ $0 = "./minikube_delete" ]
    then
        minikube_delete
    else
        echo "unknown call ''${0}'"
        ln -s run.sh minikube_delete
        ln -s run.sh minikube_start
        ln -s run.sh minikube_config
        ln -s run.sh minikube_addon
        exit 1
    fi
}

run

@bodsch
Copy link
Author

bodsch commented Sep 8, 2023

Der TargetPort für das Dashboard ist nicht 8080 wie angenommen, sondern 9090.
Das habe ich dann nur beim sinnbefreiten herumstochern und kubectl -n kubernetes-dashboard describe deployments.apps kubernetes-dashboard herausgefunden.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment