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