Requirements
The following requirements are needed by this module:
-
argocd (>= 5)
-
kubernetes (>= 2)
-
null (>= 3)
-
random (>= 3)
-
utils (>= 1)
Resources
The following resources are used by this module:
-
azurerm_role_assignment.storage_contributor (resource)
-
azurerm_user_assigned_identity.prometheus (resource)
-
null_resource.dependencies (resource)
-
azurerm_resource_group.node_resource_group (data source)
-
azurerm_storage_container.container (data source)
Required Inputs
The following input variables are required:
cluster_name
Description: Name given to the cluster. Value used for naming some the resources created by the module.
Type: string
base_domain
Description: Base domain of the cluster. Value used for the ingress' URL of the application.
Type: string
Optional Inputs
The following input variables are optional (have default values):
metrics_storage
Description: Azure Blob Storage configuration for metric archival.
Type:
object({
container = string
storage_account = string
managed_identity_node_rg_name = optional(string, null)
managed_identity_oidc_issuer_url = optional(string, null)
storage_account_key = optional(string, null)
})
Default: null
subdomain
Description: Subdomain of the cluster. Value used for the ingress' URL of the application.
Type: string
Default: "apps"
argocd_project
Description: Name of the Argo CD AppProject where the Application should be created. If not set, the Application will be created in a new AppProject only for this Application.
Type: string
Default: null
argocd_labels
Description: Labels to attach to the Argo CD Application resource.
Type: map(string)
Default: {}
destination_cluster
Description: Destination cluster where the application should be deployed.
Type: string
Default: "in-cluster"
target_revision
Description: Override of target revision of the application chart.
Type: string
Default: "v10.1.0"
cluster_issuer
Description: SSL certificate issuer to use. Usually you would configure this value as letsencrypt-staging
or letsencrypt-prod
on your root *.tf
files.
Type: string
Default: "selfsigned-issuer"
helm_values
Description: Helm chart value overrides. They should be passed as a list of HCL structures.
Type: any
Default: []
deep_merge_append_list
Description: A boolean flag to enable/disable appending lists instead of overwriting them.
Type: bool
Default: false
app_autosync
Description: Automated sync options for the Argo CD Application resource.
Type:
object({
allow_empty = optional(bool)
prune = optional(bool)
self_heal = optional(bool)
})
Default:
{
"allow_empty": false,
"prune": true,
"self_heal": true
}
resources
Description: Resource limits and requests for kube-prometheus-stack’s components. Follow the style on official documentation to understand the format of the values.
These are not production values. You should always adjust them to your needs. |
Type:
object({
prometheus = optional(object({
requests = optional(object({
cpu = optional(string, "250m")
memory = optional(string, "512Mi")
}), {})
limits = optional(object({
cpu = optional(string)
memory = optional(string, "1024Mi")
}), {})
}), {})
prometheus_operator = optional(object({
requests = optional(object({
cpu = optional(string, "50m")
memory = optional(string, "128Mi")
}), {})
limits = optional(object({
cpu = optional(string)
memory = optional(string, "128Mi")
}), {})
}), {})
thanos_sidecar = optional(object({
requests = optional(object({
cpu = optional(string, "100m")
memory = optional(string, "256Mi")
}), {})
limits = optional(object({
cpu = optional(string)
memory = optional(string, "512Mi")
}), {})
}), {})
alertmanager = optional(object({
requests = optional(object({
cpu = optional(string, "50m")
memory = optional(string, "128Mi")
}), {})
limits = optional(object({
cpu = optional(string)
memory = optional(string, "256Mi")
}), {})
}), {})
kube_state_metrics = optional(object({
requests = optional(object({
cpu = optional(string, "50m")
memory = optional(string, "128Mi")
}), {})
limits = optional(object({
cpu = optional(string)
memory = optional(string, "128Mi")
}), {})
}), {})
grafana = optional(object({
requests = optional(object({
cpu = optional(string, "250m")
memory = optional(string, "512Mi")
}), {})
limits = optional(object({
cpu = optional(string)
memory = optional(string, "512Mi")
}), {})
}), {})
node_exporter = optional(object({
requests = optional(object({
cpu = optional(string, "50m")
memory = optional(string, "128Mi")
}), {})
limits = optional(object({
cpu = optional(string)
memory = optional(string, "128Mi")
}), {})
}), {})
})
Default: {}
alertmanager
Description: Object containing Alertmanager settings. The following attributes are supported:
-
enabled
: whether Alertmanager is deployed or not (default:true
). -
domain
: domain name configured in the Ingress (default:prometheus.apps.${var.cluster_name}.${var.base_domain}
). -
oidc
: OIDC configuration to be used by OAuth2 Proxy in front of Alertmanager (required). -
deadmanssnitch_url
: url of a Dead Man’s Snitch service Alertmanager should report to (by default this reporing is disabled). -
slack_routes
: list of objects configuring routing of alerts to Slack channels, with the following attributes: -
name
: name of the configured route. -
channel
: channel where the alerts will be sent (with '#'). -
api_url
: slack URL you received when configuring a webhook integration. -
matchers
: list of strings for filtering which alerts will be sent. -
continue
: whether an alert should continue matching subsequent sibling nodes.
Type: any
Default: {}
metrics_storage_main
Description: Storage settings for the Thanos sidecar. Needs to be of type any
because the structure is different depending on the variant used.
Type: any
Default: {}
dataproxy_timeout
Description: Variable to set the time when a query times out. This applies to all the Grafana’s data sources and can be manually configured per data source if desired.
Type: number
Default: 30
Outputs
The following outputs are exported:
id
Description: ID to pass other modules in order to refer to this module as a dependency.
grafana_admin_password
Description: The admin password for Grafana. = Requirements
Name | Version |
---|---|
>= 5 |
|
>= 2 |
|
>= 3 |
|
>= 3 |
|
>= 1 |
Providers
Name | Version |
---|---|
>= 3 |
|
n/a |
Modules
Name | Source | Version |
---|---|---|
Resources
Name | Type |
---|---|
resource |
|
resource |
|
resource |
|
resource |
|
data source |
|
data source |
Inputs
Name | Description | Type | Default | Required | ||
---|---|---|---|---|---|---|
Azure Blob Storage configuration for metric archival. |
|
|
no |
|||
Name given to the cluster. Value used for naming some the resources created by the module. |
|
n/a |
yes |
|||
Base domain of the cluster. Value used for the ingress' URL of the application. |
|
n/a |
yes |
|||
Subdomain of the cluster. Value used for the ingress' URL of the application. |
|
|
no |
|||
Name of the Argo CD AppProject where the Application should be created. If not set, the Application will be created in a new AppProject only for this Application. |
|
|
no |
|||
Labels to attach to the Argo CD Application resource. |
|
|
no |
|||
Destination cluster where the application should be deployed. |
|
|
no |
|||
Override of target revision of the application chart. |
|
|
no |
|||
SSL certificate issuer to use. Usually you would configure this value as |
|
|
no |
|||
Helm chart value overrides. They should be passed as a list of HCL structures. |
|
|
no |
|||
A boolean flag to enable/disable appending lists instead of overwriting them. |
|
|
no |
|||
Automated sync options for the Argo CD Application resource. |
|
|
no |
|||
n/a |
|
|
no |
|||
Resource limits and requests for kube-prometheus-stack’s components. Follow the style on official documentation to understand the format of the values.
|
|
|
no |
|||
Grafana settings |
|
|
no |
|||
Prometheus settings |
|
|
no |
|||
Object containing Alertmanager settings. The following attributes are supported:
|
|
|
no |
|||
Storage settings for the Thanos sidecar. Needs to be of type |
|
|
no |
|||
Variable to set the time when a query times out. This applies to all the Grafana’s data sources and can be manually configured per data source if desired. |
|
|
no |
Outputs
Name | Description |
---|---|
ID to pass other modules in order to refer to this module as a dependency. |
|
The admin password for Grafana. |