Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions chart/templates/monitoring.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ data:
datasource.yaml: |
apiVersion: 1
datasources:
- name: Prometheus
- name: Thanos
type: prometheus
url: http://{{ .Values.prometheus.name }}.{{ .Values.prometheus.namespace }}.svc.cluster.local:9090
url: http://{{ .Values.prometheus.thanosQuery }}.{{ .Values.prometheus.namespace }}.svc.cluster.local:9091
isDefault: true
access: proxy
uid: PBFA97CFB590B2093
Expand Down
1 change: 1 addition & 0 deletions chart/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ issuer: ca-issuer
prometheus:
name: vela-prometheus
namespace: monitoring
thanosQuery: vela-thanos-query

analytics:
DB_HOST: database
Expand Down
331 changes: 327 additions & 4 deletions deployment/addons/prometheus.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ resource "helm_release" "prometheus" {
name = "prometheus"
repository = "https://prometheus-community.github.io/helm-charts"
chart = "prometheus"
namespace = "monitoring"
namespace = var.namespace
create_namespace = true
version = "25.18.0"

Expand All @@ -13,7 +13,7 @@ resource "helm_release" "prometheus" {

set {
name = "server.replicaCount"
value = 1
value = 3
}

set {
Expand All @@ -39,7 +39,61 @@ resource "helm_release" "prometheus" {
name = "server.configMapOverrideName"
value = "vela-prometheus-config"
}


set {
name = "server.extraVolumes"
value = <<EOF
- name: objstore-config
configMap:
name: vela-objstore-config
EOF
}

set {
name = "server.affinity"
value = <<EOF
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app.kubernetes.io/component
operator: In
values:
- vela-prometheus
topologyKey: "kubernetes.io/hostname"
EOF
}

set {
name = "server.sidecarContainers"
value = <<EOF
thanos-sidecar:
image: "thanosio/thanos:v0.31.0"
args:
- sidecar
- --tsdb.path=/prometheus
- --prometheus.url=http://localhost:9090
- --objstore.config-file=/etc/thanos/objstore.yml
ports:
- name: grpc
containerPort: 10901
- name: http
containerPort: 10902
volumeMounts:
- name: storage-volume
mountPath: /prometheus
- name: objstore-config
mountPath: /etc/thanos
resources:
requests:
cpu: "100m"
memory: "256Mi"
limits:
cpu: "250m"
memory: "1Gi"
EOF
}

set {
name = "alertmanager.enabled"
value = false
Expand All @@ -64,7 +118,7 @@ resource "helm_release" "prometheus" {
resource "kubernetes_config_map" "vela_prometheus_config" {
metadata {
name = "prometheus-vela-prometheus-config"
namespace = "monitoring"
namespace = var.namespace
labels = {
app = "vela-prometheus"
}
Expand All @@ -91,3 +145,272 @@ resource "kubernetes_config_map" "vela_prometheus_config" {
YAML
}
}

resource "kubernetes_config_map" "vela_objstore_config" {
metadata {
name = "vela-objstore-config"
namespace = var.namespace
labels = {
app = "vela-thanos"
}
}

data = {
"objstore.yml" = <<EOF
type: FILESYSTEM
config:
directory: /mnt/thanos
EOF
}
}

resource "kubernetes_service" "vela_thanos_store" {
metadata {
name = "vela-thanos-store"
namespace = var.namespace
labels = {
app = "vela-thanos-store"
}
}

spec {
selector = {
app = "vela-thanos-store"
}

port {
name = "thanos-store"
port = 10901
target_port = 10901
protocol = "TCP"
}

type = "ClusterIP"
}
}

resource "kubernetes_deployment" "vela_thanos_store" {
metadata {
name = "vela-thanos-store"
namespace = var.namespace
labels = {
app = "vela-thanos-store"
}
}

spec {
replicas = 1

selector {
match_labels = {
app = "vela-thanos-store"
}
}

template {
metadata {
labels = {
app = "vela-thanos-store"
}
}

spec {
container {
name = "thanos-store"
image = "thanosio/thanos:v0.31.0"

args = [
"store",
"--objstore.config-file=/etc/thanos/objstore.yml",
"--index-cache-size=500MB",
"--chunk-pool-size=500MB",
]

resources {
limits = {
cpu = "250m"
memory = "1Gi"
}
requests = {
cpu = "100m"
memory = "256Mi"
}
}

volume_mount {
name = "objstore-config"
mount_path = "/etc/thanos"
}

volume_mount {
name = "thanos-data"
mount_path = "/data"
}
}

volume {
name = "objstore-config"
config_map {
name = "vela-objstore-config"
}
}

volume {
name = "thanos-data"
empty_dir {}
}
}
}
}
}

resource "kubernetes_service" "vela_thanos_query" {
metadata {
name = "vela-thanos-query"
namespace = var.namespace
}

spec {
selector = {
app = "vela-thanos-query"
}

port {
name = "thanos-query"
port = 9091
target_port = 9091
}
}
}

resource "kubernetes_deployment" "vela_thanos_query" {
metadata {
name = "vela-thanos-query"
namespace = var.namespace
labels = {
app = "vela-thanos-query"
}
}

spec {
replicas = 1

selector {
match_labels = {
app = "vela-thanos-query"
}
}

template {
metadata {
labels = {
app = "vela-thanos-query"
}
}

spec {
container {
name = "thanos-query"
image = "thanosio/thanos:v0.31.0"

args = [
"query",
"--http-address=0.0.0.0:9091",
"--store=vela-thanos-store:10901",
"--store=vela-prometheus:10901",
]

resources {
limits = {
cpu = "250m"
memory = "1Gi"
}
requests = {
cpu = "100m"
memory = "256Mi"
}
}
}
}
}
}
}

resource "kubernetes_deployment" "vela_thanos_compactor" {
metadata {
name = "vela-thanos-compactor"
namespace = var.namespace
labels = {
app = "vela-thanos-compactor"
}
}

spec {
replicas = 1

selector {
match_labels = {
app = "vela-thanos-compactor"
}
}

template {
metadata {
labels = {
app = "vela-thanos-compactor"
}
}

spec {
container {
name = "thanos-compactor"
image = "thanosio/thanos:v0.31.0"

args = [
"compact",
"--data-dir=/data",
"--objstore.config-file=/etc/thanos/objstore.yml",
"--retention.resolution-raw=30d",
"--retention.resolution-5m=60d",
"--retention.resolution-1h=90d",
"--compact.concurrency=1",
"--wait",
]

volume_mount {
name = "objstore-config"
mount_path = "/etc/thanos"
}

volume_mount {
name = "compactor-data"
mount_path = "/data"
}

resources {
limits = {
cpu = "250m"
memory = "1Gi"
}
requests = {
cpu = "100m"
memory = "256Mi"
}
}
}

volume {
name = "objstore-config"
config_map {
name = "vela-objstore-config"
}
}

volume {
name = "compactor-data"
empty_dir {}
}
}
}
}
}
4 changes: 4 additions & 0 deletions deployment/addons/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,7 @@ variable "kube_ovn_master_node_name" {
description = "Name of the node that should be labeled as the Kube-OVN master"
type = string
}

variable "namespace" {
default = "monitoring"
}