Skip to content

Merge pull request #3224 from yurake/renovate/grafana-grafana-10.x #1689

Merge pull request #3224 from yurake/renovate/grafana-grafana-10.x

Merge pull request #3224 from yurake/renovate/grafana-grafana-10.x #1689

name: Minikube Stress CI
on:
push:
branches:
- master
paths:
- "application/**"
- "kubernetes/**"
- ".github/workflows/minikube-stress-ci.yml"
pull_request:
paths:
- ".github/workflows/minikube-stress-ci.yml"
jobs:
stress-ci:
runs-on: ubuntu-latest
strategy:
matrix:
app: [redis, activemq, rabbitmq, hazelcast, kafka]
fail-fast: false
steps:
- name: checkout
uses: actions/checkout@v3.5.3
- name: start minikube
uses: medyagh/setup-minikube@v0.0.13
with:
minikube-version: 1.30.1
kubernetes-version: 1.27.3
driver: docker
container-runtime: docker
cpus: 2
memory: 6144
addons: ingress
- name: minikube settings
run: |
minikube addons list
# https://minikube.sigs.k8s.io/docs/drivers/docker/#troubleshooting
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission
- name: wait for set up ingress
run: |
kubectl wait --all-namespaces=true --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=10m
- name: apply activemq resource
if: matrix.app == 'activemq'
run: |
kubectl apply -f kubernetes/activemq/activemq-pv.yaml
kubectl apply -f kubernetes/activemq/activemq-pvc.yaml
kubectl apply -f kubernetes/activemq/activemq-deployment.yaml
kubectl apply -f kubernetes/activemq/activemq-service.yaml
kubectl apply -f kubernetes/activemq/activemq-ingress.yaml
- name: apply hazelcast resource
if: matrix.app == 'hazelcast'
run: |
kubectl apply -f kubernetes/hazelcast/hazelcast-configmap.yaml
kubectl apply -f kubernetes/hazelcast/hazelcast-statefulset.yaml
kubectl apply -f kubernetes/hazelcast/hazelcast-service.yaml
- name: apply rabbitmq resource
if: matrix.app == 'rabbitmq'
run: |
kubectl apply -f kubernetes/rabbitmq/rabbitmq-configmap.yaml
kubectl apply -f kubernetes/rabbitmq/rabbitmq-secret.yaml
kubectl apply -f kubernetes/rabbitmq/rabbitmq-deployment.yaml
kubectl apply -f kubernetes/rabbitmq/rabbitmq-service.yaml
kubectl apply -f kubernetes/rabbitmq/rabbitmq-ingress.yaml
- name: apply redis resource
if: matrix.app == 'redis'
run: |
kubectl apply -f kubernetes/redis/redis-deployment.yaml
kubectl apply -f kubernetes/redis/redis-service.yaml
- name: apply kafka resource
if: matrix.app == 'kafka'
run: |
kubectl apply -f kubernetes/zookeeper/zookeeper-statefulset.yaml
kubectl apply -f kubernetes/zookeeper/zookeeper-service.yaml
kubectl apply -f kubernetes/kafka/kafka-statefulset.yaml
kubectl apply -f kubernetes/kafka/kafka-service.yaml
kubectl apply -f kubernetes/producer-kafka-quarkus/producer-kafka-quarkus-deployment.yaml
- name: apply minimal service
run: |
kubectl apply -f kubernetes/monitoring/monitoring-namespace.yaml
kubectl apply -f kubernetes/jaeger/jaeger-all-in-one-template.yml
kubectl apply -f kubernetes/jaxrs-${{ matrix.app }}-quarkus/jaxrs-${{ matrix.app }}-quarkus-deployment.yaml
kubectl apply -f kubernetes/jaxrs-${{ matrix.app }}-quarkus/jaxrs-${{ matrix.app }}-quarkus-service.yaml
kubectl apply -f kubernetes/jaxrs-${{ matrix.app }}-quarkus/jaxrs-${{ matrix.app }}-quarkus-service-externalname.yaml
sleep 10
- name: run e2e test
run: |
kubectl wait --all-namespaces=true --for=condition=ready pod --selector=app=jaxrs-${{ matrix.app }}-quarkus --timeout=10m
kubectl apply -f kubernetes/monitoring/test/ab/ab-${{ matrix.app }}-job.yaml
- name: wait for complete e2e job
run: |
kubectl -n monitoring wait --for=condition=complete --timeout=15m job/ab-${{ matrix.app }}
kubectl -n monitoring describe job ab-${{ matrix.app }}
kubectl -n monitoring logs $(kubectl get pods -n monitoring | awk '{print $1}' | grep ab-${{ matrix.app }})
- name: check log jaxrs-${{ matrix.app }}
if: always()
run: |
kubectl describe po $(kubectl get pods | awk '{print $1}' | grep jaxrs-${{ matrix.app }})
kubectl logs $(kubectl get pods | awk '{print $1}' | grep jaxrs-${{ matrix.app }})
- name: check after test ab-${{ matrix.app }}
if: always()
run: |
kubectl -n monitoring describe po $(kubectl get pods -n monitoring | awk '{print $1}' | grep ab-${{ matrix.app }})
kubectl -n monitoring logs $(kubectl get pods -n monitoring | awk '{print $1}' | grep ab-${{ matrix.app }})
- name: check status
if: always()
run: |
kubectl get po --all-namespaces=true
kubectl get nodes
kubectl get pv
kubectl get pvc
kubectl get all
kubectl get all -n monitoring
kubectl get ingress
df -h /