lamp/myapp-k8s.yaml
2024-09-26 10:47:43 +00:00

154 lines
3.0 KiB
YAML

apiVersion: v1
kind: PersistentVolume
metadata:
name: myapp-web-pv # web content files
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
hostPath:
path: /srv/pv/myapp/web
type: DirectoryOrCreate
storageClassName: ''
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- kubix
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: myapp-db-pv # database files
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
hostPath:
path: /srv/pv/myapp/db
type: DirectoryOrCreate
storageClassName: ''
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- kubix
---
apiVersion: v1
kind: Namespace
metadata:
name: playground
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myapp-web-pvc
namespace: playground
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
volumeName: myapp-web-pv
storageClassName: ''
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myapp-db-pvc
namespace: playground
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
volumeName: myapp-db-pv
storageClassName: ''
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
namespace: playground
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-web
image: gitea.kubix.siatel.ro/siatel/php:8.1-apache-mysqli
ports:
- containerPort: 80
volumeMounts:
- name: myapp-web-pv
mountPath: /var/www/html
- name: myapp-db
image: mysql:9
ports:
- containerPort: 3306
volumeMounts:
- name: myapp-db-pv
mountPath: /var/lib/mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: secret123 # replace as desired
- name: MYSQL_DATABASE
value: mydatabase # replace as desired
volumes:
- name: myapp-web-pv
persistentVolumeClaim:
claimName: myapp-web-pvc
- name: myapp-db-pv
persistentVolumeClaim:
claimName: myapp-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: myapp-service
namespace: playground
spec:
type: ClusterIP
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
namespace: playground
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: myapp.siatel.ro
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp-service
port:
number: 80