Skip to content

Commit c285333

Browse files
committed
Refactor PostgreSQL configuration and Helm chart setup for Kubernetes deployment
1 parent 1cfb2e6 commit c285333

File tree

11 files changed

+146
-52
lines changed

11 files changed

+146
-52
lines changed

.k8s/api-env.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ metadata:
44
name: api-env
55
data:
66
SPRING_PROFILES_ACTIVE: "docker"
7-
SPRING_DATASOURCE_URL: "jdbc:postgresql://db:5432/people"
7+
SPRING_DATASOURCE_URL: "jdbc:postgresql://my-app-db:5432/people"
88
SPRING_DATASOURCE_USERNAME: "people"
99
SPRING_DATASOURCE_PASSWORD: "people"
1010
JAVA_OPTS: "-XX:+UseG1GC -XX:MaxRAMPercentage=75"

.k8s/postgres-pvc.yaml

Lines changed: 0 additions & 10 deletions
This file was deleted.

.k8s/postgres-secret.yaml

Lines changed: 0 additions & 9 deletions
This file was deleted.

.k8s/postgres-service.yaml

Lines changed: 0 additions & 12 deletions
This file was deleted.

README.K8S.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# K8S
2+
3+
## Prerequisites
4+
5+
- Kubernetes
6+
- Helm
7+
8+
## Install Kubernetes with Kind
9+
10+
1. You can use any Kubernetes cluster, or install [Kind](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) in your Docker.
11+
12+
2. Create cluster.
13+
14+
```
15+
kind create cluster --config=.k8s/kind.yaml --name=kind
16+
```
17+
18+
3. Set kubectl content for the new created cluster.
19+
20+
```
21+
kubectl cluster-info --context kind-kind
22+
```
23+
24+
## Install Helm
25+
26+
1. Follow the [Helm installation guide](https://helm.sh/docs/intro/install/).
27+
28+
## Help Cheat Sheet
29+
30+
```
31+
# Run tests to examine a chart and identify possible issues:
32+
helm lint helm/postgres
33+
34+
# Run a test installation to validate chart (p)
35+
helm template <name> helm/postgres --values helm/postgres/values.yaml --debug
36+
37+
# Run a test installation to validate chart (p)
38+
helm template <name> helm/postgres --dry-run --debug
39+
40+
# Install the chart
41+
helm install <name> helm/postgres
42+
43+
# Install the chart in a specific namespace
44+
helm install <name> helm/postgres --namespace <namespace>
45+
46+
# Lists all of the releases for a specified namespace, uses current namespace context if namespace not specified
47+
helm list
48+
49+
# Uninstalls a release from the current (default) namespace
50+
help uninstall <name>
51+
52+
# Uninstalls a release from the specified namespace
53+
helm uninstall <release-name> --namespace <namespace>
54+
```

helm/postgres/Chart.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: postgres-deployment
2+
apiVersion: v2
3+
version: 0.1.0
4+
description: A Helm chart for deploying PostgreSQL database on Kubernetes
5+
type: application
6+
keywords:
7+
- postgres
8+
- database
9+
- kubernetes
10+
maintainers:
11+
- name: Your Name
12+
email: your.email@example.com
13+
sources:
14+
- https://github.com/your-repo/postgres-deployment
15+
dependencies: []
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,48 @@
11
apiVersion: apps/v1
22
kind: Deployment
33
metadata:
4-
name: people-api-postgres
4+
name: {{ .Release.Name }}-db
55
labels:
6-
app: people-api-postgres
6+
app: {{ .Release.Name }}-db
77
spec:
88
selector:
99
matchLabels:
10-
app: people-api-postgres
10+
app: {{ .Release.Name }}-db
1111
template:
1212
metadata:
1313
labels:
14-
app: people-api-postgres
14+
app: {{ .Release.Name }}-db
1515
spec:
1616
containers:
1717
- name: db
18-
image: postgres:17-alpine3.22
18+
image: {{ .Values.container.image.repository }}:{{ .Values.container.image.tag }}
1919
ports:
2020
- containerPort: 5432
21-
name: postgres
22-
resources:
23-
requests:
24-
memory: "256Mi"
25-
cpu: "250m"
26-
limits:
27-
memory: "512Mi"
28-
cpu: "500m"
2921
env:
3022
- name: POSTGRES_DB
3123
valueFrom:
3224
secretKeyRef:
33-
name: people-api-postgres-secret
25+
name: {{ .Release.Name }}-db-secret
3426
key: POSTGRES_DB
3527
- name: POSTGRES_USER
3628
valueFrom:
3729
secretKeyRef:
38-
name: people-api-postgres-secret
30+
name: {{ .Release.Name }}-db-secret
3931
key: POSTGRES_USER
4032
- name: POSTGRES_PASSWORD
4133
valueFrom:
4234
secretKeyRef:
43-
name: people-api-postgres-secret
35+
name: {{ .Release.Name }}-db-secret
4436
key: POSTGRES_PASSWORD
37+
resources:
38+
requests:
39+
memory: {{ .Values.container.resources.requests.memory }}
40+
cpu: {{ .Values.container.resources.requests.cpu }}
41+
limits:
42+
memory: {{ .Values.container.resources.limits.memory }}
43+
cpu: {{ .Values.container.resources.limits.cpu }}
4544
volumeMounts:
46-
- name: postgres-storage
45+
- name: {{ .Release.Name }}-storage
4746
mountPath: /var/lib/postgresql/data
4847
startupProbe:
4948
exec:
@@ -68,7 +67,6 @@ spec:
6867
- pg_isready -U "$(POSTGRES_USER:-postgres)"
6968
periodSeconds: 20
7069
volumes:
71-
- name: postgres-storage
70+
- name: {{ .Release.Name }}-storage
7271
persistentVolumeClaim:
73-
claimName: postgres-pvc
74-
72+
claimName: {{ .Release.Name }}-pvc

helm/postgres/templates/pvc.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v1
2+
kind: PersistentVolumeClaim
3+
metadata:
4+
name: {{ .Release.Name }}-pvc
5+
spec:
6+
accessModes:
7+
- {{ .Values.pvc.accessMode }}
8+
resources:
9+
requests:
10+
storage: {{ .Values.pvc.size }}
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: {{ .Release.Name }}-db-secret
5+
type: Opaque
6+
data:
7+
POSTGRES_DB: {{ .Values.container.environment.POSTGRES_DB }}
8+
POSTGRES_USER: {{ .Values.container.environment.POSTGRES_USER }}
9+
POSTGRES_PASSWORD: {{ .Values.container.environment.POSTGRES_PASSWORD }}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: {{ .Release.Name }}-db
5+
labels:
6+
app: {{ .Release.Name }}-db
7+
spec:
8+
selector:
9+
app: {{ .Release.Name }}-db
10+
type: {{ .Values.container.service.type }}
11+
ports:
12+
- port: {{ .Values.container.service.port }}
13+
targetPort: {{ .Values.container.service.targetPort }}
14+
protocol: TCP

0 commit comments

Comments
 (0)