apiVersion: v1 kind: ConfigMap metadata: name: maintenance-page data: maintenance.html: |- Site Maintenance

We’ll be back soon!

Sorry for the inconvenience but we’re performing some maintenance at the moment. If you need to you can always contact us, otherwise we’ll be back online shortly!

— The Team

maintenance.css: |- /* CSS GOES HERE */ body { text-align: center; padding: 150px; background-color: #D3D3D3;} h1 { font-size: 50px; } body { font: 20px Helvetica, sans-serif; color: #333; } article { display: block; text-align: left; width: 650px; margin: 0 auto; } a { color: #dc8100; text-decoration: none; } a:hover { color: #333; text-decoration: none; } img { border-radius: 50%; } default.conf: |- # NGINX CONFIGURATION GOES HERE server { listen 80 default_server; server_name _ ; location / { if (-f /usr/share/nginx/html/maintenance/maintenance.html) { return 503; } } # for all routes, return maintenance page error_page 503 @maintenance; location @maintenance { root /usr/share/nginx/html/maintenance/; rewrite ^(.*)$ /maintenance.html break; } # allow images and css to be retrieved location ~* \.(png|jpg|jpeg|css) { root /usr/share/nginx/html/maintenance/; } } --- apiVersion: apps/v1 kind: Deployment metadata: name: maintenance-page labels: app: maintenance-page spec: replicas: 1 selector: matchLabels: app: maintenance-page template: metadata: labels: app: maintenance-page spec: containers: - name: nginx image: nginx:1.23 ports: - containerPort: 80 volumeMounts: # Because no subPath is specified, all keys in configmap willb # be mounted as files at the specified mountPath - name: config-volume mountPath: /usr/share/nginx/html/maintenance/ - name: config-volume mountPath: /etc/nginx/conf.d/default.conf subPath: default.conf volumes: - name: config-volume configMap: name: maintenance-page --- apiVersion: v1 kind: Service metadata: name: maintenance-page spec: selector: app: maintenance-page ports: - protocol: TCP port: 80 targetPort: 80 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: nginx nginx.org/rewrites: serviceName=maintenance-page rewrite=/; name: maintenance-page spec: rules: - host: maintenance.devopsdirective.com http: paths: - path: / pathType: Prefix backend: service: name: maintenance-page port: number: 8080 # Can still have other paths defined