Terraform 普罗米修斯在地形中的配置和部署

Terraform 普罗米修斯在地形中的配置和部署,terraform,prometheus,configmap,Terraform,Prometheus,Configmap,我有一个IaaC项目,使用地形图和掌舵图部署普罗米修斯(以及格拉法纳、库伯内特斯和平台应用程序)。我有普罗米修斯的库伯内特斯度量。但是,我意识到部署的Prometheus上的配置实际上并不是来自项目中的Prometheus配置文件。我不确定这是否是configMap或其他配置的问题。以下是项目中涉及的文件: /terraform/kubernetes/files/prometheus\u config\u map.yaml global: scrape_interval: 15s scrap

我有一个IaaC项目,使用地形图和掌舵图部署普罗米修斯(以及格拉法纳、库伯内特斯和平台应用程序)。我有普罗米修斯的库伯内特斯度量。但是,我意识到部署的Prometheus上的配置实际上并不是来自项目中的Prometheus配置文件。我不确定这是否是configMap或其他配置的问题。以下是项目中涉及的文件:

/terraform/kubernetes/files/prometheus\u config\u map.yaml

global:
  scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
  static_configs:
  - targets: ['localhost:9090']
- job_name: 'kubernetes-pods'
  kubernetes_sd_configs:
  - role: pod
  relabel_configs:
  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
    action: keep
    regex: true
  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
    action: replace
    target_label: __metrics_path__
    regex: (.+)
  - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
    action: replace
    regex: ([^:]+)(?::\d+)?;(\d+)
    replacement: $1:$2
    target_label: __address__
  - action: labelmap
    regex: __meta_kubernetes_pod_label_(.+)
  - source_labels: [__meta_kubernetes_namespace]
    action: replace
    target_label: kubernetes_namespace
  - source_labels: [__meta_kubernetes_pod_label_component]
    action: replace
    target_label: job
  - source_labels: [__meta_kubernetes_pod_name]
    action: replace
    target_label: kubernetes_pod_name
prometheus:
  podMetadata:
    annotations:
      container.apparmor.security.beta.kubernetes.io/prometheus-operator: runtime/default
      seccomp.security.alpha.kubernetes.io/pod: runtime/default

nodeAffinityPreset:
  ## Node affinity type
  ## Allowed values: soft, hard
  ##
  type: "hard"
  ## Node label key to match
  ## E.g.
  ## key: "kubernetes.io/e2e-az-name"
  ##
  key: "cloud.google.com/gke-nodepool"
  ## Node label values to match
  ## E.g.
  ## values:
  ##   - e2e-az1
  ##   - e2e-az2
  ##
  values: [
    "project-primary-pool"
  ]

prometheus:  
  configMaps:
    - prometheus-config
/terraform/kubernetes/prometheus.tf

resource "kubernetes_namespace" "prometheus" {
  metadata {
    name = "prometheus"
  }
}

resource "kubernetes_config_map" "prometheus_config" {
  metadata {
    name      = "prometheus-config"
    namespace = "prometheus"
  }

  data = {
    "prometheus.yml" = file("${path.module}/files/prometheus_config_map.yaml")
  }
  depends_on = [
    kubernetes_namespace.prometheus
  ]
}

# Values documentation: https://github.com/bitnami/charts/blob/master/bitnami/kube-prometheus/values.yaml
resource "helm_release" "prometheus" {
  name        = "prometheus"
  repository  = local.helm_repositories.bitnami
  chart       = "kube-prometheus"
  version     = "3.4.0"
  namespace   = "prometheus"
  atomic      = true
  max_history = 5

  values = [
    file("${path.module}/helm_values/security.yaml.tpl"),
    file("${path.module}/helm_values/prometheus.yaml")
  ]

  depends_on = [
    kubernetes_config_map.prometheus_config
  ]
}
/terraform/kubernetes/helm_values/prometheus.yaml

global:
  scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
  static_configs:
  - targets: ['localhost:9090']
- job_name: 'kubernetes-pods'
  kubernetes_sd_configs:
  - role: pod
  relabel_configs:
  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
    action: keep
    regex: true
  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
    action: replace
    target_label: __metrics_path__
    regex: (.+)
  - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
    action: replace
    regex: ([^:]+)(?::\d+)?;(\d+)
    replacement: $1:$2
    target_label: __address__
  - action: labelmap
    regex: __meta_kubernetes_pod_label_(.+)
  - source_labels: [__meta_kubernetes_namespace]
    action: replace
    target_label: kubernetes_namespace
  - source_labels: [__meta_kubernetes_pod_label_component]
    action: replace
    target_label: job
  - source_labels: [__meta_kubernetes_pod_name]
    action: replace
    target_label: kubernetes_pod_name
prometheus:
  podMetadata:
    annotations:
      container.apparmor.security.beta.kubernetes.io/prometheus-operator: runtime/default
      seccomp.security.alpha.kubernetes.io/pod: runtime/default

nodeAffinityPreset:
  ## Node affinity type
  ## Allowed values: soft, hard
  ##
  type: "hard"
  ## Node label key to match
  ## E.g.
  ## key: "kubernetes.io/e2e-az-name"
  ##
  key: "cloud.google.com/gke-nodepool"
  ## Node label values to match
  ## E.g.
  ## values:
  ##   - e2e-az1
  ##   - e2e-az2
  ##
  values: [
    "project-primary-pool"
  ]

prometheus:  
  configMaps:
    - prometheus-config
在这个文件
/terraform/kubernetes/helm_values/prometheus.yaml
中,我试图删除最后一个
普罗米修斯:
,并将
配置映射:
移动到根目录,但它破坏了普罗米修斯的配置。 正如您在文件
/terraform/kubernetes/files/prometheus_config_map.yaml
中所看到的,
scrape_interval
15s
但是当我检查prometheus UI-config时,所有scrape_interval都是30s,因此,可以肯定的是,部署的prometheus的配置不是来自这个文件。因此,我没有办法更改配置,例如scrape_interval

我还注意到,我在文件
/terraform/kubernetes/helm_values/prometheus.yaml
中缺少许多配置,但我不确定要添加什么。你能告诉我怎么解决这个问题吗?先谢谢你


在values.yaml中,如果您检查行:577

有一个选项可以将配置映射装载到部署

配置应装入普罗米修斯吊舱的地图 configMaps:[]

您可以将配置映射设置为部署并更改间隔时间


如果未使用配置映射值,则必须使用卷中的默认配置,或者直接进入POD并检查一次以进行验证。

谢谢@Harsh Manvar的回复。我确实在之后检查了部署,装载似乎是空的,因为它的
None
这不是我们期望的,对吗?但是,如果您看到上面的文件,我确实有configMap部分,您能告诉我我遗漏了什么吗?@shuti检查confimap是否应用于prom的部署,因为scrape config存储在configMap中,所以您应该尝试添加或更新卷中的默认scrape config文件,以验证哪个文件正在加载。