209 lines
4.3 KiB
YAML
209 lines
4.3 KiB
YAML
---
|
|
# ConfigMap para configuración de WordPress
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: wordpress-config
|
|
labels:
|
|
app: wordpress
|
|
data:
|
|
WORDPRESS_DB_HOST: "mysql-service"
|
|
WORDPRESS_DB_NAME: "wordpress"
|
|
WORDPRESS_DB_USER: "wordpress"
|
|
|
|
---
|
|
# Secret para contraseñas (⚠️ En producción usar un gestor de secretos)
|
|
apiVersion: v1
|
|
kind: Secret
|
|
metadata:
|
|
name: wordpress-secret
|
|
labels:
|
|
app: wordpress
|
|
type: Opaque
|
|
stringData:
|
|
WORDPRESS_DB_PASSWORD: "wordpress_password"
|
|
MYSQL_ROOT_PASSWORD: "root_password"
|
|
MYSQL_PASSWORD: "wordpress_password"
|
|
|
|
---
|
|
# PersistentVolumeClaim para MySQL
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: mysql-pvc
|
|
labels:
|
|
app: mysql
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: 5Gi
|
|
|
|
---
|
|
# PersistentVolumeClaim para WordPress
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: wordpress-pvc
|
|
labels:
|
|
app: wordpress
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: 5Gi
|
|
|
|
---
|
|
# Deployment de MySQL
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: mysql-deployment
|
|
labels:
|
|
app: mysql
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: mysql
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: mysql
|
|
spec:
|
|
containers:
|
|
- name: mysql
|
|
image: mysql:8.0
|
|
ports:
|
|
- containerPort: 3306
|
|
env:
|
|
- name: MYSQL_DATABASE
|
|
value: wordpress
|
|
- name: MYSQL_USER
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: wordpress-config
|
|
key: WORDPRESS_DB_USER
|
|
- name: MYSQL_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: wordpress-secret
|
|
key: MYSQL_PASSWORD
|
|
- name: MYSQL_ROOT_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: wordpress-secret
|
|
key: MYSQL_ROOT_PASSWORD
|
|
volumeMounts:
|
|
- name: mysql-storage
|
|
mountPath: /var/lib/mysql
|
|
livenessProbe:
|
|
exec:
|
|
command:
|
|
- mysqladmin
|
|
- ping
|
|
- -h
|
|
- localhost
|
|
initialDelaySeconds: 30
|
|
periodSeconds: 10
|
|
readinessProbe:
|
|
exec:
|
|
command:
|
|
- mysqladmin
|
|
- ping
|
|
- -h
|
|
- localhost
|
|
initialDelaySeconds: 5
|
|
periodSeconds: 5
|
|
volumes:
|
|
- name: mysql-storage
|
|
persistentVolumeClaim:
|
|
claimName: mysql-pvc
|
|
|
|
---
|
|
# Service para MySQL
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: mysql-service
|
|
labels:
|
|
app: mysql
|
|
spec:
|
|
ports:
|
|
- port: 3306
|
|
targetPort: 3306
|
|
selector:
|
|
app: mysql
|
|
clusterIP: None
|
|
|
|
---
|
|
# Deployment de WordPress
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: wordpress-deployment
|
|
labels:
|
|
app: wordpress
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: wordpress
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: wordpress
|
|
spec:
|
|
containers:
|
|
- name: wordpress
|
|
image: wordpress:latest
|
|
ports:
|
|
- containerPort: 80
|
|
env:
|
|
- name: WORDPRESS_DB_HOST
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: wordpress-config
|
|
key: WORDPRESS_DB_HOST
|
|
- name: WORDPRESS_DB_NAME
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: wordpress-config
|
|
key: WORDPRESS_DB_NAME
|
|
- name: WORDPRESS_DB_USER
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: wordpress-config
|
|
key: WORDPRESS_DB_USER
|
|
- name: WORDPRESS_DB_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: wordpress-secret
|
|
key: WORDPRESS_DB_PASSWORD
|
|
volumeMounts:
|
|
- name: wordpress-storage
|
|
mountPath: /var/www/html
|
|
volumes:
|
|
- name: wordpress-storage
|
|
persistentVolumeClaim:
|
|
claimName: wordpress-pvc
|
|
|
|
---
|
|
# Service para WordPress
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: wordpress-service
|
|
labels:
|
|
app: wordpress
|
|
spec:
|
|
type: LoadBalancer
|
|
ports:
|
|
- port: 80
|
|
targetPort: 80
|
|
protocol: TCP
|
|
selector:
|
|
app: wordpress
|