Update assets/loadtest/azure (#64695)

This commit is contained in:
Edoardo Spadolini
2026-03-19 15:27:08 +00:00
committed by GitHub
parent 2bb262fd73
commit 4c3b227887
11 changed files with 140 additions and 106 deletions
+65 -64
View File
@@ -2,95 +2,96 @@
# Manual edits may be lost in future updates.
provider "registry.opentofu.org/alekc/kubectl" {
version = "2.1.2"
version = "2.1.5"
constraints = ">= 2.0.4"
hashes = [
"h1:Zg2NyooKVNq6YeYmD8hrV/TMBFNswjIlFzn+BcaxshQ=",
"zh:1b104c527b448e48cfee2fad304470c477fd692558d1795d427f27da219c57be",
"zh:376f9277264de986f2eeb9aa8fa0d69ba8c8a0e4a26138aa7a3636d8121643da",
"zh:37d0497e60bfb15e6f7085a5f86e3629be097e74d84de104a154bdffcadedc5d",
"zh:6f3d76982de4d304576c9797bb98ca5ff245c33843038359366077fd985c7695",
"zh:7a6ba743d724fc024a315d6f2425f233b69a0974d3572dbe57bf76586b2a376b",
"zh:8399a2dbb0e52a0155b430da3e9fe20b68067b5b528b01145db0b6cce24c9a35",
"zh:908d5a4fc588c2dea94851426efe2617e1c3e50e788203b5f4ac806bdc8ef978",
"zh:93278c2c123564354e67fe010bab8f777694d849381f04fd62dcc8bbc6f9b6e5",
"zh:9ee7de67441051ac12e3adbadc28caeb0142daaf3badb8517f8228d1444a4e64",
"zh:ae203afcfa7e82bf962736aec7f5af0409ef7580f4fa63aa90710a58fd51cc45",
"zh:c1a70ba89f2aa70e7d09dfb697200672716083211f6266c944b7f71f82a7e518",
"zh:d1f7e852c105a7a66e2b54afe5892a6542c8074b078eff4eb18245419be4def7",
"zh:e75dd818c98a8f5e3f3812dc960a3b69369c149bd030ad955c3f06322f667b67",
"zh:e7cb0eb48bca00235efcdcd453c9448c60a0559bebe4159092c1bac82c43a8df",
"h1:ZMqwfwUL49Nvp5LZims1nt7zdE2Lj9rtVHkRobYWBCs=",
"zh:11d6c7e429d013ce4b224a8e778fa1e272743dd131696039c65f8238d0c5afee",
"zh:39e55dc62ee6c31032e0ccd4f4d87d28f62ecf2025b726b705327b91235bb5d7",
"zh:3ef4cc118f1e9586bf794dcc9d0ed7912815df182239c28111fa2d67d4d9f264",
"zh:4183684cbd5a12c5b716b5d349178ac7cedda277ed0bc5cca2a03e33c0c6ff2d",
"zh:79e2d64ad8035a4254d40bc0f5064c3bb3a3d38e4e6d969c810f6512a50106f7",
"zh:91961239727bd01fd145752d5f42877bf8b8087a095ab68c39e3068941cdc09c",
"zh:a94b91e527d68a85aa5ab020c27d383bfa4aa61bf585248f3591808c8e29841d",
"zh:b0cdb266cc46d58ef3558f86e94d3d3718c6bb1281f2357c50bd7d2b6828e11a",
"zh:c6b12ca20041ed7b3cb86ff15cf69f8c6c4ccfe94640b8f45386ebcf26adfc31",
"zh:d7424e9d3511af81174549716c71da175529e439525fa44746b69ca514ab9022",
"zh:decb856ecf18a5a51775953233d3203ad2468456a6a28a4ff5243ed2d9a3241e",
"zh:e2b176e5cd860ea2559965d7bab34ccb6f2edcc6c8b92c1d96853ac1368f0415",
"zh:f780ee23ce21fb674d57f60320a284cdaf40d3baba4e3f8a274ad4601c989317",
]
}
provider "registry.opentofu.org/hashicorp/azurerm" {
version = "4.8.0"
version = "4.64.0"
constraints = ">= 4.8.0"
hashes = [
"h1:s8EqJc6f8eYEp82o7Ep/npF0imIc387jcw9EZdKF7NM=",
"zh:332af876544e8b64367c796b821a77b4d4f9caff11b7d970781f7b3c6639c17c",
"zh:467a3c2e04fa0a2cf2c029454188db667672eed1915d7b6534441d0b7747704c",
"zh:5d7080293830bee8467165fa8e8e6e6e363648829a9f36ab3433705ec13e9fdd",
"zh:672eaaa60cb47949baea760249de8950bde1376d32e4aa2d10ecb256b1a378a1",
"zh:7acfec123e0726228d1efd8e39e307342bf296978a23211a453bb6e389224228",
"zh:7b0abee5b3a013711811da8570743786974757b21dcc5cd79dcd0f2e0e985376",
"zh:985db9c536492fa45491009acfd7b3dde90e4fc066996ae404c551adcf8aa5e6",
"zh:aacb2954f73724a5271af8f1e20ef72ec2c749615afc5925459cdc403caf6895",
"zh:d422b0c0bcdd58c613b3626b40e7d958554567d6881906cf1d1eef3916d9f07e",
"zh:d70d3b0c581575cb95e01cda211fb67871532434f13aacae0ff75058d24a5bdd",
"h1:gVHQcxZG6SDx+FHaDTQttv/qD3Z9yz/HbZ4hRwFCuME=",
"zh:1f7ee0204f0ce2aec341ab08e75fd37ca5b8d20cf76cacd0eec9b0f88db1728d",
"zh:379c7e60c0769f795f815bd1251407435b1ec43b19d45fd98df5cc29ab67e160",
"zh:678f5410a2ae71efeaa132407d10785456b9833e95129ffdf4dc8e2023bed282",
"zh:7c70e7c477ffd247ed08c52f059ae0a0f6527794cc22451e7030193b5faba5d6",
"zh:7eb2a2dd7af4d4245206dead493d0a3b5ba41ce26e948e07e1e0b4e0e72c16cd",
"zh:b46dafc7809c556c03caafc391b44c865d2a23aea5a07a91fd0a44d230799eb6",
"zh:b522df0f546cf27ee2a7f93b0a8951555e271a2683218852a6a17f888e245fb2",
"zh:b71fe5117ea9f35f4d453010817d9b43f79968edd7252e7eb3161d54d00f1302",
"zh:bd62c037a232844ea3a776cd2912cdbfcf381174c9ca5e414d794d188283dd34",
"zh:cab246529fdbcb9bf6c903fe57708eaa4f6bda550f3edb80bc1a4ecc966bf240",
"zh:ce4935840210de4c319e0cd5a3aca0267fc96aded271207abd5bfd0d2b078672",
"zh:d4fc837b6659b462e8443f7004f0811d1b0bdec976e471992204ec2b51861285",
"zh:d9ab61eab0636531cde89d3f3bbac31298d60ec44b9db19b77c03931eb6806e4",
"zh:dbeee079fb4f604fe23b70fbd1539c13026adbf3a4fdb1caa7d42f06b1b84155",
"zh:ec656cd27be8777147004874ca5d00329ecaa3f578fc08dfd0b20a299f9b905b",
]
}
provider "registry.opentofu.org/hashicorp/helm" {
version = "2.16.1"
version = "3.1.1"
constraints = ">= 2.12.1"
hashes = [
"h1:VRNzXynt9zAlCwuwyylvsRPmpbQY+LNo82F/tK7sYl4=",
"zh:1c820d7997377c80c320b3bb4f257258af6c499bf2f2082a87975854b156b82b",
"zh:223dc3ba691a03eeb32d14160b3c6adc77d55a767274c728250cd4f1d4238a2a",
"zh:332095747133eb558da1455056f993314b16346d46065967ffe5f7b243614591",
"zh:46155a04e08e9790e22cb7b70d83cdf908e36121597c801a9300f8c100f1ad01",
"zh:51974f6ceb6b4c2aa575384a0cc1fbad22b8b868558e969a196575d43e9d0198",
"zh:7da302779eb39e63a62a0928e391852054ad83eb2025c190475c94a5afc77d29",
"zh:947bbf2a4d8461ec4a544ef7b76f45815602563123987a63dce843258440aa24",
"zh:b84a6658447bbd46daff26010771f0e2168423f0f7f1c1bc2b4ba53f9e891263",
"zh:dd21fdb13d85467b848682c63f440974cef99472d988794f019630f20ac3d2e6",
"zh:e0f77d2f7cf84d6c0d7f30f6cdc325c319ff4eadd525c6fb6979da62e5ff843d",
"h1:brfn5YltnzexsfqpWKw+5gS9U/m77e0An3hZQamlEZk=",
"zh:09b38905e234c2e0b185332819614224660050b7e4b25e9e858b593ab01adafe",
"zh:09fed1b19b8bcded169fb76304e06c5b1216d5ceba92948c23384f34ddbf1fac",
"zh:2e0af220f3fe79048d82f6de91752ba9929c215819d3de4f82ccb473bcd9e5df",
"zh:5fe8657cbf6aca769b9565a4fb4605d7b441c2c558d915b067c0adf6f77c58d4",
"zh:713943f797be3a4c6fc6bb5f1306c4f74762bfaa663f98fd8b4c49d28ee54ecf",
"zh:b426458c0bbad64f9000c11af7e74a24ce9e0adb3037c05dadf80c0c3e757931",
"zh:c0664866280a42156484a48f6c461d0ddb2d212da9b6e930c721ef577ab75270",
"zh:e4f9d0ebb70d63d8ac3ccee00a4d8cdb15b97aaa390f95ed65921e9d0f65bfa0",
"zh:f6fe7ecfafc344f4e6aecacf5ae12ac73b94389b9679dcd0f04fc5ff45bdc066",
]
}
provider "registry.opentofu.org/hashicorp/kubernetes" {
version = "2.33.0"
version = "3.0.1"
constraints = ">= 2.25.2"
hashes = [
"h1:A3/ATHzm2IhQQTSbkUPiZv1+oPZFMKinfEdwn/9DUL0=",
"zh:00aed83f28880460431f70e5a057c9324d1228b3f76e6554199700632ca62361",
"zh:4aac46187fd23bdabd801290070fa718609a2064ed5c876c4ab61fdf6e46ea04",
"zh:676dd70c2ff3df25a962bae4b11a2896d4313b0fd39132ec78ae3418bb1b2ef5",
"zh:6a01808157d2c9b415b49ea1d294cd19262a89b3b02e0de8d1db6cdc393dffa9",
"zh:941a0ef4b851ad37cff9ef9d38849529b5fb0c6b3ad149a6c2457d50b7964adf",
"zh:9a7b0ec7d84a481d9c7544056e0639d240e1373a1d61d4aebce049cc9673a6a6",
"zh:a6c68f47f72089f426b9a9040cc8a9fcb98d362b5b35d26028781f9fec3f0293",
"zh:a6ccb8f33dd52ceaca754cb51aea667fc9a8e3bfd5a192002005b7cfece65ee5",
"zh:e63a6fb4a72a0634f2fb0c261d5dea0182f13b5f9f0cd1560344602cc7482b68",
"zh:f0b79ba3c5f28b688b802ef0f052b6b4f99aa45a70e8d4efe21fd824f7a69c6c",
"h1:e0dSpTDhKjin6KYIwLWTR+AHVC7wWlU3VfIx27n1bec=",
"zh:0a6aff192781cfd062efe814d87ec21c84273005a685c818fb3c771ec9fd7051",
"zh:129f10760e8c727f7b593111e0026aa36aeb28c98f6500c749007aabba402332",
"zh:4a0995010f32949b1fbe580db15e76c73ba15aa265f73a7e535addd15dfade0d",
"zh:8b518be59029e8f0ad0767dbbd87f169ac6c906e50636314f8a5ff3c952f0ad5",
"zh:a2f1c113ae07dc5da8410d7a93b7e9ad24c3f17db357f090e6d68b41ed52e616",
"zh:b1d3604a2f545beae0965305d7bca821076cc9127fc34a77eef01c2d0cf916d2",
"zh:c2f2d371018d77affce46fee8b9a9ff0d27c4d5c3c64f8bce654e7c8d3305dc1",
"zh:c7cf958fb9bb429086ff1d371a4b824ec601ec0913dddaf85cd2e38d73ca7ec0",
"zh:f7753278388598c8e27140c5700e5699a0131926df8dad362f86ad67c36585ea",
]
}
provider "registry.opentofu.org/hashicorp/random" {
version = "3.6.3"
version = "3.8.1"
constraints = ">= 3.6.0"
hashes = [
"h1:32/UZofQoXk8zPj9vpIDiSEmERA3Mx2VPvk1lHTTHvw=",
"zh:1bfd2e54b4eee8c761a40b6d99d45880b3a71abc18a9a7a5319204da9c8363b2",
"zh:21a15ac74adb8ba499aab989a4248321b51946e5431219b56fc827e565776714",
"zh:221acfac3f7a5bcd6cb49f79a1fca99da7679bde01017334bad1f951a12d85ba",
"zh:3026fcdc0c1258e32ab519df878579160b1050b141d6f7883b39438244e08954",
"zh:50d07a7066ea46873b289548000229556908c3be746059969ab0d694e053ee4c",
"zh:54280cdac041f2c2986a585f62e102bc59ef412cad5f4ebf7387c2b3a357f6c0",
"zh:632adf40f1f63b0c5707182853c10ae23124c00869ffff05f310aef2ed26fcf3",
"zh:b8c2876cce9a38501d14880a47e59a5182ee98732ad7e576e9a9ce686a46d8f5",
"zh:f27e6995e1e9fe3914a2654791fc8d67cdce44f17bf06e614ead7dfd2b13d3ae",
"zh:f423f2b7e5c814799ad7580b5c8ae23359d8d342264902f821c357ff2b3c6d3d",
"h1:LsYuJLZcYl1RiH7Hd3w90Ra5+k5cNqfdRUQXItkTI8Y=",
"zh:25c458c7c676f15705e872202dad7dcd0982e4a48e7ea1800afa5fc64e77f4c8",
"zh:2edeaf6f1b20435b2f81855ad98a2e70956d473be9e52a5fdf57ccd0098ba476",
"zh:44becb9d5f75d55e36dfed0c5beabaf4c92e0a2bc61a3814d698271c646d48e7",
"zh:7699032612c3b16cc69928add8973de47b10ce81b1141f30644a0e8a895b5cd3",
"zh:86d07aa98d17703de9fbf402c89590dc1e01dbe5671dd6bc5e487eb8fe87eee0",
"zh:8c411c77b8390a49a8a1bc9f176529e6b32369dd33a723606c8533e5ca4d68c1",
"zh:a5ecc8255a612652a56b28149994985e2c4dc046e5d34d416d47fa7767f5c28f",
"zh:aea3fe1a5669b932eda9c5c72e5f327db8da707fe514aaca0d0ef60cb24892f9",
"zh:f56e26e6977f755d7ae56fa6320af96ecf4bb09580d47cb481efbf27f1c5afff",
]
}
+5 -1
View File
@@ -40,7 +40,11 @@ create-joe: aks
.PHONY: create-token
create-token: aks
$(KUBECTL) --context "$(aks_name)" --namespace "$(teleport_namespace)" exec "deploy/$(teleport_release)-auth" -- tctl token add --type=node --ttl=8766h
$(KUBECTL) --context "$(aks_name)" --namespace "$(teleport_namespace)" exec "deploy/$(teleport_release)-auth" -- tctl tokens add --type=node --ttl=8766h
.PHONY: create-token-tc
create-token-tc: aks
$(KUBECTL) --context "$(aks_name)" --namespace "$(teleport_namespace)" exec "deploy/$(teleport_release)-auth" -- tctl tokens add --type=trusted_cluster --ttl=8766h
# Recursively destroying the kube cluster and everything in it is incredibly
# slow, recursively destroying the database will not work because the teleport
+4 -2
View File
@@ -20,8 +20,7 @@ resource "azurerm_role_assignment" "dns_identity" {
resource "azurerm_federated_identity_credential" "dns_identity" {
name = "${azurerm_user_assigned_identity.dns_identity.name}-${azurerm_kubernetes_cluster.kube_cluster.name}"
parent_id = azurerm_user_assigned_identity.dns_identity.id
resource_group_name = azurerm_user_assigned_identity.dns_identity.resource_group_name
parent_id = azurerm_user_assigned_identity.dns_identity.id
audience = ["api://AzureADTokenExchange"]
@@ -32,6 +31,9 @@ resource "azurerm_federated_identity_credential" "dns_identity" {
resource "helm_release" "certmanager" {
name = local.certmanager_release
reset_values = true
max_history = 10
chart = "cert-manager"
repository = "https://charts.jetstack.io"
+8 -2
View File
@@ -11,8 +11,8 @@ resource "azurerm_kubernetes_cluster" "kube_cluster" {
default_node_pool {
name = "defaultpool"
vm_size = "Standard_D16s_v3" # 16 cpu 64gb ram
node_count = 3
vm_size = "Standard_D8s_v6" # 8 cpu 32gb ram
node_count = 6
}
identity {
@@ -26,6 +26,12 @@ resource "azurerm_kubernetes_cluster" "kube_cluster" {
network_plugin = "kubenet"
network_policy = "calico"
}
lifecycle {
ignore_changes = [
default_node_pool.0.upgrade_settings,
]
}
}
/*
+10 -19
View File
@@ -1,28 +1,19 @@
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = ">= 4.8.0"
source = "hashicorp/azurerm"
}
random = {
source = "hashicorp/random"
version = ">= 3.6.0"
}
kubernetes = {
source = "hashicorp/kubernetes"
version = ">= 2.25.2"
}
helm = {
source = "hashicorp/helm"
version = ">= 2.12.1"
source = "hashicorp/helm"
}
kubectl = {
source = "alekc/kubectl"
version = ">= 2.0.4"
source = "alekc/kubectl"
}
kubernetes = {
source = "hashicorp/kubernetes"
}
random = {
source = "hashicorp/random"
}
}
}
@@ -35,7 +26,7 @@ provider "kubernetes" {
}
provider "helm" {
kubernetes {
kubernetes = {
host = azurerm_kubernetes_cluster.kube_cluster.kube_config.0.host
client_certificate = base64decode(azurerm_kubernetes_cluster.kube_cluster.kube_config.0.client_certificate)
client_key = base64decode(azurerm_kubernetes_cluster.kube_cluster.kube_config.0.client_key)
+29 -3
View File
@@ -1,12 +1,34 @@
resource "kubernetes_namespace_v1" "monitoring" {
metadata {
name = local.monitoring_namespace
}
}
resource "kubernetes_config_map_v1" "monitoring_teleport_dashboard" {
metadata {
name = "teleport-dashboard"
labels = {
"grafana_dashboard" = "1"
}
namespace = one(kubernetes_namespace_v1.monitoring.metadata).name
}
binary_data = {
"teleport-dashboard.json" = filebase64("${path.module}/../../../examples/grafana/teleport-dashboard.json")
}
}
resource "helm_release" "monitoring" {
name = local.monitoring_release
reset_values = true
max_history = 10
chart = "kube-prometheus-stack"
repository = "https://prometheus-community.github.io/helm-charts"
namespace = local.monitoring_namespace
create_namespace = true
wait = true
namespace = one(kubernetes_namespace_v1.monitoring.metadata).name
wait = true
values = [jsonencode({
"grafana" = {
@@ -49,4 +71,8 @@ resource "helm_release" "monitoring" {
}
}
})]
depends_on = [
kubernetes_config_map_v1.monitoring_teleport_dashboard,
]
}
+2 -2
View File
@@ -23,11 +23,11 @@ output "monitoring_release" {
}
output "teleport_namespace" {
value = var.deploy_teleport ? helm_release.teleport.0.namespace : null
value = var.deploy_teleport ? helm_release.teleport.namespace : null
}
output "teleport_release" {
value = var.deploy_teleport ? helm_release.teleport.0.name : null
value = var.deploy_teleport ? helm_release.teleport.name : null
}
output "public_addr" {
+1 -2
View File
@@ -7,8 +7,7 @@ resource "azurerm_user_assigned_identity" "teleport_identity" {
resource "azurerm_federated_identity_credential" "teleport_identity" {
name = "${azurerm_user_assigned_identity.teleport_identity.name}-${azurerm_kubernetes_cluster.kube_cluster.name}"
parent_id = azurerm_user_assigned_identity.teleport_identity.id
resource_group_name = azurerm_user_assigned_identity.teleport_identity.resource_group_name
parent_id = azurerm_user_assigned_identity.teleport_identity.id
audience = ["api://AzureADTokenExchange"]
+7 -4
View File
@@ -8,15 +8,18 @@ resource "kubernetes_namespace_v1" "teleport" {
}
resource "helm_release" "teleport" {
count = var.deploy_teleport ? 1 : 0
lifecycle { enabled = var.deploy_teleport }
name = local.teleport_release
reset_values = true
max_history = 10
chart = "teleport-cluster"
repository = "https://charts.releases.development.teleport.dev"
version = var.teleport_version
namespace = kubernetes_namespace_v1.teleport.metadata.0.name
namespace = one(kubernetes_namespace_v1.teleport.metadata).name
values = [jsonencode({
"clusterName" = "${var.cluster_prefix}.${data.azurerm_dns_zone.dns_zone.name}"
@@ -77,7 +80,7 @@ resource "helm_release" "teleport" {
}
"highAvailability" = {
"replicaCount" = 3
"replicaCount" = 2
"certManager" = {
"enabled" = true
"issuerName" = kubectl_manifest.issuer.name
@@ -122,7 +125,7 @@ resource "azurerm_public_ip" "proxy" {
resource "azurerm_role_assignment" "proxy_ip" {
scope = azurerm_public_ip.proxy.id
role_definition_name = "Network Contributor"
principal_id = azurerm_kubernetes_cluster.kube_cluster.identity.0.principal_id
principal_id = one(azurerm_kubernetes_cluster.kube_cluster.identity).principal_id
skip_service_principal_aad_check = true
}
+3 -4
View File
@@ -7,11 +7,10 @@ resource "azurerm_postgresql_flexible_server" "pgbk" {
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
version = 15
version = 18
# Standard_D2ds_v4: 2 vCPU, 8GiB of ram, 75 GiB temp storage
# v4 because northeurope doesn't have v5 for Postgres
sku_name = "GP_Standard_D2ds_v4"
# Standard_D2ds_v5: 2 vCPU, 8GiB of ram, 75 GiB temp storage
sku_name = "GP_Standard_D2ds_v5"
storage_mb = 128 * 1024
authentication {
+6 -3
View File
@@ -2,7 +2,7 @@
# cpus in our quota, ymmv in other locations
# https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview#azure-regions
# https://portal.azure.com/#view/Microsoft_Azure_Capacity/QuotaMenuBlade/~/myQuotas
location = "northeurope" # ireland
location = "italynorth" # milan
## location = "eastus" # virginia
## location = "westus" # california
@@ -13,5 +13,8 @@ cluster_prefix = "loadtest"
dns_zone = "az.teleportdemo.net"
dns_zone_rg = "teleportdemo-dns"
teleport_version = "17.0.0-alpha.2"
deploy_teleport = true
teleport_version = "999.0.0-alpha.1"
deploy_teleport = false
# az account show -o tsv --query id
subscription_id = "12345678-1234-5678-1234-567812345678"