Search code examples
wordpressamazon-web-servicesdockeramazon-eks

bitnami/wordpress-nginx:latest via Terraform, Bugs produced(Blank Page, Mixed contents)


Name and Version bitnami/wordpress-nginx:latest

What architecture are you using? amd64

What steps will reproduce the bug? i have an AWS EKS Cluster, am installing wordpress nginx via bitnami, and this system is using MySQL and EFS File System.

everything seems to be working as expected. but when the first visit the Wordpress URL i see the follwing:

Blank scree (then a contnet without CSS) after few minutes. i've noticed that the logs shows errors

Notice: the docker is behind ingress-nginx and lets encrypt cert code:

# WORDPRESS Deployment
resource "kubernetes_deployment_v1" "this" {
  metadata {
    name      = "${var.deployment_prefix}-wp-${terraform.workspace}"
    namespace = var.customers_namespace
    labels    = {
      app = "${var.deployment_prefix}-wp-${terraform.workspace}"
    }
  }
  spec {
    replicas = 3
    selector {
      match_labels = {
        app = "${var.deployment_prefix}-wp-${terraform.workspace}"
      }
    }
    template {
      metadata {
        labels = {
          app = "${var.deployment_prefix}-wp-${terraform.workspace}"
        }
      }
      spec {
        volume {
          name = "${var.deployment_prefix}-wp-content"
          persistent_volume_claim {
            claim_name = kubernetes_persistent_volume_claim.this.metadata.0.name
          }
        }
        volume {
          name = "${var.deployment_prefix}-nginx-configs-${terraform.workspace}"
          config_map {
            name = "${var.deployment_prefix}-nginx-configs-${terraform.workspace}"
          }
        }
        container {
          security_context {
            run_as_non_root = true
            run_as_user     = 1001
          }
          name  = "${var.deployment_prefix}-wp-${terraform.workspace}"
          image = "bitnami/wordpress-nginx:6.1.1"
          volume_mount {
            name       = "${var.deployment_prefix}-wp-content"
            mount_path = "/bitnami/wordpress"
          }
          volume_mount {
            mount_path = "/opt/bitnami/nginx/conf/server_blocks/nginx.conf:ro"
            name       = "${var.deployment_prefix}-nginx-configs-${terraform.workspace}"
          }
          port {
            container_port = var.service_port
          }
          env {
            name  = "WORDPRESS_DATABASE_HOST"
            value = kubernetes_service_v1.mysql_svc.metadata.0.name
          }
          env {
            name  = "WORDPRESS_DATABASE_NAME"
            value = "wordpress"
          }
          env {
            name  = "WORDPRESS_DATABASE_USER"
            value = "yafa"
          }
          env {
            name = "WORDPRESS_DATABASE_PASSWORD"
            value_from {
              secret_key_ref {
                name = kubernetes_secret_v1.this.metadata.0.name
                key  = "password"
              }
            }
          }

          env {
            name  = "NGINX_HTTP_PORT_NUMBER"
            value = var.service_port
          }

          env {
            name  = "BITNAMI_DEBUG"
            value = "true"
          }
          env {
            name  = "WORDPRESS_USERNAME"
            value = "yafa"
          }
          env {
            name  = "WORDPRESS_PASSWORD"
            value = var.mysql_pass
          }
          env {
            name  = "BITNAMI_DEBUG"
            value = "true"
          }

          env {
            name  = "WORDPRESS_BLOG_NAME"
            value = var.deployment_prefix
          }
          env {
            name  = "FORCE_SSL_LOGIN"
            value = "true"
          }
          env {
            name  = "FORCE_SSL_ADMIN"
            value = "ture"
          }
          env {
            name  = "CONCATENATE_SCRIPTS"
            value = "false"
          }
          env {
            name  = "SCRIPT_DEBUG"
            value = "true"
          }

          env {
            name  = "WORDPRESS_DATA_TO_PERSIST"
            value = "wp-config.php wp-content"
          }
          env {
            name  = "WORDPRESS_ENABLE_HTACCESS_PERSISTENCE"
            value = "yes"
          }

          env {
            name  = "NGINX_ENABLE_ABSOLUTE_REDIRECT"
            value = "yes"
          }

          env {
            name  = "NGINX_ENABLE_PORT_IN_REDIRECT"
            value = "yes"
          }
          # PHP
          env {
            name  = "PHP_MAX_EXECUTION_TIME"
            value = "300"
          }

          env {
            name  = "BITNAMI_DEBUG"
            value = true
          }
          env {
            name  = "PHP_MAX_INPUT_VARS"
            value = "3000"
          }

          env {
            name  = "PHP_UPLOAD_MAX_FILESIZE"
            value = "250m"
          }
          /*
                - WORDPRESS_SMTP_HOST=smtp.gmail.com
                - WORDPRESS_SMTP_PORT=587
                - WORDPRESS_SMTP_USER=your_email@gmail.com
                - WORDPRESS_SMTP_PASSWORD=your_password
          */
        }
      }
    }
  }
  depends_on = [
    kubernetes_persistent_volume_claim.this, kubernetes_deployment_v1.mysql
  ]
  wait_for_rollout = false
}

resource "kubectl_manifest" "nginx_configmap" {
  yaml_body = <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
  name: "${var.deployment_prefix}-nginx-configs-${terraform.workspace}"
  namespace: ${var.customers_namespace}
  labels:
    app: "${var.deployment_prefix}-nginx-configs-${terraform.workspace}"
data:
  nginx.conf: |-
    server {
        listen 0.0.0.0:${var.service_port};
        server_name ${var.domain};
        root /;
        index index.php index.htm index.html;
      }
EOF
}

erros enter image description here enter image description here

i tired diffrent images, but couldn't get this done


Solution

  • I managed to solve the issue using the following code, by changing the user and give it a flag as privileged = true

    # WORDPRESS DEPLOYMENT
    resource "kubernetes_deployment_v1" "this" {
      metadata {
        name      = "wordpress-${var.deployment_prefix}-${terraform.workspace}"
        namespace = var.customers_namespace
        labels    = {
          app = "wordpress-${var.deployment_prefix}-${terraform.workspace}"
        }
      }
      spec {
        replicas = 3
        selector {
          match_labels = {
            app = "wordpress-${var.deployment_prefix}-${terraform.workspace}"
          }
        }
        template {
          metadata {
            labels = {
              app = "wordpress-${var.deployment_prefix}-${terraform.workspace}"
            }
          }
          spec {
            container {
    
              security_context {
                privileged      = true
                run_as_non_root = true
                run_as_user     = 1001
              }
              image = "bitnami/wordpress"
              name  = "${var.deployment_prefix}-wordpress-${terraform.workspace}"
              env {
                name  = "WORDPRESS_DATABASE_HOST"
                value = kubernetes_service_v1.mysql_svc.metadata.0.name
              }
              env {
                name  = "WORDPRESS_DATABASE_USER"
                value = "yafa"
              }
              env {
                name = "WORDPRESS_DATABASE_PASSWORD"
                value_from {
                  secret_key_ref {
                    key  = "password"
                    name = kubernetes_secret_v1.this.metadata.0.name
                  }
                }
              }
              env {
                name  = "WORDPRESS_RESET_DATA_PERMISSIONS"
                value = "yes"
              }
              env {
                name  = "WORDPRESS_BLOG_NAME"
                value = var.deployment_prefix
              }
              env {
                name  = "WORDPRESS_EMAIL"
                value = "info@${var.domain}"
              }
              env {
                name  = "WORDPRESS_USERNAME"
                value = "yafa"
              }
    
              env {
                name  = "WORDPRESS_PASSWORD"
                value = var.mysql_pass
              }
              env {
                name  = "WORDPRESS_ENABLE_HTACCESS_PERSISTENCE"
                value = "yes"
              }
              env {
                name  = "WORDPRESS_HTACCESS_OVERRIDE_NONE"
                value = "yes"
              }
              env {
                name  = "WORDPRESS_DATABASE_NAME"
                value = "wordpress"
              }
              env {
                name  = "WORDPRESS_DATA_TO_PERSIST"
                value = "wp-config.php wp-content"
              }
              env {
                name  = "WORDPRESS_ENABLE_HTACCESS_PERSISTENCE"
                value = "yes"
              }
              env {
                name  = "PHP_MAX_EXECUTION_TIME"
                value = "300"
              }
    
              env {
                name  = "PHP_MAX_INPUT_VARS"
                value = "3000"
              }
    
              env {
                name  = "PHP_UPLOAD_MAX_FILESIZE"
                value = "250m"
              }
              volume_mount {
                name       = kubernetes_persistent_volume_claim.this.metadata.0.name
                mount_path = "/bitnami"
              }
              port {
                container_port = 8080
              }
            }
            volume {
              name = kubernetes_persistent_volume_claim.this.metadata.0.name
              persistent_volume_claim {
                claim_name = kubernetes_persistent_volume_claim.this.metadata.0.name
              }
            }
          }
        }
      }
      wait_for_rollout = false
    }