Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Addon kube prometheus stack #765

Merged
merged 23 commits into from
Jul 20, 2022
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
3db23b3
init new module with empty files
alanty Jun 21, 2022
330789b
init helm addon
alanty Jun 21, 2022
4ffb3d5
create module parameters
alanty Jun 21, 2022
fc26b90
use underscores not dashes
alanty Jun 21, 2022
ff9f71e
add default values.yaml file for chart
alanty Jun 21, 2022
3fba426
add actual values to values.yaml
alanty Jun 21, 2022
669ffef
Merge branch 'aws-ia:main' into addon-kube-prometheus-stack
alanty Jun 22, 2022
da9bd84
remove commented AMP items
alanty Jun 23, 2022
53d0582
update documentation
alanty Jun 23, 2022
90a2baf
Merge branch 'addon-kube-prometheus-stack' of github.com:alanty/terra…
alanty Jun 23, 2022
a614b40
update docs
alanty Jun 23, 2022
c6bc87a
Merge branch 'aws-ia:main' into addon-kube-prometheus-stack
alanty Jul 12, 2022
78d823e
Merge branch 'aws-ia:main' into addon-kube-prometheus-stack
alanty Jul 12, 2022
b68db07
pre-commit cleanup
alanty Jul 12, 2022
ebac8bf
add docs for kube-prometheus-stack
alanty Jul 12, 2022
33b8ff3
Apply suggestions from code review
alanty Jul 14, 2022
f777920
remove comments from review
alanty Jul 14, 2022
278f68e
Update modules/kubernetes-addons/kube-prometheus-stack/README.md
bryantbiggs Jul 14, 2022
409bc94
review and comment cleanup
alanty Jul 18, 2022
48997f3
add persistent storage for prometheus server
alanty Jul 18, 2022
19502a5
doc cleanup, adminPassword example
alanty Jul 18, 2022
304b8d1
Merge branch 'aws-ia:main' into addon-kube-prometheus-stack-dev
alanty Jul 18, 2022
a6c65ef
Merge pull request #1 from alanty/addon-kube-prometheus-stack-dev
alanty Jul 18, 2022
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
28 changes: 28 additions & 0 deletions docs/add-ons/kube-prometheus-stack.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# kube-prometheus-stack
[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack)is a a collection of Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator.

alanty marked this conversation as resolved.
Show resolved Hide resolved

## Usage

The default values.yaml file in this add-on has disabled the components that are unreachable in EKS environments.

You can override the defaults using the `set` helm_config key:

```sh
enable_kube_prometheus_stack = true
kube_prometheus_stack_helm_config = {
set = [
{
name = "kubeProxy.enabled"
value = false
}
]
}
```

## Upgrading the Chart

Be aware that it is likely necessary to update the CRDs when updating the Chart version. Refer to the Project documentation on upgrades for your specific versions: https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#upgrading-chart
alanty marked this conversation as resolved.
Show resolved Hide resolved


For complete project documentation, please visit the [kube-prometheus-stack Github repository](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack).
3 changes: 3 additions & 0 deletions modules/kubernetes-addons/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
| <a name="module_ingress_nginx"></a> [ingress\_nginx](#module\_ingress\_nginx) | ./ingress-nginx | n/a |
| <a name="module_karpenter"></a> [karpenter](#module\_karpenter) | ./karpenter | n/a |
| <a name="module_keda"></a> [keda](#module\_keda) | ./keda | n/a |
| <a name="module_kube_prometheus_stack"></a> [kube\_prometheus\_stack](#module\_kube\_prometheus\_stack) | ./kube-prometheus-stack | n/a |
| <a name="module_kubernetes_dashboard"></a> [kubernetes\_dashboard](#module\_kubernetes\_dashboard) | ./kubernetes-dashboard | n/a |
| <a name="module_metrics_server"></a> [metrics\_server](#module\_metrics\_server) | ./metrics-server | n/a |
| <a name="module_ondat"></a> [ondat](#module\_ondat) | ondat/ondat-addon/eksblueprints | 0.1.1 |
Expand Down Expand Up @@ -155,6 +156,7 @@
| <a name="input_enable_ipv6"></a> [enable\_ipv6](#input\_enable\_ipv6) | Enable Ipv6 network. Attaches new VPC CNI policy to the IRSA role | `bool` | `false` | no |
| <a name="input_enable_karpenter"></a> [enable\_karpenter](#input\_enable\_karpenter) | Enable Karpenter autoscaler add-on | `bool` | `false` | no |
| <a name="input_enable_keda"></a> [enable\_keda](#input\_enable\_keda) | Enable KEDA Event-based autoscaler add-on | `bool` | `false` | no |
| <a name="input_enable_kube_prometheus_stack"></a> [enable\_kube\_prometheus\_stack](#input\_enable\_kube\_prometheus\_stack) | Enable Community kube-prometheus-stack add-on | `bool` | `false` | no |
| <a name="input_enable_kubernetes_dashboard"></a> [enable\_kubernetes\_dashboard](#input\_enable\_kubernetes\_dashboard) | Enable Kubernetes Dashboard add-on | `bool` | `false` | no |
| <a name="input_enable_metrics_server"></a> [enable\_metrics\_server](#input\_enable\_metrics\_server) | Enable metrics server add-on | `bool` | `false` | no |
| <a name="input_enable_ondat"></a> [enable\_ondat](#input\_enable\_ondat) | Enable Ondat add-on | `bool` | `false` | no |
Expand Down Expand Up @@ -186,6 +188,7 @@
| <a name="input_karpenter_node_iam_instance_profile"></a> [karpenter\_node\_iam\_instance\_profile](#input\_karpenter\_node\_iam\_instance\_profile) | Karpenter Node IAM Instance profile id | `string` | `""` | no |
| <a name="input_keda_helm_config"></a> [keda\_helm\_config](#input\_keda\_helm\_config) | KEDA Event-based autoscaler add-on config | `any` | `{}` | no |
| <a name="input_keda_irsa_policies"></a> [keda\_irsa\_policies](#input\_keda\_irsa\_policies) | Additional IAM policies for a IAM role for service accounts | `list(string)` | `[]` | no |
| <a name="input_kube_prometheus_stack_helm_config"></a> [kube\_prometheus\_stack\_helm\_config](#input\_kube\_prometheus\_stack\_helm\_config) | Community kube-prometheus-stack Helm Chart config | `any` | `{}` | no |
| <a name="input_kubernetes_dashboard_helm_config"></a> [kubernetes\_dashboard\_helm\_config](#input\_kubernetes\_dashboard\_helm\_config) | Kubernetes Dashboard Helm Chart config | `any` | `null` | no |
| <a name="input_metrics_server_helm_config"></a> [metrics\_server\_helm\_config](#input\_metrics\_server\_helm\_config) | Metrics Server Helm Chart config | `any` | `{}` | no |
| <a name="input_ondat_admin_password"></a> [ondat\_admin\_password](#input\_ondat\_admin\_password) | Password for Ondat admin user | `string` | `"storageos"` | no |
Expand Down
28 changes: 28 additions & 0 deletions modules/kubernetes-addons/kube-prometheus-stack/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# kube-prometheus-stack Helm Chart

## Introduction

[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack)is a a collection of Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator.

The default values.yaml file in this add-on has disabled the components that are unreachable in EKS environments.

You can override the defaults using the `set` helm_config key:

```sh
bryantbiggs marked this conversation as resolved.
Show resolved Hide resolved
enable_kube_prometheus_stack = true
kube_prometheus_stack_helm_config = {
set = [
{
name = "kubeProxy.enabled"
value = false
}
]
}
```

## Upgrading the Chart

Be aware that it is likely necessary to update the CRDs when updating the Chart version. Refer to the Project documentation on upgrades for your specific versions: https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#upgrading-chart


For complete project documentation, please visit the [kube-prometheus-stack Github repository](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack).
24 changes: 24 additions & 0 deletions modules/kubernetes-addons/kube-prometheus-stack/locals.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
locals {
name = "kube-prometheus-stack"
default_helm_config = {
name = local.name
chart = local.name
repository = "https://prometheus-community.github.io/helm-charts"
version = "36.0.3"
namespace = local.name
timeout = "1200"
values = local.default_helm_values
description = "kube-prometheus-stack helm Chart deployment configuration"
}

helm_config = merge(
local.default_helm_config,
var.helm_config
)

default_helm_values = [templatefile("${path.module}/values.yaml", {
aws_region = var.addon_context.aws_region_name
})]


alanty marked this conversation as resolved.
Show resolved Hide resolved
}
16 changes: 16 additions & 0 deletions modules/kubernetes-addons/kube-prometheus-stack/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
module "helm_addon" {
source = "../helm-addon"
# manage_via_gitops = var.manage_via_gitops
alanty marked this conversation as resolved.
Show resolved Hide resolved
helm_config = local.helm_config
addon_context = var.addon_context
depends_on = [kubernetes_namespace_v1.prometheus]
}

resource "kubernetes_namespace_v1" "prometheus" {
metadata {
name = local.helm_config["namespace"]
labels = {
"app.kubernetes.io/managed-by" = "terraform-aws-eks-blueprints"
}
}
}
Empty file.
20 changes: 20 additions & 0 deletions modules/kubernetes-addons/kube-prometheus-stack/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## Create default rules for monitoring the cluster
vara-bonthu marked this conversation as resolved.
Show resolved Hide resolved
## Disable rules for unreachable components
##
defaultRules:
create: true
rules:
etcd: false
kubeScheduler: false

## Disable component scraping for the kube controller manager, etcd, and kube-scheduler
## These components are not reachable on EKS
##
kubeControllerManager:
enabled: false
kubeEtcd:
enabled: false
kubeScheduler:
enabled: false

## additional configuration options available here: https://github.com/prometheus-community/helm-charts/blob/main/charts/kube-prometheus-stack/values.yaml
28 changes: 28 additions & 0 deletions modules/kubernetes-addons/kube-prometheus-stack/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
variable "helm_config" {
type = any
default = {}
description = "Helm Config for kube-prometheus-stack"
}

# variable "manage_via_gitops" {
# type = bool
# default = false
# description = "[not implemented] Determines if the add-on should be managed via GitOps."
# }
alanty marked this conversation as resolved.
Show resolved Hide resolved

variable "addon_context" {
type = object({
aws_caller_identity_account_id = string
aws_caller_identity_arn = string
aws_eks_cluster_endpoint = string
aws_partition_id = string
aws_region_name = string
eks_cluster_id = string
eks_oidc_issuer_url = string
eks_oidc_provider_arn = string
tags = map(string)
irsa_iam_role_path = string
irsa_iam_permissions_boundary = string
})
description = "Input configuration for the addon"
}
14 changes: 14 additions & 0 deletions modules/kubernetes-addons/kube-prometheus-stack/versions.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
terraform {
required_version = ">= 1.0.0"

required_providers {
aws = {
source = "hashicorp/aws"
version = ">= 3.72"
}
kubernetes = {
source = "hashicorp/kubernetes"
version = ">= 2.10"
}
}
}
8 changes: 8 additions & 0 deletions modules/kubernetes-addons/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,14 @@ module "ondat" {
admin_password = var.ondat_admin_password
}

module "kube_prometheus_stack" {
count = var.enable_kube_prometheus_stack ? 1 : 0
source = "./kube-prometheus-stack"
helm_config = var.kube_prometheus_stack_helm_config
addon_context = local.addon_context
}


alanty marked this conversation as resolved.
Show resolved Hide resolved
module "prometheus" {
count = var.enable_prometheus ? 1 : 0
source = "./prometheus"
Expand Down
13 changes: 13 additions & 0 deletions modules/kubernetes-addons/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,19 @@ variable "prometheus_helm_config" {
default = {}
}

#-----------KUBE-PROMETHEUS-STACK-------------
variable "enable_kube_prometheus_stack" {
description = "Enable Community kube-prometheus-stack add-on"
type = bool
default = false
}

variable "kube_prometheus_stack_helm_config" {
description = "Community kube-prometheus-stack Helm Chart config"
type = any
default = {}
}

#-----------METRIC SERVER-------------
variable "enable_metrics_server" {
description = "Enable metrics server add-on"
Expand Down