apiVersion: v1 kind: Service metadata: name: pmm spec: selector: app: pmm type: NodePort ports: - port: 80 name: web targetPort: 80 nodePort: 30080 - port: 443 name: api targetPort: 443 nodePort: 30443 --- apiVersion: v1 kind: PersistentVolume metadata: name: pmm-data labels: type: local spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: "/data/pmm" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pmm-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: pmm-deployment labels: app: pmm spec: strategy: type: Recreate selector: matchLabels: app: pmm template: metadata: labels: app: pmm spec: initContainers: - name: pmm-init image: docker.io/percona/pmm-server:2 command: ['sh', '-c', "[[ $(ls -A /srv-init --ignore=lost+found | wc -l) -ne 0 ]] && (echo 'Init is not needed, /srv is not empty') || ( date; echo 'Init: /srv is empty preparing...'; mv /srv/* /srv-init; echo 'Init: complete, /srv prepared'; )"] volumeMounts: - name: pmm-volume mountPath: "/srv-init" containers: - name: pmm-server image: docker.io/percona/pmm-server:2 env: - name: ENABLE_DBAAS value: "1" ports: - containerPort: 80 name: web - containerPort: 443 name: api volumeMounts: - name: pmm-volume mountPath: "/srv" volumes: - name: pmm-volume persistentVolumeClaim: claimName: pmm-data