-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
149 lines (126 loc) · 5.32 KB
/
deploy.sh
File metadata and controls
149 lines (126 loc) · 5.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#!/bin/bash
set -e
# ===========================
# Namespaces
# ===========================
echo "==========================="
echo "Creando namespaces..."
echo "==========================="
kubectl apply -f k8s/bases/kafka/namespace.yaml
kubectl apply -f k8s/bases/mongodb/namespace.yaml
kubectl apply -f k8s/bases/prometheus-operator/namespace.yaml
kubectl apply -f k8s/bases/backend/download-service/namespace.yaml
kubectl apply -f k8s/reflector.yaml
# ===========================
# RBAC
# ===========================
echo "==========================="
echo "Aplicando RBAC..."
echo "==========================="
kubectl apply -f k8s/bases/prometheus-operator/rbac/
kubectl apply -f k8s/bases/mongodb/rbac/
# ===========================
# CRDs
# ===========================
echo "==========================="
echo "Creando CRDs..."
echo "==========================="
kubectl create -f k8s/bases/prometheus-operator/crds
kubectl create -f k8s/bases/kafka/crd.yaml -n kafka
kubectl apply -f k8s/bases/mongodb/crd.yaml
echo "Esperando que los CRDs se establezcan..."
kubectl wait --for=condition=established --timeout=600s crd/kafkas.kafka.strimzi.io
kubectl wait --for=condition=established --timeout=600s crd/mongodbcommunity.mongodbcommunity.mongodb.com
# ===========================
# Cert-Manager
# ===========================
echo "==========================="
echo "Instalando Cert-Manager..."
echo "==========================="
kubectl apply -f k8s/bases/cert-manager/namespace.yaml
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-105 jetstack/cert-manager --namespace cert-manager --version v1.6.1 --values k8s/bases/cert-manager/helm-values.yaml
echo "Esperando que Cert-Manager esté listo..."
kubectl wait --for=condition=available --timeout=600s deployment/cert-105-cert-manager -n cert-manager
kubectl wait --for=condition=available --timeout=600s deployment/cert-105-cert-manager-cainjector -n cert-manager
kubectl wait --for=condition=available --timeout=600s deployment/cert-105-cert-manager-webhook -n cert-manager
# ===========================
# MongoDB
# ===========================
echo "==========================="
echo "Aplicando MongoDB..."
echo "==========================="
kubectl apply -f k8s/bases/mongodb/certificates
kubectl apply -f k8s/bases/mongodb/operator.yaml
kubectl apply -f k8s/bases/mongodb/internal
kubectl apply -f k8s/bases/mongodb/exporter
echo "Esperando que el operador de MongoDB esté listo..."
kubectl wait --for=condition=Ready --timeout=600s pod -l name=mongodb-kubernetes-operator -n mongodb
echo "Esperando a que se cree el pod de MongoDB..."
until kubectl get pods -n mongodb | grep -q my-mongodb-0; do
echo "Esperando a que se cree el pod de MongoDB..."
sleep 5
done
echo "Pod de MongoDB creado. Esperando a que esté listo..."
kubectl wait --for=condition=Ready --timeout=600s pod/my-mongodb-0 -n mongodb
# ===========================
# Kafka
# ===========================
echo "==========================="
echo "Aplicando Kafka..."
echo "==========================="
kubectl apply -f k8s/bases/kafka/certificates
kubectl apply -f k8s/bases/kafka/internal/kafka.yaml -n kafka
kubectl apply -f k8s/bases/kafka/topic.yaml
kubectl apply -f k8s/bases/kafka/user.yaml
kubectl apply -f k8s/bases/kafka/strmizi-pod-monitor.yaml
echo "Esperando que Kafka esté listo..."
kubectl wait --for=condition=Ready --timeout=600s pod -l name=strimzi-cluster-operator -n kafka
echo "Esperando a que se creen los pods de Kafka..."
until kubectl get pods -n kafka | grep -q kafka; do
echo "Esperando a que se creen los pods de Kafka..."
sleep 5
done
echo "Pods de Kafka creados. Esperando a que estén listos..."
kubectl wait --for=condition=Ready --timeout=600s pod -l app.kubernetes.io/name=kafka -n kafka
kubectl wait --for=condition=Ready --timeout=600s pod -l app.kubernetes.io/name=zookeeper -n kafka
# ===========================
# Prometheus & Grafana
# ===========================
echo "==========================="
echo "Aplicando Prometheus y Grafana..."
echo "==========================="
kubectl apply -f k8s/bases/prometheus-operator/deployment
kubectl apply -f k8s/bases/prometheus/
kubectl apply -R -f k8s/bases/grafana
# ===========================
# Otros recursos
# ===========================
echo "==========================="
echo "Aplicando otros recursos..."
echo "==========================="
kubectl apply -f k8s/bases/cadvisor
# ===========================
# Backend
# ===========================
echo "==========================="
echo "Aplicando Backend..."
echo "==========================="
kubectl apply -f k8s/bases/backend/download-service/
echo "Esperando que los pods del servicio de descarga estén listos..."
kubectl wait --for=condition=Ready --timeout=600s pod -l app=audio-processing-service -n backend
kubectl apply -f k8s/bases/backend/discord-bot/
echo "Esperando que los pods del servicio de descarga estén listos..."
kubectl wait --for=condition=Ready --timeout=600s pod -l app=discord-bot -n backend
# ===========================
# Verificación Final
# ===========================
echo "==========================="
echo "Verificación final de los pods y recursos desplegados..."
echo "==========================="
kubectl get pods --all-namespaces
kubectl get crds
echo "==========================="
echo "Despliegue completado exitosamente."
echo "==========================="