diff --git a/argocd/app-of-apps/values.tmpl.yaml b/argocd/app-of-apps/values.tmpl.yaml index efa04e85c4..92579c4f35 100644 --- a/argocd/app-of-apps/values.tmpl.yaml +++ b/argocd/app-of-apps/values.tmpl.yaml @@ -249,6 +249,12 @@ kube-prometheus-stack: - ${prometheus.domain} - prometheus.apps.${base_domain} prometheusSpec: +%{ if can(metrics_archives.bucket_config) } + thanos: + objectStorageConfig: + key: thanos.yaml + name: thanos-objectstorage +%{ endif } portName: proxy containers: - args: @@ -277,7 +283,9 @@ kube-prometheus-stack: - name: web port: 9090 targetPort: 9090 - +%{ if can(metrics_archives.bucket_config) } + ${ indent(4,yamlencode({"thanosObjectStorageConfig": metrics_archives.bucket_config})) } +%{ endif } loki-stack: {} metrics-server: {} @@ -305,6 +313,9 @@ minio: - name: ${loki.bucket_name} policy: none purge: false + - name: ${metrics_archives.bucket_name} + policy: none + purge: false %{ endif } secrets-store-csi-driver: {} diff --git a/argocd/kube-prometheus-stack/templates/thanos-storageconfig.yml b/argocd/kube-prometheus-stack/templates/thanos-storageconfig.yml new file mode 100644 index 0000000000..c93d4f26d3 --- /dev/null +++ b/argocd/kube-prometheus-stack/templates/thanos-storageconfig.yml @@ -0,0 +1,10 @@ +{{- if index $.Values "kube-prometheus-stack" "thanosObjectStorageConfig" }} +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: thanos-objectstorage +stringData: + thanos.yaml: | + {{- index .Values "kube-prometheus-stack" "thanosObjectStorageConfig" | toYaml | nindent 4 }} +{{- end }} diff --git a/argocd/kube-prometheus-stack/values.yaml b/argocd/kube-prometheus-stack/values.yaml index f7499915ec..dc3a0eba75 100644 --- a/argocd/kube-prometheus-stack/values.yaml +++ b/argocd/kube-prometheus-stack/values.yaml @@ -1,5 +1,7 @@ --- kube-prometheus-stack: + thanosObjectStorageConfig: + kubeControllerManager: enabled: false diff --git a/modules/argocd-helm/local.tf b/modules/argocd-helm/local.tf index 23c02a6443..4753a8aae3 100644 --- a/modules/argocd-helm/local.tf +++ b/modules/argocd-helm/local.tf @@ -90,4 +90,11 @@ locals { local.minio_defaults, var.minio, ) + metrics_archives_defaults = { + bucket_name = "thanos" + } + metrics_archives = merge( + local.metrics_archives_defaults, + var.metrics_archives, + ) } diff --git a/modules/argocd-helm/main.tf b/modules/argocd-helm/main.tf index 716eeb55b8..81140cd9ad 100644 --- a/modules/argocd-helm/main.tf +++ b/modules/argocd-helm/main.tf @@ -83,6 +83,7 @@ resource "helm_release" "app_of_apps" { grafana = local.grafana prometheus = local.prometheus alertmanager = local.alertmanager + metrics_archives = local.metrics_archives } )], var.app_of_apps_values_overrides, diff --git a/modules/argocd-helm/variables.tf b/modules/argocd-helm/variables.tf index 3910931c26..67257de1ab 100644 --- a/modules/argocd-helm/variables.tf +++ b/modules/argocd-helm/variables.tf @@ -10,7 +10,7 @@ variable "target_revision" { variable "extra_apps" { description = "Extra applications to deploy." - type = list + type = list(any) default = [] } @@ -94,3 +94,10 @@ variable "app_of_apps_values_overrides" { type = list(string) default = [] } + +variable "metrics_archives" { + description = "Metrics archives settings" + type = any + default = {} +} + diff --git a/modules/k3s/main.tf b/modules/k3s/main.tf index a3e5adcb6f..9217a6c3ea 100644 --- a/modules/k3s/main.tf +++ b/modules/k3s/main.tf @@ -6,6 +6,10 @@ locals { kubernetes_password = local.context.users.0.user.password kubernetes_cluster_ca_certificate = base64decode(local.context.clusters.0.cluster.certificate-authority-data) kubeconfig = module.cluster.kubeconfig + minio = { + access_key = var.enable_minio ? random_password.minio_accesskey.0.result : "" + secret_key = var.enable_minio ? random_password.minio_secretkey.0.result : "" + } } provider "helm" { @@ -48,8 +52,8 @@ module "argocd" { } minio = { enable = var.enable_minio - access_key = var.enable_minio ? random_password.minio_accesskey.0.result : "" - secret_key = var.enable_minio ? random_password.minio_secretkey.0.result : "" + access_key = local.minio.access_key + secret_key = local.minio.secret_key } keycloak = { enable = true @@ -58,16 +62,27 @@ module "argocd" { loki = { bucket_name = "loki" } + metrics_archives = { + bucket_name = "thanos", + bucket_config = { + "type" = "S3", + "config" = { + "bucket" = "thanos", + "endpoint" = "minio.minio.svc:9000", + "insecure" = true, + "access_key" = local.minio.access_key, + "secret_key" = local.minio.secret_key + } + } + } olm = { enable = true } - grafana = { generic_oauth_extra_args = { tls_skip_verify_insecure = true } } - app_of_apps_values_overrides = [ templatefile("${path.module}/../values.tmpl.yaml", { @@ -77,7 +92,6 @@ module "argocd" { ), var.app_of_apps_values_overrides, ] - depends_on = [ module.cluster, ]