mirror of
https://gitea.com/mcereda/oam.git
synced 2026-02-09 05:44:23 +00:00
218 lines
5.7 KiB
Bash
218 lines
5.7 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
set -ex
|
|
|
|
# minikube start --cpus 4 --memory 4GiB --vm
|
|
# minikube addons enable ingress
|
|
# minikube addons enable metrics-server
|
|
|
|
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
|
|
helm repo add kedacore https://kedacore.github.io/charts
|
|
helm repo add nextcloud https://nextcloud.github.io/helm/
|
|
helm repo update
|
|
|
|
helm upgrade --install --namespace monitoring --create-namespace prometheus prometheus-community/prometheus --values <(
|
|
ingress:
|
|
enabled: true
|
|
hosts:
|
|
- prometheus
|
|
)
|
|
helm upgrade --install --namespace scaling --create-namespace keda kedacore/keda --set prometheus.enabled=true
|
|
helm upgrade --install --namespace nextcloud --create-namespace nextcloud nextcloud/nextcloud \
|
|
--set ingress.enabled=true \
|
|
--set metrics.enabled=true \
|
|
--set nextcloud.host=nextcloud \
|
|
--set nextcloud.password=qwerty \
|
|
--set-string service.port=80
|
|
|
|
kubectl patch service --namespace monitoring prometheus-server --patch '{
|
|
"spec": {
|
|
"type": "NodePort"
|
|
}
|
|
}'
|
|
kubectl patch deployments.apps --namespace kube-system ingress-nginx-controller --patch '{
|
|
"spec": {
|
|
"template": {
|
|
"metadata": {
|
|
"annotations": {
|
|
"prometheus.io/port": "10254",
|
|
"prometheus.io/scrape": "true"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}'
|
|
# minikube service --namespace monitoring prometheus-server
|
|
|
|
# kubectl patch service --namespace monitoring grafana --patch '{
|
|
# "spec": {
|
|
# "type": "NodePort"
|
|
# }
|
|
# }'
|
|
# curl "$(minikube service --namespace monitoring grafana --url)/api/datasources" --request POST --user admin:qwerty --header "Content-Type: application/json" --data '{
|
|
# "name": "Prometheus",
|
|
# "type": "prometheus",
|
|
# "access": "proxy",
|
|
# "url": "http://prometheus-server"
|
|
# }'
|
|
|
|
# echo "$(minikube ip) nextcloud" | sudo tee -a /etc/hosts
|
|
# minikube service --namespace nextcloud nextcloud
|
|
|
|
kubectl apply --filename - <<EOF
|
|
apiVersion: keda.sh/v1alpha1
|
|
kind: ScaledObject
|
|
metadata:
|
|
name: grafana
|
|
namespace: monitoring
|
|
spec:
|
|
scaleTargetRef:
|
|
name: grafana
|
|
minReplicaCount: 1
|
|
maxReplicaCount: 5
|
|
pollingInterval: 5
|
|
advanced:
|
|
restoreToOriginalReplicaCount: true
|
|
triggers:
|
|
- type: prometheus
|
|
metadata:
|
|
serverAddress: http://prometheus-server.monitoring
|
|
metricName: nginx_ingress_controller_requests
|
|
query: sum(rate(nginx_ingress_controller_requests{ingress="grafana"}[2m]))
|
|
threshold: '1000'
|
|
EOF
|
|
|
|
ab -n 100000 -c 10 http://grafana/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
------
|
|
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
## tested on macosx using minikube 1.17.0 and k8s v1.20.2 on Docker 20.10.2
|
|
|
|
set -ex
|
|
|
|
# minikube start --cpus 4 --memory 4GiB --vm
|
|
# minikube addons enable ingress
|
|
# minikube addons enable metrics-server
|
|
|
|
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
|
|
helm repo add grafana https://grafana.github.io/helm-charts
|
|
helm repo add kedacore https://kedacore.github.io/charts
|
|
helm repo update
|
|
|
|
cat > /tmp/values.demo.grafana.yaml <<EOF
|
|
adminPassword: qwerty
|
|
ingress:
|
|
enabled: true
|
|
hosts:
|
|
- grafana
|
|
EOF
|
|
|
|
# echo "$(minikube ip) grafana prometheus" | sudo tee -a /etc/hosts
|
|
|
|
helm upgrade --install --namespace monitoring --create-namespace prometheus prometheus-community/prometheus
|
|
helm upgrade --install --namespace monitoring --create-namespace grafana grafana/grafana --values /tmp/values.demo.grafana.yaml
|
|
helm upgrade --install --namespace scaling --create-namespace keda kedacore/keda
|
|
|
|
kubectl patch service --namespace monitoring prometheus-server --patch '{
|
|
"spec": {
|
|
"type": "NodePort"
|
|
}
|
|
}'
|
|
minikube service --namespace monitoring prometheus-server
|
|
|
|
kubectl patch deployments.apps --namespace kube-system ingress-nginx-controller --patch '{
|
|
"spec": {
|
|
"template": {
|
|
"metadata": {
|
|
"annotations": {
|
|
"prometheus.io/port": "10254",
|
|
"prometheus.io/scrape": "true"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}'
|
|
|
|
curl "http://grafana/api/datasources" --request POST --user admin:qwerty --header "Content-Type: application/json" --data '{
|
|
"name": "Prometheus",
|
|
"type": "prometheus",
|
|
"access": "proxy",
|
|
"url": "http://prometheus-server"
|
|
}'
|
|
curl "https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/grafana/dashboards/nginx.json" | pbcopy
|
|
open http://grafana/
|
|
# import a dashboard pasting the clipboard's content
|
|
|
|
kubectl apply --filename - <<EOF
|
|
apiVersion: keda.sh/v1alpha1
|
|
kind: ScaledObject
|
|
metadata:
|
|
name: grafana
|
|
namespace: monitoring
|
|
spec:
|
|
scaleTargetRef:
|
|
name: grafana
|
|
minReplicaCount: 1
|
|
maxReplicaCount: 5
|
|
pollingInterval: 2
|
|
advanced:
|
|
restoreToOriginalReplicaCount: true
|
|
triggers:
|
|
- type: prometheus
|
|
metadata:
|
|
serverAddress: http://prometheus-server.monitoring
|
|
metricName: nginx_ingress_controller_requests
|
|
query: sum(rate(nginx_ingress_controller_requests{ingress="grafana"}[2m]))
|
|
threshold: '10'
|
|
EOF
|
|
|
|
# HPA behavior is available from K8S v1.18.0
|
|
# ---
|
|
kubectl apply --filename - <<EOF
|
|
apiVersion: keda.sh/v1alpha1
|
|
kind: ScaledObject
|
|
metadata:
|
|
name: grafana
|
|
namespace: monitoring
|
|
spec:
|
|
scaleTargetRef:
|
|
name: grafana
|
|
minReplicaCount: 1
|
|
maxReplicaCount: 5
|
|
pollingInterval: 2
|
|
advanced:
|
|
restoreToOriginalReplicaCount: true
|
|
horizontalPodAutoscalerConfig:
|
|
behavior:
|
|
scaleDown:
|
|
stabilizationWindowSeconds: 3
|
|
policies:
|
|
- type: Percent
|
|
value: 100
|
|
periodSeconds: 5
|
|
scaleUp:
|
|
stabilizationWindowSeconds: 3
|
|
policies:
|
|
- type: Percent
|
|
value: 100
|
|
periodSeconds: 5
|
|
triggers:
|
|
- type: prometheus
|
|
metadata:
|
|
serverAddress: http://prometheus-server.monitoring
|
|
metricName: nginx_ingress_controller_requests
|
|
query: sum(rate(nginx_ingress_controller_requests{ingress="grafana"}[2m]))
|
|
threshold: '10'
|
|
EOF
|
|
|
|
ab -n 750 -c 1 http://grafana/
|