# Redis on Kubernetes.
# For now, single instance (no redis-sentinel or redis-cluster)

local kube = import "kube.libsonnet";

{
    local redis = self,
    local cfg = redis.cfg,

    cfg:: {
        namespace: error "namespace must be set",
        appName: error "app name must be set",
        storageClassName: "waw-hdd-redundant-1",
        prefix: "", # if set, should be 'foo-'
        password: null,

        # Persist data to disk
        persistence: true,

        image: "redis:5.0.4-alpine",
        resources: {
            requests: {
                cpu: "50m",
                memory: "64Mi",
            },
            limits: {
                cpu: "500m",
                memory: "256Mi",
            },
        },
    },


    makeName(suffix):: cfg.prefix + suffix,

    metadata:: {
        namespace: cfg.namespace,
        labels: {
            "app.kubernetes.io/name": cfg.appName,
            "app.kubernetes.io/managed-by": "kubecfg",
            "app.kubernetes.io/component": "redis",
        },
    },

    volumeClaim: kube.PersistentVolumeClaim(redis.makeName("redis")) {
        metadata+: redis.metadata,
        storage:: "5Gi",
        storageClass:: cfg.storageClassName,
    },
    deployment: kube.Deployment(redis.makeName("redis")) {
        metadata+: redis.metadata,
        spec+: {
            replicas: 1,
            template+: {
                spec+: {
                    volumes_: {
                        data: kube.PersistentVolumeClaimVolume(redis.volumeClaim),
                    },
                    containers_: {
                        redis: kube.Container(redis.makeName("redis")) {
                            image: cfg.image,
                            args: [
                                "redis-server",
                            ]
                            + (if cfg.persistence then ["--appendonly", "yes"] else [])
                            + (if cfg.password != null then ["--requirepass", "$(REDIS_PASSWORD)"] else []),
                            ports_: {
                                client: { containerPort: 6379 },
                            },
                            volumeMounts_: {
                                data: { mountPath: "/data" },
                            },
                            env_: {
                                [if cfg.password != null then "REDIS_PASSWORD"]: cfg.password,
                            },
                            resources: cfg.resources,
                        },
                    },
                    securityContext: {
                        runAsUser: 100,
                        runAsGroup: 101,
                        fsGroup: 101,
                    },
                },
            },
        },
    },
    svc: kube.Service(redis.makeName("redis")) {
        metadata+: redis.metadata,
        target:: redis.deployment,
        spec+: {
            ports: [
                { name: "client", port: 6379, targetPort: 6379, protocol: "TCP" },
            ],
            type: "ClusterIP",
        },
    },
}
