local kube = import "../../../kube/hscloud.libsonnet";

{
    local top = self,
    local cfg = self.cfg,

    cfg:: {
        name: "wordpress",
        namespace: "personal-radex",
        domain: "wordpress.hs.radex.io",

        storageClassName: "waw-hdd-redundant-3",
        storageSize: "5Gi",
    },

    secretRefs:: {
        mysql: { secretKeyRef: { name: cfg.name, key: 'mysql_password' } },
        wordpress: { secretKeyRef: { name: cfg.name, key: 'wordpress_password' } },
    },

    local ns = kube.Namespace(cfg.namespace),

    deployment: ns.Contain(kube.Deployment(cfg.name)) {
        spec+: {
            replicas: 1,
            template+: {
                spec+: {
                    containers_: {
                        default: kube.Container("default") {
                            image: 'bitnami/wordpress',
                            resources: {
                                requests: { cpu: "50m", memory: "128M" },
                                limits: { cpu: "750m", memory: "256M" },
                            },
                            ports_: {
                                http: { containerPort: 8080 },
                            },
                            env_: {
                                WORDPRESS_DATABASE_HOST: 'wordpress-mysql',
                                WORDPRESS_DATABASE_NAME: 'wordpress',
                                WORDPRESS_DATABASE_USER: 'wordpress',
                                WORDPRESS_DATABASE_PASSWORD: top.secretRefs.mysql,
                                WORDPRESS_USERNAME: 'admin',
                                WORDPRESS_PASSWORD: top.secretRefs.wordpress,
                            },
                        },
                    },
                },
            },
        },
    },

    service: ns.Contain(kube.Service(cfg.name)) {
        target:: top.deployment,
    },

    ingress: ns.Contain(kube.SimpleIngress(cfg.name)) {
        hosts:: [cfg.domain],
        target:: top.service,
    },

    mysql: {
        local mysql = self,

        volume: ns.Contain(kube.PersistentVolumeClaim("wordpress-mysql")) {
            storage:: cfg.storageSize,
            storageClass:: cfg.storageClassName,
        },

        deployment: ns.Contain(kube.Deployment("wordpress-mysql")) {
            spec+: {
                replicas: 1,
                template+: {
                    spec+: {
                        volumes_: {
                            data: mysql.volume.volume,
                        },
                        containers_: {
                            default: kube.Container("default") {
                                image: "mysql:8.2.0",
                                ports_: {
                                    client: { containerPort: 3306 },
                                },
                                env_: {
                                    MYSQL_RANDOM_ROOT_PASSWORD: "yes",
                                    MYSQL_DATABASE: "wordpress",
                                    MYSQL_USER: "wordpress",
                                    MYSQL_PASSWORD: top.secretRefs.mysql,
                                },
                                volumeMounts_: {
                                    data: { mountPath: '/var/lib/mysql' },
                                },
                            }
                        },
                        securityContext: {
                            runAsUser: 999,
                        },
                    }
                }
            }
        },

        service: ns.Contain(kube.Service("wordpress-mysql")) {
            target:: mysql.deployment,
        },
    },
}
