Skip to content

Commit

Permalink
test(mc): Multi-Cloud multi-cluster single Grafana
Browse files Browse the repository at this point in the history
  • Loading branch information
SRodi committed Feb 6, 2025
1 parent ca2b7fb commit fa4c041
Show file tree
Hide file tree
Showing 37 changed files with 707 additions and 331 deletions.
30 changes: 30 additions & 0 deletions test/multicloud/examples/grafana/.terraform.lock.hcl

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions test/multicloud/examples/grafana/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module "grafana" {
source = "../../modules/grafana"
prometheus_endpoints = {
# This is obviously wrong, but it's just an example
# and you can check on GrafanaCloud to validate the
# data source was created
some = "http://example.com:1234"
}
}
15 changes: 15 additions & 0 deletions test/multicloud/examples/grafana/providers.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Terraform Grafana provider configuration
terraform {
required_version = "1.8.3"
required_providers {
grafana = {
source = "grafana/grafana"
version = "3.18.3"
}
}
}

# Initialize the Grafana provider
provider "grafana" {
url = var.grafana_url
}
4 changes: 4 additions & 0 deletions test/multicloud/examples/grafana/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
variable "grafana_url" {
description = "The URL of the Grafana instance"
type = string
}
50 changes: 47 additions & 3 deletions test/multicloud/live/retina-aks/.terraform.lock.hcl

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

65 changes: 65 additions & 0 deletions test/multicloud/live/retina-aks/locals.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
locals {
location = "uksouth"
resource_group_name = "mc-rg"
prefix = "mc"

retina_release_name = "retina"
retina_repository_url = "oci://ghcr.io/microsoft/retina/charts"
retina_chart_version = "v0.0.24"
retina_chart_name = "retina"
retina_values = [jsonencode(
{
image = {
tag = "v0.0.24"
}
logLevel = "info"
operator = {
tag = "v0.0.24"
}
}
)]

prometheus_release_name = "prometheus"
prometheus_repository_url = "https://prometheus-community.github.io/helm-charts"
prometheus_chart_version = "68.4.3"
prometheus_chart_name = "kube-prometheus-stack"
prometheus_values = [
"${file("../../../../deploy/standard/prometheus/values.yaml")}"
]

aks_security_rules = [
{
name = "Allow_Prometheus_Inbound"
priority = 100
direction = "Inbound"
access = "Allow"
protocol = "Tcp"
source_port_range = "*"
source_address_prefix = "*"
destination_port_range = "9090"
destination_address_prefix = module.prometheus_lb_aks.ip
},
{
name = "Allow_Prometheus_Outbound"
priority = 100
direction = "Outbound"
access = "Allow"
protocol = "Tcp"
source_port_range = "9090"
source_address_prefix = module.prometheus_lb_aks.ip
destination_port_range = "*"
destination_address_prefix = "*"
},
]

default_node_pool = {
name = "agentpool"
node_count = 2
vm_size = "standard_a2_v2"
os_disk_size_gb = 128
os_disk_type = "Managed"
max_pods = 110
type = "VirtualMachineScaleSets"
node_labels = {}
}
}
54 changes: 42 additions & 12 deletions test/multicloud/live/retina-aks/main.tf
Original file line number Diff line number Diff line change
@@ -1,21 +1,51 @@
module "aks" {
source = "../../modules/aks"
location = var.location
resource_group_name = var.resource_group_name
prefix = var.prefix
labels = var.labels
location = local.location
resource_group_name = local.resource_group_name
prefix = local.prefix
default_node_pool = local.default_node_pool
}

module "retina" {
module "retina_aks" {
depends_on = [module.aks]
source = "../../modules/helm-release"
release_name = var.retina_release_name
repository_url = var.retina_repository_url
chart_version = var.retina_chart_version
chart_name = var.retina_chart_name
values = var.retina_values
chart_version = local.retina_chart_version
release_name = local.retina_release_name
repository_url = local.retina_repository_url
chart_name = local.retina_chart_name
values = local.retina_values
}

output "kubeconfig_command" {
value = module.aks.azure_get_kubeconfig
module "prometheus_aks" {
depends_on = [module.aks]
source = "../../modules/helm-release"
chart_version = local.prometheus_chart_version
values = local.prometheus_values
release_name = local.prometheus_release_name
repository_url = local.prometheus_repository_url
chart_name = local.prometheus_chart_name
}

module "prometheus_lb_aks" {
depends_on = [
module.aks,
module.prometheus_aks
]
source = "../../modules/kubernetes-lb"
}

module "aks_nsg" {
depends_on = [module.aks]
source = "../../modules/aks-nsg"
prefix = local.prefix
resource_group_name = local.resource_group_name
security_rules = local.aks_security_rules
}

module "grafana" {
depends_on = [module.prometheus_lb_aks]
source = "../../modules/grafana"
prometheus_endpoints = {
aks = "http://${module.prometheus_lb_aks.ip}:9090"
}
}
20 changes: 2 additions & 18 deletions test/multicloud/live/retina-aks/outputs.tf
Original file line number Diff line number Diff line change
@@ -1,19 +1,3 @@
output "host" {
value = module.aks.host
sensitive = true
output "kubeconfig_command" {
value = module.aks.azure_get_kubeconfig
}

output "client_certificate" {
value = module.aks.client_certificate
sensitive = true
}

output "client_key" {
value = module.aks.client_key
sensitive = true
}

output "cluster_ca_certificate" {
value = module.aks.cluster_ca_certificate
sensitive = true
}
21 changes: 21 additions & 0 deletions test/multicloud/live/retina-aks/providers.tf
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@ terraform {
source = "hashicorp/helm"
version = "2.17.0"
}
kubernetes = {
source = "hashicorp/kubernetes"
version = "2.35.1"
}
grafana = {
source = "grafana/grafana"
version = "3.18.3"
}
}
}

Expand All @@ -32,3 +40,16 @@ provider "helm" {
cluster_ca_certificate = base64decode(module.aks.cluster_ca_certificate)
}
}

# Initialize the Kubernetes provider
provider "kubernetes" {
host = module.aks.host
client_certificate = base64decode(module.aks.client_certificate)
client_key = base64decode(module.aks.client_key)
cluster_ca_certificate = base64decode(module.aks.cluster_ca_certificate)
}

# Initialize the Grafana provider
provider "grafana" {
url = var.grafana_url
}
71 changes: 3 additions & 68 deletions test/multicloud/live/retina-aks/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -8,72 +8,7 @@ variable "tenant_id" {
type = string
}

variable "location" {
description = "The Azure Cloud location where AKS will be deployed to."
variable "grafana_url" {
description = "The URL of the Grafana instance"
type = string
default = "uksouth"
}

variable "resource_group_name" {
description = "The name of the resource group."
type = string
default = "mc-rg"
}

variable "prefix" {
description = "A prefix to add to all resources."
type = string
default = "mc"
}

variable "labels" {
description = "A map of labels to add to all resources."
type = map(string)
default = {}
}

variable "retina_release_name" {
description = "The name of the Helm release."
type = string
default = "retina"
}

variable "retina_repository_url" {
description = "The URL of the Helm repository."
type = string
default = "oci://ghcr.io/microsoft/retina/charts"
}

variable "retina_chart_version" {
description = "The version of the Helm chart to install."
type = string
default = "v0.0.24"
}

variable "retina_chart_name" {
description = "The name of the Helm chart to install."
type = string
default = "retina"
}

variable "retina_values" {
description = "Configuration for set blocks, this corresponds to Helm values.yaml"
type = list(object({
name = string
value = string
}))
default = [
{
name = "image.tag"
value = "v0.0.24"
},
{
name = "operator.tag"
value = "v0.0.24"
},
{
name = "logLevel"
value = "info"
}
]
}
}
Loading

0 comments on commit fa4c041

Please sign in to comment.