Skip to content

Commit 1c263ae

Browse files
committed
Task 14 : Implement Kubernetes Process
1 parent 119342b commit 1c263ae

15 files changed

+394
-0
lines changed

k8s/grafana-deployment.yaml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: grafana
5+
namespace: default
6+
spec:
7+
replicas: 1
8+
selector:
9+
matchLabels:
10+
app: grafana
11+
template:
12+
metadata:
13+
labels:
14+
app: grafana
15+
spec:
16+
containers:
17+
- name: grafana
18+
image: grafana/grafana-oss:latest
19+
ports:
20+
- containerPort: 3000
21+
envFrom:
22+
- secretRef:
23+
name: grafana-secret
24+
volumeMounts:
25+
- name: grafana-storage
26+
mountPath: /var/lib/grafana
27+
volumes:
28+
- name: grafana-storage
29+
persistentVolumeClaim:
30+
claimName: grafana-data
31+
---
32+
apiVersion: v1
33+
kind: Service
34+
metadata:
35+
name: grafana-service
36+
namespace: default
37+
spec:
38+
type: NodePort
39+
selector:
40+
app: grafana
41+
ports:
42+
- protocol: TCP
43+
port: 3000
44+
targetPort: 3000

k8s/grafana-pvc.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: v1
2+
kind: PersistentVolumeClaim
3+
metadata:
4+
name: grafana-data
5+
namespace: default
6+
spec:
7+
accessModes:
8+
- ReadWriteOnce
9+
resources:
10+
requests:
11+
storage: 5Gi

k8s/grafana-secret.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: v1
2+
kind: Secret
3+
metadata:
4+
name: grafana-secret
5+
namespace: default
6+
type: Opaque
7+
data:
8+
GF_SECURITY_ADMIN_PASSWORD: YWRtaW4=
9+
GF_SERVER_DOMAIN: bG9jYWxob3N0

k8s/mysql-config.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: mysql-config
5+
namespace: default
6+
data:
7+
MYSQL_DATABASE: "zipdatabase"

k8s/mysql-pv.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
apiVersion: v1
2+
kind: PersistentVolume
3+
metadata:
4+
name: mysql-pv
5+
namespace: default
6+
spec:
7+
capacity:
8+
storage: 10Gi
9+
accessModes:
10+
- ReadWriteOnce
11+
storageClassName: ""
12+
hostPath:
13+
path: /data/mysql
14+
type: DirectoryOrCreate
15+
16+
---
17+
18+
apiVersion: v1
19+
kind: PersistentVolumeClaim
20+
metadata:
21+
name: mysql-pvc
22+
namespace: default
23+
spec:
24+
accessModes:
25+
- ReadWriteOnce
26+
resources:
27+
requests:
28+
storage: 10Gi
29+
storageClassName: ""

k8s/mysql-secret.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: v1
2+
kind: Secret
3+
metadata:
4+
name: mysql-secret
5+
namespace: default
6+
type: Opaque
7+
data:
8+
DATABASE_USERNAME: cm9vdA==
9+
DATABASE_PASSWORD: aXBwYXZsb3ZhXzE5OTA=

k8s/mysql-statefulset.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
apiVersion: apps/v1
2+
kind: StatefulSet
3+
metadata:
4+
name: mysql
5+
namespace: default
6+
spec:
7+
serviceName: mysql
8+
replicas: 1
9+
selector:
10+
matchLabels:
11+
app: mysql
12+
template:
13+
metadata:
14+
labels:
15+
app: mysql
16+
spec:
17+
containers:
18+
- name: mysql
19+
image: mysql:latest
20+
ports:
21+
- containerPort: 3307
22+
args:
23+
- "--port=3307"
24+
env:
25+
- name: MYSQL_ROOT_PASSWORD
26+
valueFrom:
27+
secretKeyRef:
28+
name: mysql-secret
29+
key: DATABASE_PASSWORD
30+
- name: MYSQL_DATABASE
31+
valueFrom:
32+
configMapKeyRef:
33+
name: mysql-config
34+
key: MYSQL_DATABASE
35+
volumeMounts:
36+
- name: mysql-data
37+
mountPath: /var/lib/mysql
38+
lifecycle:
39+
postStart:
40+
exec:
41+
command:
42+
- /bin/sh
43+
- -lc
44+
- |
45+
# Wait for server to accept connections
46+
for i in $(seq 1 60); do
47+
mysqladmin ping -h127.0.0.1 -P3307 -uroot -p"$MYSQL_ROOT_PASSWORD" --silent && break
48+
sleep 2
49+
done
50+
mysql -h127.0.0.1 -P3307 -uroot -p"$MYSQL_ROOT_PASSWORD" \
51+
-e "CREATE DATABASE IF NOT EXISTS \`$MYSQL_DATABASE\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
52+
volumes:
53+
- name: mysql-data
54+
persistentVolumeClaim:
55+
claimName: mysql-pvc
56+
---
57+
apiVersion: v1
58+
kind: Service
59+
metadata:
60+
name: mysql
61+
namespace: default
62+
spec:
63+
selector:
64+
app: mysql
65+
ports:
66+
- protocol: TCP
67+
port: 3307
68+
targetPort: 3307
69+
clusterIP: None

k8s/prometheus-configmap.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: prometheus-config
5+
namespace: default
6+
data:
7+
prometheus.yml: |
8+
global:
9+
scrape_interval: 120s # By default, scrape targets every 15 seconds.
10+
evaluation_interval: 120s # By default, evaluate rules every 15 seconds.
11+
12+
# A scrape configuration containing exactly one endpoint to scrape:
13+
# Here it's Prometheus itself.
14+
scrape_configs:
15+
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
16+
- job_name: 'prometheus'
17+
# Override the global default and scrape targets from this job every 5 seconds.
18+
scrape_interval: 5s
19+
# metrics_path defaults to '/metrics'
20+
# scheme defaults to 'http'.
21+
static_configs:
22+
- targets: ['prometheus-service.default.svc.cluster.local:9090']
23+
24+
- job_name: 'Spring Boot Application input'
25+
metrics_path: '/actuator/prometheus'
26+
scrape_interval: 2s
27+
static_configs:
28+
- targets: ['xlsxziptotxtzip-service.default.svc.cluster.local:1929']
29+
labels:
30+
application: 'Xlsx Zip To Txt Zip Process'

k8s/prometheus-deployment.yml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: prometheus
5+
spec:
6+
replicas: 1
7+
selector:
8+
matchLabels:
9+
app: prometheus
10+
template:
11+
metadata:
12+
labels:
13+
app: prometheus
14+
spec:
15+
containers:
16+
- name: prometheus
17+
image: prom/prometheus:latest
18+
args:
19+
- '--config.file=/etc/prometheus/prometheus.yml'
20+
ports:
21+
- containerPort: 9090
22+
volumeMounts:
23+
- name: prometheus-config
24+
mountPath: /etc/prometheus/prometheus.yml
25+
subPath: prometheus.yml # Ensure only the file is mounted
26+
volumes:
27+
- name: prometheus-config
28+
configMap:
29+
name: prometheus-config
30+
---
31+
apiVersion: v1
32+
kind: Service
33+
metadata:
34+
name: prometheus-service
35+
spec:
36+
selector:
37+
app: prometheus
38+
ports:
39+
- protocol: TCP
40+
port: 9090
41+
targetPort: 9090
42+
type: NodePort

k8s/sonarqube-data-pvc.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: v1
2+
kind: PersistentVolumeClaim
3+
metadata:
4+
name: sonarqube-data-pvc
5+
namespace: default
6+
spec:
7+
accessModes:
8+
- ReadWriteOnce
9+
resources:
10+
requests:
11+
storage: 10Gi

0 commit comments

Comments
 (0)