--- apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: grav spec: selector: matchLabels: app: grav strategy: type: Recreate template: metadata: labels: app: grav spec: containers: - image: cr.lan/grav:arm64 name: grav imagePullPolicy: Always ports: - containerPort: 9000 name: php-fpm volumeMounts: - name: grav-pages mountPath: /var/www/grav - name: grav-etc-php-fpm-www-conf mountPath: /etc/php/7.4/fpm/pool.d - image: nginx:alpine name: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80 name: http volumeMounts: - name: grav-nginx-proxy-config mountPath: /etc/nginx/nginx.conf subPath: nginx.conf - name: grav-pages mountPath: /var/www/grav initContainers: - name: grav-install image: busybox command: ["/bin/sh"] args: - -c - >- wget -O /grav.zip "https://getgrav.org/download/core/grav-admin/latest" && unzip -q /grav.zip && rm -rf grav-admin/user/pages/* && cp -ru grav-admin/* /workdir/ && rm -rf /grav.zip && rm -rf /grav-admin && chown -R 33:33 /workdir/* volumeMounts: - name: grav-pages mountPath: /workdir volumes: - name: grav-pages persistentVolumeClaim: claimName: grav-pages - name: grav-nginx-proxy-config configMap: name: grav-nginx-proxy-config - name: grav-etc-php-fpm-www-conf configMap: name: grav-etc-php-fpm-www-conf --- apiVersion: v1 kind: Service metadata: name: grav spec: ports: - name: http port: 80 selector: app: grav --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: grav annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/proxy-body-size: 512m spec: rules: - host: grav.lan http: paths: - path: / pathType: Prefix backend: service: name: grav port: name: http --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: grav-pages spec: storageClassName: nfs-ssd-ebin01 accessModes: - ReadWriteOnce resources: requests: storage: 6Gi