init
This commit is contained in:
10
kubernetes/manifests/configmap.yaml
Normal file
10
kubernetes/manifests/configmap.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: app-config
|
||||
namespace: devops-demo
|
||||
data:
|
||||
ENV: "production"
|
||||
APP_NAME: "devops-windows-app"
|
||||
LOG_LEVEL: "INFO"
|
||||
PYTHONUNBUFFERED: "1"
|
||||
49
kubernetes/manifests/db.yaml
Normal file
49
kubernetes/manifests/db.yaml
Normal file
@@ -0,0 +1,49 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: postgres-db
|
||||
namespace: devops-demo
|
||||
labels:
|
||||
app: postgres-db
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: postgres-db
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: postgres-db
|
||||
spec:
|
||||
containers:
|
||||
- name: postgres
|
||||
image: postgres:15-alpine
|
||||
env:
|
||||
- name: POSTGRES_DB
|
||||
value: devopsdb
|
||||
- name: POSTGRES_USER
|
||||
value: devopsuser
|
||||
- name: POSTGRES_PASSWORD
|
||||
value: devopspass
|
||||
ports:
|
||||
- containerPort: 5432
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /var/lib/postgresql/data
|
||||
volumes:
|
||||
- name: data
|
||||
emptyDir: {}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: postgres-service
|
||||
namespace: devops-demo
|
||||
spec:
|
||||
selector:
|
||||
app: postgres-db
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 5432
|
||||
targetPort: 5432
|
||||
type: ClusterIP
|
||||
71
kubernetes/manifests/deployment.yaml
Normal file
71
kubernetes/manifests/deployment.yaml
Normal file
@@ -0,0 +1,71 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: devops-app
|
||||
namespace: devops-demo
|
||||
labels:
|
||||
app: devops-app
|
||||
version: v1
|
||||
spec:
|
||||
replicas: 2
|
||||
selector:
|
||||
matchLabels:
|
||||
app: devops-app
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: devops-app
|
||||
annotations:
|
||||
prometheus.io/scrape: "true"
|
||||
prometheus.io/port: "8000"
|
||||
prometheus.io/path: "/metrics"
|
||||
spec:
|
||||
containers:
|
||||
- name: app
|
||||
image: devops-app:local # IMPORTANT : Utiliser l'image locale
|
||||
imagePullPolicy: IfNotPresent # Ne pas pull depuis Docker Hub
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
name: http
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: app-config
|
||||
env:
|
||||
- name: HOSTNAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.name
|
||||
resources:
|
||||
requests:
|
||||
memory: "128Mi"
|
||||
cpu: "100m"
|
||||
limits:
|
||||
memory: "256Mi"
|
||||
cpu: "200m"
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 8000
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 15
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 8000
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 30
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: devops-app-service
|
||||
namespace: devops-demo
|
||||
spec:
|
||||
selector:
|
||||
app: devops-app
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: 8000
|
||||
protocol: TCP
|
||||
name: http
|
||||
type: NodePort # CORRIGÉ : NodePort au lieu de LoadBalancer pour Windows
|
||||
7
kubernetes/manifests/namespace.yaml
Normal file
7
kubernetes/manifests/namespace.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: devops-demo
|
||||
labels:
|
||||
name: devops-demo
|
||||
environment: development
|
||||
53
kubernetes/manifests/nginx-proxy.yaml
Normal file
53
kubernetes/manifests/nginx-proxy.yaml
Normal file
@@ -0,0 +1,53 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: nginx-proxy
|
||||
namespace: devops-demo
|
||||
labels:
|
||||
app: nginx-proxy
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: nginx-proxy
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: nginx-proxy
|
||||
spec:
|
||||
containers:
|
||||
- name: nginx
|
||||
image: nginx:latest
|
||||
ports:
|
||||
- containerPort: 80
|
||||
- containerPort: 443
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /etc/nginx/nginx.conf
|
||||
subPath: nginx.conf
|
||||
- name: certs
|
||||
mountPath: /etc/nginx/certs
|
||||
volumes:
|
||||
- name: config
|
||||
hostPath:
|
||||
path: /run/desktop/mnt/host/c/DevOpsProject/kubernetes/manifests/nginx/nginx.conf
|
||||
- name: certs
|
||||
hostPath:
|
||||
path: /run/desktop/mnt/host/c/DevOpsProject/kubernetes/manifests/nginx/certs
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: nginx-service
|
||||
namespace: devops-demo
|
||||
spec:
|
||||
selector:
|
||||
app: nginx-proxy
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 80
|
||||
targetPort: 80
|
||||
- protocol: TCP
|
||||
port: 443
|
||||
targetPort: 443
|
||||
type: NodePort
|
||||
22
kubernetes/manifests/nginx/certs/localhost.crt
Normal file
22
kubernetes/manifests/nginx/certs/localhost.crt
Normal file
@@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDlTCCAn2gAwIBAgIUcEVmwTioAADhqYNcHQ+xvEKsQwswDQYJKoZIhvcNAQEL
|
||||
BQAwWjELMAkGA1UEBhMCRlIxFjAUBgNVBAgMDUlsZS1kZS1GcmFuY2UxDjAMBgNV
|
||||
BAcMBVBhcmlzMQ8wDQYDVQQKDAZEZXZPcHMxEjAQBgNVBAMMCWxvY2FsaG9zdDAe
|
||||
Fw0yNjAxMTkxNTM5MTlaFw0yNzAxMTkxNTM5MTlaMFoxCzAJBgNVBAYTAkZSMRYw
|
||||
FAYDVQQIDA1JbGUtZGUtRnJhbmNlMQ4wDAYDVQQHDAVQYXJpczEPMA0GA1UECgwG
|
||||
RGV2T3BzMRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IB
|
||||
DwAwggEKAoIBAQDeWVC4CPMt2DE0aI26erPvRGk2Rytmd8kpbLAGu68vkIxDu4Oj
|
||||
h4IS1CD8R9IjsaJGz5SaKQHhvYJLxVFQtEcHB9A9Rk+6TNNqodHVgKFngytbAPJ0
|
||||
mSPRYjYCnPgVKmm9/g9O1Tza8Adnx2zZjq4wilxymxwIASh98RJxTa6DcehRUP82
|
||||
ejT4KRKSAxW4+L1XUwHtw2zSain2dLODe0bu7CPYxCjrvr2KNMa2aPnP2Owo6djx
|
||||
qoHedaxZ/zpPInXq6DiofEvM1TQrB9CjHR7OjOE65IzDh2OC2KTpVKgmcDqR/hcK
|
||||
KUS7/+PCNlH1tidfwJ2b33GEisLNIWx/5RmtAgMBAAGjUzBRMB0GA1UdDgQWBBTK
|
||||
eOgJg8lzv6oS+0mV2bqQ96QJQTAfBgNVHSMEGDAWgBTKeOgJg8lzv6oS+0mV2bqQ
|
||||
96QJQTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBabnUoKZ1e
|
||||
8fe7uXiHxKnhIsH/C6RoGecETwJZPLE7gVU0J7mA5Bxqk/ssQB6/ykSRqSnjsEM7
|
||||
gHGeRgaE93/J99xewTBmmzHJqzr+ETl4vsyUtP4O9ggu1JjijTgB0WpUuBnC+SUp
|
||||
4W14nwonTEKY0Qua7U8Lz4PMqWOC1URzQYaQwR3Lw9OFSxPcLHlmGoWYbKrdOMYP
|
||||
vBq18DE2JQoCrcC73vee2ABC3DUtqwjWYuOkuEoCbBE33u8EO5tLA84OLsb61zhe
|
||||
UuBoAWnNhr+GixzMmetiZoiT3265lZnriXDqor74lEDfuoJkXs/XqBN0x8v6GmkM
|
||||
ycLs7NXJOe0L
|
||||
-----END CERTIFICATE-----
|
||||
28
kubernetes/manifests/nginx/certs/localhost.key
Normal file
28
kubernetes/manifests/nginx/certs/localhost.key
Normal file
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDeWVC4CPMt2DE0
|
||||
aI26erPvRGk2Rytmd8kpbLAGu68vkIxDu4Ojh4IS1CD8R9IjsaJGz5SaKQHhvYJL
|
||||
xVFQtEcHB9A9Rk+6TNNqodHVgKFngytbAPJ0mSPRYjYCnPgVKmm9/g9O1Tza8Adn
|
||||
x2zZjq4wilxymxwIASh98RJxTa6DcehRUP82ejT4KRKSAxW4+L1XUwHtw2zSain2
|
||||
dLODe0bu7CPYxCjrvr2KNMa2aPnP2Owo6djxqoHedaxZ/zpPInXq6DiofEvM1TQr
|
||||
B9CjHR7OjOE65IzDh2OC2KTpVKgmcDqR/hcKKUS7/+PCNlH1tidfwJ2b33GEisLN
|
||||
IWx/5RmtAgMBAAECggEAF5IpU/Ei8mu2P6OLzsZ+N7GtY6Mkzy6IpTsP6A7Scfzl
|
||||
WbLRsC7H074oJwZoGP+WP+J2kucg+3DPFMA8sA0EcJLb+PrwrcPCL84qw/LoaWRG
|
||||
3tVZXpHzcZlzN1Czne7KmekKb2V8l4sVheNmvyN4hM3OIhoeXRzeUYeSWG+PPgDN
|
||||
KV2s1vvcBtIay7aMs6XUdnKuxea/7j/vNr1NUyc9BYFAAVxbNxmdwus5w80kc0PV
|
||||
BXJOvf7SiFoOOP+V+IjrDhnJyeg6qjmzohV/ju6jhOmX9d9raotrPFESIF0CWiHB
|
||||
HZHEuXibLU8RqDjjwqVD95KEJdqQpNa6dyFftLMe8QKBgQD5T/zEjkO77X4AzYZD
|
||||
Sxbt/hpd+Zgg8KlJdQg636TKWAyfD3Wuq/1ExJNaBOR21nfts6wfXUGV4XfSPWgf
|
||||
znfADRBej8mZIyyPxkTnHfL+NMqZo03ZjI8aQB8AZByStNYrNoZ0YIxr94HkGJ+g
|
||||
y6IiX4bxkqABMD+LATMDE9m4SQKBgQDkUCu+h4o1gu9Af0sLNFMc4msrRjEDliWQ
|
||||
nPeDld7FX4lB9XSOknw4sUEUS2pzcjquHpmPosJ6tjQps28IXnnm9y6KWcVEO0k/
|
||||
mrhZnRu9dbL+FQEpPVBS2c7n6tvT0Anrtqt84n5U0ZnWo+AhXVUgG8BOQ2d5V5P2
|
||||
c8dlYm7+RQKBgDn5p8Xtb0LcT1jQclBjvclKNcd0qzO9wyAZ3vgR2bhUEVtLtQoR
|
||||
ZKwBKmLckGQyK2FTTstcXEwGSl7ReM0srhwy7YOP3EmILGyippM4G7GRhSuFFi1o
|
||||
yj5Ieu0UWrCi7MrPuySE7yKMQ+BO+Y/iyqlDnZW/iwW7uosQlFQ64X5BAoGACWYr
|
||||
htp5nB5ZzyPuaPWsfkHr+4oWNnmV7lAn+GjRFPsL4YVDWSM6rfLOJRG9vibzt3tX
|
||||
AwzGSNr7ZsQWTBfnmNSQO+3aKybtqwqpkDbhj3kq9z7SH2qAxghldjK6/gtQfT21
|
||||
7Zw9ayx90tJIRddby8iYsCAiQGKUms7FZK0auKkCgYA+cU0Ju7of0QQ0Mc5qkR/H
|
||||
hg09o+0rpiMzDkGUP/4qhKIA0XJ2I+gCS09irwWmYabq4zySbO7gzUh4ItdTl5XL
|
||||
qYkE1HghsTiLsWSG/Brm4qH/TeMiZGQP/1O7+r/+9YKyD49jqXu3u4vzF8EiKOVo
|
||||
Fh6Y4/3E2Bk0wgbWGynPMg==
|
||||
-----END PRIVATE KEY-----
|
||||
27
kubernetes/manifests/nginx/nginx.conf
Normal file
27
kubernetes/manifests/nginx/nginx.conf
Normal file
@@ -0,0 +1,27 @@
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
server {
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name localhost;
|
||||
|
||||
ssl_certificate /etc/nginx/certs/localhost.crt;
|
||||
ssl_certificate_key /etc/nginx/certs/localhost.key;
|
||||
|
||||
location / {
|
||||
proxy_pass http://app:8000;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user