zotregistry.io/zot@v1.4.4-0.20231124084042-02a8ed785457/examples/metrics/kind_setup.sh (about)

     1  #!/bin/bash
     2  
     3  #set -x
     4  set -e
     5  
     6  CLUSTER_NAME=zot
     7  
     8  # Script tested with below kubectl & kind versions
     9  KUBECTL_VERSION=v1.27.3
    10  KIND_VERSION=v0.20.0
    11  
    12  function install_bin() {
    13      if [ "$EUID" -ne 0 ]
    14          then echo "Please run as root/sudo"
    15          exit 1
    16      fi
    17      curl -Lo ./$2 $1
    18      chmod +x ./$2
    19      yes | mv ./$2 /usr/local/bin/$2
    20  }
    21  
    22  ## Install kubectl & kind if not available on the system
    23  
    24  # Kubectl
    25  kubectl > /dev/null 2>&1 || install_bin https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/`uname | awk '{print tolower($0)}'`/amd64/kubectl kubectl
    26  
    27  # Kind
    28  kind version || install_bin https://kind.sigs.k8s.io/dl/${KIND_VERSION}/kind-$(uname)-amd64 kind
    29  
    30  ## Delete the cluster if it already exist
    31  kind get clusters | grep ${CLUSTER_NAME} &&  kind delete cluster --name ${CLUSTER_NAME}
    32  
    33  kind create cluster --name ${CLUSTER_NAME}
    34  
    35  docker pull quay.io/prometheus-operator/prometheus-operator:v0.51.2
    36  docker pull quay.io/prometheus-operator/prometheus-config-reloader:v0.51.2
    37  docker pull quay.io/prometheus/prometheus:v2.22.1
    38  
    39  kind load docker-image quay.io/prometheus-operator/prometheus-operator:v0.51.2 --name ${CLUSTER_NAME}
    40  kind load docker-image quay.io/prometheus-operator/prometheus-config-reloader:v0.51.2 --name ${CLUSTER_NAME}
    41  kind load docker-image quay.io/prometheus/prometheus:v2.22.1 --name ${CLUSTER_NAME}
    42  
    43  ## Build zot & zxp images
    44  make -C ../../ binary-container
    45  make -C ../../ binary-minimal-container
    46  make -C ../../ binary-exporter-container
    47  
    48  kind load docker-image zot-build:latest --name ${CLUSTER_NAME}
    49  kind load docker-image zot-minimal:latest --name ${CLUSTER_NAME}
    50  kind load docker-image zxp:latest --name ${CLUSTER_NAME}
    51  
    52  ## Deploy prometheus operator
    53  kubectl create -f kubernetes/prometheus/bundle.yaml
    54  
    55  ## Deploy the Kubernetes objects for RBAC, prometheus CRD and deploy the service
    56  kubectl apply -f kubernetes/prometheus/prom_rbac.yaml
    57  kubectl apply -f kubernetes/prometheus/prometheus.yaml
    58  kubectl apply -f kubernetes/prometheus/prom_service.yaml
    59  
    60  sleep 10
    61  ## Deploy zot extended & minimal in 2 separate deployments
    62  ## Deploy Prometheus operator servicemonitor CRD instances for prometheus to be able to scrape metrics from zot extended & the node exporter
    63  kubectl apply -f kubernetes/zot-extended/deployment.yaml
    64  kubectl apply -f kubernetes/zot-extended/service.yaml
    65  kubectl apply -f kubernetes/zot-extended/servicemonitor.yaml
    66  
    67  kubectl apply -f kubernetes/zot-minimal/deployment.yaml
    68  kubectl apply -f kubernetes/zot-minimal/service.yaml
    69  kubectl apply -f kubernetes/zot-minimal/exporter-service.yaml
    70  kubectl apply -f kubernetes/zot-minimal/exporter-servicemonitor.yaml
    71  
    72  sleep 10
    73  ## For being able to access prometheus, zot & exporter on localhost ports
    74  kubectl port-forward svc/prometheus 9090 --address='0.0.0.0' &
    75  kubectl port-forward svc/zot-extended 5000 --address='0.0.0.0' &
    76  kubectl port-forward svc/zot-minimal 5050 --address='0.0.0.0' &
    77  kubectl port-forward svc/zot-exporter 5051 --address='0.0.0.0' &
    78