Deploy on k3d #17
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy on k3d | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: "0 0 * * *" # This will run the workflow every day at midnight UTC | |
jobs: | |
deploy: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, ubuntu-22.04, ubuntu-24.04] | |
k3d: [v5.5.2, v5.6.0, v5.7.5] | |
steps: | |
- name: "Create single cluster" | |
uses: AbsaOSS/k3d-action@v2 | |
with: | |
k3d-version: ${{ matrix.k3d }} | |
cluster-name: "k3d-cluster" | |
- name: Print Kubernetes Version | |
run: | | |
kubectl version | |
- name: Test k3d | |
run: | | |
echo "Sleeping for 120 seconds, give time for the cluster to be ready" && sleep 120 | |
kubectl get no | |
kubectl get pods -A -o wide | |
kubectl get sc | |
- name: Checkout repository | |
uses: actions/checkout@v2 | |
- name: Install OpenEBS | |
run: | | |
kubectl apply -f https://openebs.github.io/charts/openebs-operator.yaml | |
echo "Sleeping for 60 seconds, give time for the operator to create the CRDs" && sleep 60 | |
kubectl get sc | |
kubectl get po -A -o wide | |
- name: Install Prometheus operator | |
id: install-prometheus-operator | |
run: | | |
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.48.1/bundle.yaml | |
echo "Sleeping for 30 seconds, give time for the operator to create the CRDs" && sleep 30 | |
kubectl get crd | |
kubectl get po -A -o wide | |
- name: Install Minio | |
id: install-minio | |
run: | | |
git clone --depth 1 --branch v6.0.1 https://github.com/minio/operator.git && kubectl apply -k operator/ | |
kubectl apply -f ./base/minio/minio-tenant-base.yaml | |
echo "Sleeping for 60 seconds, give time for the operator/tenant to create the CRDs" && sleep 60 | |
kubectl get po -A -o wide | |
kubectl get po -A -o wide | grep myminio-pool-0-0 | awk '{print $3}' | grep -q '2/2' && echo "myminio-pool-0-0 pod is running with status 2/2" || (echo "myminio-pool-0-0 pod is not running with status 2/2" && exit 1) | |
- name: Install MongoDB | |
id: install-mongodb | |
run: | | |
helm repo add bitnami https://charts.bitnami.com/bitnami | |
kubectl create namespace mongodb | |
helm install mongodb -n mongodb bitnami/mongodb --values ./base/mongodb/mongodb-values.yaml | |
echo "Sleeping for 250 seconds, give time for the helm chart to create the pods" && sleep 250 | |
kubectl get pods -A -o wide | |
kubectl get pods -A -o wide | grep mongodb | awk '{print $3}' | grep -q '1/1' && echo "mongodb pod is running with status 1/1" || (echo "mongodb pod is not running with status 1/1" && exit 1) | |
- name: Install RabbitMQ | |
id: install-rabbitmq | |
run: | | |
helm repo add bitnami https://charts.bitnami.com/bitnami | |
kubectl create namespace rabbitmq | |
helm install rabbitmq -n rabbitmq bitnami/rabbitmq --values ./base/rabbitmq/rabbitmq-values.yaml | |
echo "Sleeping for 60 seconds, give time for the helm chart to create the pods" && sleep 60 | |
kubectl get pods -A -o wide | |
kubectl get pods -A -o wide | grep rabbitmq | awk '{print $3}' | grep -q '1/1' && echo "rabbitmq pod is running with status 1/1" || (echo "rabbitmq pod is not running with status 1/1" && exit 1) | |
- name: Install Vernemq (MQTT Broker) | |
id: install-vernemq | |
run: | | |
kubectl create namespace vernemq | |
helm repo add vernemq https://vernemq.github.io/docker-vernemq | |
helm install vernemq vernemq/vernemq --values ./base/vernemq/vernemq-values.yaml -n vernemq --create-namespace | |
echo "Sleeping for 120 seconds, give time for the helm chart to create the pods" && sleep 120 | |
kubectl get pods -A -o wide | |
kubectl get pods -A -o wide | grep vernemq-0 | awk '{print $3}' | grep -q '1/1' && echo "vernemq pod is running with status 1/1" || (echo "vernemq pod is not running with status 1/1" && exit 1) | |
kubectl exec --namespace vernemq vernemq-0 -- /vernemq/bin/vmq-admin cluster show | |
- name: Install Kerberos Vault | |
id: install-kerberos-vault | |
run: | | |
kubectl create namespace kerberos-vault | |
kubectl apply -f ./base/mongodb/mongodb-configmap.yaml -n kerberos-vault | |
kubectl apply -f ./base/vault/kerberos-vault-deployment.yaml -n kerberos-vault | |
kubectl apply -f ./base/vault/kerberos-vault-service.yaml -n kerberos-vault | |
echo "Sleeping for 30 seconds, give time for the helm chart to create the pods" && sleep 30 | |
kubectl get pods -A -o wide | |
kubectl get pods -A -o wide | grep kerberos-vault | awk '{print $3}' | grep -q '1/1' && echo "kerberos-vault pod is running with status 1/1" || (echo "kerberos-vault pod is not running with status 1/1" && exit 1) | |
- name: Install Kerberos Agent | |
id: install-kerberos-agent | |
run: | | |
kubectl apply -f ./base/agent/kerberos-agent-deployment.yaml | |
echo "Sleeping for 30 seconds, give time for the helm chart to create the pods" && sleep 30 | |
kubectl get pods -A -o wide | |
kubectl get pods -A -o wide | grep agent | awk '{print $3}' | grep -q '1/1' && echo "kerberos-agent pod is running with status 1/1" || (echo "kerberos-agent pod is not running with status 1/1" && exit 1) | |
- name: Install Data filtering | |
id: install-data-filtering | |
run: | | |
sed -e '/nvidia/ s/^#*/#/' -i ./base/vault/data-filtering-deployment.yaml | |
kubectl apply -f ./base/vault/data-filtering-deployment.yaml | |
echo "Sleeping for 250 seconds, give time for the helm chart to create the pods" && sleep 250 | |
kubectl get pods -A -o wide | |
kubectl get pods -A -o wide | grep data-filtering | awk '{print $3}' | grep -q '1/1' && echo "data-filtering pod is running with status 1/1" || (echo "data-filtering pod is not running with status 1/1" && exit 1) | |
- name: Install Kerberos Hub helm chart | |
id: install-kerberos-hub | |
run: | | |
helm repo add kerberos https://charts.kerberos.io | |
kubectl create namespace kerberos-hub | |
helm install hub kerberos/hub --values ./base/hub/kerberos-hub-values.yaml -n kerberos-hub --create-namespace | |
echo "Sleeping for 300 seconds, give time for the helm chart to create the pods" && sleep 300 | |
kubectl get pods -A -o wide | |
kubectl get pods -A -o wide | grep kerberos-hub | awk '{print $3}' | grep -q '1/1' && echo "kerberos-hub pod is running with status 1/1" || (echo "kerberos-hub pod is not running with status 1/1" && exit 1) |