Files
a13labs.infra/terraform/k8sapps/disabled/collabora.tf.disabled
T

214 lines
4.9 KiB
Plaintext
Raw Normal View History

2024-09-24 15:28:19 +02:00
#
# Namespace
#
resource "kubernetes_namespace" "collabora" {
metadata {
annotations = {
name = "collabora"
}
labels = {
name = "collabora"
}
name = "collabora"
}
}
resource "kubernetes_secret" "collabora_admin_credentials" {
metadata {
name = "collabora-admin-credentials"
namespace = kubernetes_namespace.collabora.metadata[0].name
}
data = {
username = "admin"
password = var.collabora_admin_password
}
type = "Opaque"
}
resource "kubernetes_config_map" "collabora" {
metadata {
name = "collabora-config"
namespace = kubernetes_namespace.collabora.metadata[0].name
}
data = {
"extra_params" = "-o:ssl.enable=true"
"aliasgroup1" = "https://${local.nextcloud_fqdn}"
}
}
resource "kubernetes_service_account" "collabora_service_account" {
metadata {
name = "collabora-app-sa"
namespace = kubernetes_namespace.collabora.metadata[0].name
}
automount_service_account_token = false
}
resource "kubernetes_service" "collabora_office" {
metadata {
name = "http"
namespace = kubernetes_namespace.collabora.metadata[0].name
}
spec {
port {
port = 80
target_port = "http"
}
selector = {
app = "collabora"
}
cluster_ip = "None"
}
}
resource "kubernetes_ingress_v1" "collabora_ingress" {
depends_on = [
kubernetes_stateful_set.collabora_office
]
metadata {
name = "collabora-ingress"
namespace = kubernetes_namespace.collabora.metadata[0].name
annotations = {
"kubernetes.io/ingress.class" = "public"
"cert-manager.io/cluster-issuer" = "letsencrypt-prod"
"kubernetes.io/tls-acme" = "true"
"nginx.ingress.kubernetes.io/backend-protocol" = "HTTPS"
}
}
spec {
tls {
hosts = [local.collabora_fqdn]
secret_name = "collabora-tls"
}
rule {
host = local.collabora_fqdn
http {
path {
backend {
service {
name = "http"
port {
number = 80
}
}
}
}
}
}
}
}
resource "kubernetes_stateful_set" "collabora_office" {
metadata {
name = "collabora"
namespace = kubernetes_namespace.collabora.metadata[0].name
}
spec {
service_name = "collabora"
selector {
match_labels = {
app = "collabora"
}
}
template {
metadata {
annotations = {
"cluster-autoscaler.kubernetes.io/safe-to-evict" = "true"
}
labels = {
app = "collabora"
}
}
spec {
termination_grace_period_seconds = 60
service_account_name = kubernetes_service_account.collabora_service_account.metadata[0].name
container {
name = "collabora"
image = "collabora/code:${local.collabora_version}"
image_pull_policy = "IfNotPresent"
port {
name = "http"
container_port = 9980
protocol = "TCP"
}
startup_probe {
tcp_socket {
# path = "/"
port = 9980
# scheme = "HTTP"
}
failure_threshold = 30
period_seconds = 3
}
liveness_probe {
tcp_socket {
# path = "/"
port = 9980
# scheme = "HTTP"
}
initial_delay_seconds = 0
period_seconds = 30
timeout_seconds = 30
success_threshold = 1
failure_threshold = 4
}
readiness_probe {
tcp_socket {
# path = "/"
port = 9980
# scheme = "HTTP"
}
initial_delay_seconds = 0
period_seconds = 30
timeout_seconds = 30
success_threshold = 1
failure_threshold = 2
}
env_from {
config_map_ref {
name = kubernetes_config_map.collabora.metadata[0].name
}
}
env {
name = "username"
value_from {
secret_key_ref {
name = kubernetes_secret.collabora_admin_credentials.metadata[0].name
key = "username"
}
}
}
env {
name = "password"
value_from {
secret_key_ref {
name = kubernetes_secret.collabora_admin_credentials.metadata[0].name
key = "password"
}
}
}
volume_mount {
name = "tmp"
mount_path = "/tmp"
}
}
volume {
name = "tmp"
empty_dir {
}
}
}
}
}
}