mirror of
https://github.com/optim-enterprises-bv/terraform-talos.git
synced 2025-10-29 01:22:29 +00:00
av-zones support
This commit is contained in:
@@ -21,5 +21,5 @@ create-deployments: ## create templates
|
||||
# helm template --namespace=local-path-storage -f vars/local-path-storage.yaml local-path-provisioner \
|
||||
# ~/work/sergelogvinov/local-path-provisioner/deploy/chart/local-path-provisioner > vars/local-path-storage-result.yaml
|
||||
|
||||
helm template --namespace=ingress-nginx --version=4.6.0 -f vars/ingress.yaml ingress-nginx \
|
||||
helm template --namespace=ingress-nginx --version=4.7.0 -f vars/ingress.yaml ingress-nginx \
|
||||
ingress-nginx/ingress-nginx > vars/ingress-result.yaml
|
||||
|
||||
@@ -4,10 +4,10 @@ apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
labels:
|
||||
helm.sh/chart: ingress-nginx-4.6.0
|
||||
helm.sh/chart: ingress-nginx-4.7.0
|
||||
app.kubernetes.io/name: ingress-nginx
|
||||
app.kubernetes.io/instance: ingress-nginx
|
||||
app.kubernetes.io/version: "1.7.0"
|
||||
app.kubernetes.io/version: "1.8.0"
|
||||
app.kubernetes.io/part-of: ingress-nginx
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/component: controller
|
||||
@@ -20,10 +20,10 @@ apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
labels:
|
||||
helm.sh/chart: ingress-nginx-4.6.0
|
||||
helm.sh/chart: ingress-nginx-4.7.0
|
||||
app.kubernetes.io/name: ingress-nginx
|
||||
app.kubernetes.io/instance: ingress-nginx
|
||||
app.kubernetes.io/version: "1.7.0"
|
||||
app.kubernetes.io/version: "1.8.0"
|
||||
app.kubernetes.io/part-of: ingress-nginx
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/component: controller
|
||||
@@ -66,10 +66,10 @@ apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
labels:
|
||||
helm.sh/chart: ingress-nginx-4.6.0
|
||||
helm.sh/chart: ingress-nginx-4.7.0
|
||||
app.kubernetes.io/name: ingress-nginx
|
||||
app.kubernetes.io/instance: ingress-nginx
|
||||
app.kubernetes.io/version: "1.7.0"
|
||||
app.kubernetes.io/version: "1.8.0"
|
||||
app.kubernetes.io/part-of: ingress-nginx
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
name: ingress-nginx
|
||||
@@ -150,10 +150,10 @@ apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
labels:
|
||||
helm.sh/chart: ingress-nginx-4.6.0
|
||||
helm.sh/chart: ingress-nginx-4.7.0
|
||||
app.kubernetes.io/name: ingress-nginx
|
||||
app.kubernetes.io/instance: ingress-nginx
|
||||
app.kubernetes.io/version: "1.7.0"
|
||||
app.kubernetes.io/version: "1.8.0"
|
||||
app.kubernetes.io/part-of: ingress-nginx
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
name: ingress-nginx
|
||||
@@ -171,10 +171,10 @@ apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
labels:
|
||||
helm.sh/chart: ingress-nginx-4.6.0
|
||||
helm.sh/chart: ingress-nginx-4.7.0
|
||||
app.kubernetes.io/name: ingress-nginx
|
||||
app.kubernetes.io/instance: ingress-nginx
|
||||
app.kubernetes.io/version: "1.7.0"
|
||||
app.kubernetes.io/version: "1.8.0"
|
||||
app.kubernetes.io/part-of: ingress-nginx
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/component: controller
|
||||
@@ -264,10 +264,10 @@ apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
labels:
|
||||
helm.sh/chart: ingress-nginx-4.6.0
|
||||
helm.sh/chart: ingress-nginx-4.7.0
|
||||
app.kubernetes.io/name: ingress-nginx
|
||||
app.kubernetes.io/instance: ingress-nginx
|
||||
app.kubernetes.io/version: "1.7.0"
|
||||
app.kubernetes.io/version: "1.8.0"
|
||||
app.kubernetes.io/part-of: ingress-nginx
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/component: controller
|
||||
@@ -288,10 +288,10 @@ kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
labels:
|
||||
helm.sh/chart: ingress-nginx-4.6.0
|
||||
helm.sh/chart: ingress-nginx-4.7.0
|
||||
app.kubernetes.io/name: ingress-nginx
|
||||
app.kubernetes.io/instance: ingress-nginx
|
||||
app.kubernetes.io/version: "1.7.0"
|
||||
app.kubernetes.io/version: "1.8.0"
|
||||
app.kubernetes.io/part-of: ingress-nginx
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/component: controller
|
||||
@@ -325,10 +325,10 @@ apiVersion: apps/v1
|
||||
kind: DaemonSet
|
||||
metadata:
|
||||
labels:
|
||||
helm.sh/chart: ingress-nginx-4.6.0
|
||||
helm.sh/chart: ingress-nginx-4.7.0
|
||||
app.kubernetes.io/name: ingress-nginx
|
||||
app.kubernetes.io/instance: ingress-nginx
|
||||
app.kubernetes.io/version: "1.7.0"
|
||||
app.kubernetes.io/version: "1.8.0"
|
||||
app.kubernetes.io/part-of: ingress-nginx
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/component: controller
|
||||
@@ -352,10 +352,10 @@ spec:
|
||||
prometheus.io/port: "10254"
|
||||
prometheus.io/scrape: "true"
|
||||
labels:
|
||||
helm.sh/chart: ingress-nginx-4.6.0
|
||||
helm.sh/chart: ingress-nginx-4.7.0
|
||||
app.kubernetes.io/name: ingress-nginx
|
||||
app.kubernetes.io/instance: ingress-nginx
|
||||
app.kubernetes.io/version: "1.7.0"
|
||||
app.kubernetes.io/version: "1.8.0"
|
||||
app.kubernetes.io/part-of: ingress-nginx
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/component: controller
|
||||
@@ -363,7 +363,7 @@ spec:
|
||||
dnsPolicy: ClusterFirstWithHostNet
|
||||
containers:
|
||||
- name: controller
|
||||
image: "registry.k8s.io/ingress-nginx/controller:v1.7.0@sha256:7612338342a1e7b8090bef78f2a04fffcadd548ccaabe8a47bf7758ff549a5f7"
|
||||
image: "registry.k8s.io/ingress-nginx/controller:v1.8.0@sha256:744ae2afd433a395eeb13dc03d3313facba92e96ad71d9feaafc85925493fee3"
|
||||
imagePullPolicy: IfNotPresent
|
||||
lifecycle:
|
||||
preStop:
|
||||
@@ -376,6 +376,9 @@ spec:
|
||||
- --controller-class=k8s.io/ingress-nginx
|
||||
- --ingress-class=nginx
|
||||
- --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
|
||||
- --enable-topology-aware-routing=true
|
||||
- --post-shutdown-grace-period=30
|
||||
- --report-node-internal-ip-address=true
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
@@ -455,10 +458,10 @@ apiVersion: networking.k8s.io/v1
|
||||
kind: IngressClass
|
||||
metadata:
|
||||
labels:
|
||||
helm.sh/chart: ingress-nginx-4.6.0
|
||||
helm.sh/chart: ingress-nginx-4.7.0
|
||||
app.kubernetes.io/name: ingress-nginx
|
||||
app.kubernetes.io/instance: ingress-nginx
|
||||
app.kubernetes.io/version: "1.7.0"
|
||||
app.kubernetes.io/version: "1.8.0"
|
||||
app.kubernetes.io/part-of: ingress-nginx
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/component: controller
|
||||
|
||||
@@ -66,6 +66,11 @@ controller:
|
||||
prometheus.io/scrape: "true"
|
||||
prometheus.io/port: "10254"
|
||||
|
||||
extraArgs:
|
||||
report-node-internal-ip-address: "true"
|
||||
enable-topology-aware-routing: "true"
|
||||
post-shutdown-grace-period: 30
|
||||
|
||||
extraEnvs:
|
||||
- name: NODE_NAME
|
||||
valueFrom:
|
||||
|
||||
@@ -3,19 +3,3 @@ provider "azurerm" {
|
||||
features {}
|
||||
subscription_id = local.subscription_id
|
||||
}
|
||||
|
||||
# data "azurerm_virtual_machine_size" "size" {
|
||||
# name = "Standard_D2pls_v5"
|
||||
# location = "westeurope"
|
||||
# }
|
||||
|
||||
# resource "azurerm_linux_virtual_machine_scale_set" "worker" {
|
||||
|
||||
# source_image_reference {
|
||||
# location = "westeurope"
|
||||
# publisher = "Canonical"
|
||||
# offer = "0001-com-ubuntu-server-jammy"
|
||||
# sku = "22_04-lts-${data.azurerm_virtual_machine_size.size.architecture == "Arm64" ? "arm64" : "gen2"}"
|
||||
# version = "latest"
|
||||
# }
|
||||
# }
|
||||
|
||||
@@ -298,8 +298,10 @@ spec:
|
||||
- --cloud-provider=azure
|
||||
- --namespace=kube-system
|
||||
- --node-group-auto-discovery=label:cluster-autoscaler-enabled=true,cluster-autoscaler-name=talos-uksouth
|
||||
- --balance-similar-node-groups=true
|
||||
- --cloud-config=/etc/azure/azure.json
|
||||
- --logtostderr=true
|
||||
- --node-delete-delay-after-taint=30s
|
||||
- --regional=true
|
||||
- --stderrthreshold=info
|
||||
- --v=3
|
||||
|
||||
@@ -15,6 +15,8 @@ autoDiscovery:
|
||||
extraArgs:
|
||||
cloud-config: /etc/azure/azure.json
|
||||
regional: true
|
||||
balance-similar-node-groups: true
|
||||
node-delete-delay-after-taint: 30s
|
||||
logtostderr: true
|
||||
stderrthreshold: info
|
||||
v: 3
|
||||
|
||||
@@ -22,8 +22,8 @@ spec:
|
||||
run: overprovisioning
|
||||
spec:
|
||||
nodeSelector:
|
||||
node.cloudprovider.kubernetes.io/platform: azure
|
||||
project.io/node-pool: web
|
||||
# node.cloudprovider.kubernetes.io/platform: azure
|
||||
project.io/node-pool: worker
|
||||
affinity:
|
||||
podAntiAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
|
||||
@@ -6,7 +6,7 @@ resource "azurerm_availability_set" "controlplane" {
|
||||
resource_group_name = local.resource_group
|
||||
|
||||
platform_update_domain_count = 1
|
||||
platform_fault_domain_count = 3
|
||||
platform_fault_domain_count = 2
|
||||
|
||||
tags = merge(var.tags, { type = "infra" })
|
||||
}
|
||||
@@ -22,7 +22,7 @@ locals {
|
||||
region : region
|
||||
availability_set : azurerm_availability_set.controlplane[region].id
|
||||
|
||||
image : data.azurerm_shared_image_version.talos[length(regexall("^Standard_[DE][\\d+]p", lookup(try(var.controlplane[region], {}), "db_type", ""))) > 0 ? "Arm64" : "x64"].id
|
||||
image : data.azurerm_shared_image_version.talos[length(regexall("^Standard_[DE][\\d+]p", lookup(try(var.controlplane[region], {}), "type", ""))) > 0 ? "Arm64" : "x64"].id
|
||||
type : lookup(try(var.controlplane[region], {}), "type", "Standard_B2ms")
|
||||
|
||||
ip : 11 + inx
|
||||
@@ -117,7 +117,7 @@ resource "local_file" "controlplane" {
|
||||
for_each = local.controlplanes
|
||||
|
||||
content = templatefile("${path.module}/templates/controlplane.yaml.tpl",
|
||||
merge(var.kubernetes, {
|
||||
merge(var.kubernetes, var.acr, {
|
||||
name = each.value.name
|
||||
labels = local.controlplane_labels
|
||||
certSANs = flatten([
|
||||
@@ -170,7 +170,7 @@ resource "azurerm_linux_virtual_machine" "controlplane" {
|
||||
admin_username = "talos"
|
||||
admin_ssh_key {
|
||||
username = "talos"
|
||||
public_key = file("~/.ssh/terraform.pub")
|
||||
public_key = var.ssh_public_key
|
||||
}
|
||||
|
||||
source_image_id = length(each.value.image) > 0 ? each.value.image : null
|
||||
|
||||
@@ -15,10 +15,10 @@ resource "azurerm_linux_virtual_machine_scale_set" "db" {
|
||||
provision_vm_agent = false
|
||||
overprovision = false
|
||||
platform_fault_domain_count = 5
|
||||
proximity_placement_group_id = azurerm_proximity_placement_group.common[each.key].id
|
||||
proximity_placement_group_id = length(var.zones) == 1 ? azurerm_proximity_placement_group.common[each.key].id : null
|
||||
|
||||
# zone_balance = true
|
||||
# zones = ["0", "1", "2"]
|
||||
zone_balance = true
|
||||
zones = var.zones
|
||||
|
||||
network_interface {
|
||||
name = "db-${lower(each.key)}"
|
||||
@@ -47,7 +47,7 @@ resource "azurerm_linux_virtual_machine_scale_set" "db" {
|
||||
}
|
||||
|
||||
custom_data = base64encode(templatefile("${path.module}/templates/worker.yaml.tpl",
|
||||
merge(var.kubernetes, {
|
||||
merge(var.kubernetes, var.acr, {
|
||||
lbv4 = try(local.network_controlplane[each.key].controlplane_lb[0], "")
|
||||
labels = local.db_labels
|
||||
nodeSubnets = [local.network_public[each.key].cidr[0]]
|
||||
@@ -57,7 +57,7 @@ resource "azurerm_linux_virtual_machine_scale_set" "db" {
|
||||
admin_username = "talos"
|
||||
admin_ssh_key {
|
||||
username = "talos"
|
||||
public_key = file("~/.ssh/terraform.pub")
|
||||
public_key = var.ssh_public_key
|
||||
}
|
||||
|
||||
os_disk {
|
||||
|
||||
@@ -15,10 +15,10 @@ resource "azurerm_linux_virtual_machine_scale_set" "web" {
|
||||
provision_vm_agent = false
|
||||
overprovision = false
|
||||
platform_fault_domain_count = 5
|
||||
proximity_placement_group_id = azurerm_proximity_placement_group.common[each.key].id
|
||||
proximity_placement_group_id = length(var.zones) == 1 ? azurerm_proximity_placement_group.common[each.key].id : null
|
||||
|
||||
# zone_balance = false
|
||||
# zones = ["1"]
|
||||
zone_balance = length(var.zones) > 0
|
||||
zones = var.zones
|
||||
|
||||
# health_probe_id = local.network_public[each.key].sku != "Basic" ? azurerm_lb_probe.web[each.key].id : null
|
||||
# automatic_instance_repair {
|
||||
@@ -53,7 +53,7 @@ resource "azurerm_linux_virtual_machine_scale_set" "web" {
|
||||
}
|
||||
|
||||
custom_data = base64encode(templatefile("${path.module}/templates/worker.yaml.tpl",
|
||||
merge(var.kubernetes, {
|
||||
merge(var.kubernetes, var.acr, {
|
||||
lbv4 = try(local.network_controlplane[each.key].controlplane_lb[0], "")
|
||||
labels = local.web_labels
|
||||
nodeSubnets = [local.network_public[each.key].cidr[0]]
|
||||
@@ -63,7 +63,7 @@ resource "azurerm_linux_virtual_machine_scale_set" "web" {
|
||||
admin_username = "talos"
|
||||
admin_ssh_key {
|
||||
username = "talos"
|
||||
public_key = file("~/.ssh/terraform.pub")
|
||||
public_key = var.ssh_public_key
|
||||
}
|
||||
|
||||
os_disk {
|
||||
|
||||
@@ -15,10 +15,10 @@ resource "azurerm_linux_virtual_machine_scale_set" "worker" {
|
||||
provision_vm_agent = false
|
||||
overprovision = false
|
||||
platform_fault_domain_count = 5
|
||||
proximity_placement_group_id = azurerm_proximity_placement_group.common[each.key].id
|
||||
proximity_placement_group_id = length(var.zones) == 1 ? azurerm_proximity_placement_group.common[each.key].id : null
|
||||
|
||||
# zone_balance = false
|
||||
# zones = ["1"]
|
||||
zone_balance = length(var.zones) > 0
|
||||
zones = var.zones
|
||||
|
||||
# extension_operations_enabled = true
|
||||
# extension {
|
||||
@@ -65,7 +65,7 @@ resource "azurerm_linux_virtual_machine_scale_set" "worker" {
|
||||
}
|
||||
|
||||
custom_data = base64encode(templatefile("${path.module}/templates/worker.yaml.tpl",
|
||||
merge(var.kubernetes, {
|
||||
merge(var.kubernetes, var.acr, {
|
||||
lbv4 = try(local.network_controlplane[each.key].controlplane_lb[0], "")
|
||||
labels = local.worker_labels
|
||||
nodeSubnets = [local.network_private[each.key].cidr[0]]
|
||||
@@ -75,13 +75,13 @@ resource "azurerm_linux_virtual_machine_scale_set" "worker" {
|
||||
admin_username = "talos"
|
||||
admin_ssh_key {
|
||||
username = "talos"
|
||||
public_key = file("~/.ssh/terraform.pub")
|
||||
public_key = var.ssh_public_key
|
||||
}
|
||||
|
||||
os_disk {
|
||||
caching = "ReadOnly"
|
||||
storage_account_type = lookup(try(var.instances[each.key], {}), "worker_os_ephemeral", false) ? "Standard_LRS" : "StandardSSD_LRS"
|
||||
disk_size_gb = lookup(try(var.instances[each.key], {}), "worker_os_ephemeral", false) ? 32 : 50
|
||||
disk_size_gb = lookup(try(var.instances[each.key], {}), "worker_os_ephemeral", false) ? try(var.instances[each.key].worker_os_disk_size, 64) : 50
|
||||
|
||||
dynamic "diff_disk_settings" {
|
||||
for_each = lookup(try(var.instances[each.key], {}), "worker_os_ephemeral", false) ? ["Local"] : []
|
||||
@@ -115,3 +115,99 @@ resource "azurerm_linux_virtual_machine_scale_set" "worker" {
|
||||
ignore_changes = [instances, admin_username, admin_ssh_key, source_image_id]
|
||||
}
|
||||
}
|
||||
|
||||
resource "azurerm_linux_virtual_machine_scale_set" "worker_as" {
|
||||
for_each = { for idx, name in local.regions : name => idx }
|
||||
location = each.key
|
||||
|
||||
instances = lookup(try(var.instances[each.key], {}), "worker_count", 0)
|
||||
name = "worker-${lower(each.key)}-as"
|
||||
computer_name_prefix = "worker-${lower(each.key)}-as-"
|
||||
resource_group_name = local.resource_group
|
||||
sku = lookup(try(var.instances[each.key], {}), "worker_type", "Standard_B2s")
|
||||
provision_vm_agent = false
|
||||
overprovision = false
|
||||
platform_fault_domain_count = 1
|
||||
proximity_placement_group_id = length(var.zones) == 1 ? azurerm_proximity_placement_group.common[each.key].id : null
|
||||
|
||||
zone_balance = length(var.zones) > 0
|
||||
zones = var.zones
|
||||
|
||||
eviction_policy = "Delete"
|
||||
priority = "Spot"
|
||||
|
||||
network_interface {
|
||||
name = "worker-${lower(each.key)}-as"
|
||||
primary = true
|
||||
network_security_group_id = local.network_secgroup[each.key].common
|
||||
|
||||
enable_accelerated_networking = true
|
||||
ip_configuration {
|
||||
name = "worker-${lower(each.key)}-as-v4"
|
||||
primary = true
|
||||
version = "IPv4"
|
||||
subnet_id = local.network_private[each.key].network_id
|
||||
}
|
||||
ip_configuration {
|
||||
name = "worker-${lower(each.key)}-as-v6"
|
||||
version = "IPv6"
|
||||
subnet_id = local.network_private[each.key].network_id
|
||||
|
||||
dynamic "public_ip_address" {
|
||||
for_each = local.network_private[each.key].sku == "Standard" ? ["IPv6"] : []
|
||||
content {
|
||||
name = "worker-${lower(each.key)}-as-v6"
|
||||
version = public_ip_address.value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
custom_data = base64encode(templatefile("${path.module}/templates/worker.yaml.tpl",
|
||||
merge(var.kubernetes, var.acr, {
|
||||
lbv4 = try(local.network_controlplane[each.key].controlplane_lb[0], "")
|
||||
labels = local.worker_labels
|
||||
nodeSubnets = [local.network_private[each.key].cidr[0]]
|
||||
})
|
||||
))
|
||||
|
||||
admin_username = "talos"
|
||||
admin_ssh_key {
|
||||
username = "talos"
|
||||
public_key = var.ssh_public_key
|
||||
}
|
||||
|
||||
os_disk {
|
||||
caching = "ReadOnly"
|
||||
storage_account_type = "Standard_LRS"
|
||||
disk_size_gb = try(var.instances[each.key].worker_os_disk_size, 64)
|
||||
|
||||
diff_disk_settings {
|
||||
option = "Local"
|
||||
placement = "ResourceDisk"
|
||||
}
|
||||
}
|
||||
|
||||
source_image_id = data.azurerm_shared_image_version.talos[length(regexall("^Standard_[DE][\\d+]p", lookup(try(var.instances[each.key], {}), "worker_type", ""))) > 0 ? "Arm64" : "x64"].id
|
||||
# source_image_reference {
|
||||
# publisher = "talos"
|
||||
# offer = "Talos"
|
||||
# sku = "1.0-dev"
|
||||
# version = "latest"
|
||||
# }
|
||||
|
||||
tags = merge(var.tags, {
|
||||
type = "worker",
|
||||
"cluster-autoscaler-enabled" = "true",
|
||||
"cluster-autoscaler-name" = "${local.resource_group}-${lower(each.key)}",
|
||||
"min" = 0,
|
||||
"max" = 3,
|
||||
|
||||
"k8s.io_cluster-autoscaler_node-template_label_project.io_node-pool" = "worker"
|
||||
})
|
||||
|
||||
boot_diagnostics {}
|
||||
lifecycle {
|
||||
ignore_changes = [instances, admin_username, admin_ssh_key, source_image_id]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,13 @@ resource "azurerm_public_ip" "web_v4" {
|
||||
resource_group_name = local.resource_group
|
||||
sku = local.network_public[each.key].sku
|
||||
allocation_method = local.network_public[each.key].sku == "Standard" ? "Static" : "Dynamic"
|
||||
zones = local.network_public[each.key].sku == "Standard" ? var.zones : []
|
||||
|
||||
tags = merge(var.tags, { type = "web" })
|
||||
|
||||
lifecycle {
|
||||
ignore_changes = [zones]
|
||||
}
|
||||
}
|
||||
|
||||
resource "azurerm_lb" "web" {
|
||||
|
||||
@@ -25,7 +25,7 @@ output "controlplane_endpoint_public" {
|
||||
value = try(one([for ip in azurerm_public_ip.controlplane_v4 : ip.ip_address if ip.ip_address != ""]), "127.0.0.1")
|
||||
}
|
||||
|
||||
# output "web_endpoint" {
|
||||
# description = "Kubernetes controlplane endpoint"
|
||||
# value = compact([for lb in azurerm_public_ip.web_v4 : lb.ip_address])
|
||||
# }
|
||||
output "web_endpoint" {
|
||||
description = "Kubernetes controlplane endpoint"
|
||||
value = compact([for lb in azurerm_public_ip.web_v4 : lb.ip_address])
|
||||
}
|
||||
|
||||
9
azure/services/outputs.tf
Normal file
9
azure/services/outputs.tf
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
output "registry" {
|
||||
value = "${azurerm_container_registry.registry.name}.azurecr.io"
|
||||
}
|
||||
|
||||
output "registry_token" {
|
||||
value = azurerm_container_registry_token_password.containerd.password1[0].value
|
||||
sensitive = true
|
||||
}
|
||||
33
azure/services/registry.tf
Normal file
33
azure/services/registry.tf
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
resource "random_id" "registry" {
|
||||
byte_length = 8
|
||||
}
|
||||
|
||||
resource "azurerm_container_registry" "registry" {
|
||||
name = "registry${random_id.registry.hex}"
|
||||
resource_group_name = local.resource_group
|
||||
location = local.regions[0]
|
||||
sku = "Basic"
|
||||
admin_enabled = false
|
||||
|
||||
tags = var.tags
|
||||
}
|
||||
|
||||
data "azurerm_container_registry_scope_map" "pull" {
|
||||
name = "_repositories_pull"
|
||||
resource_group_name = local.resource_group
|
||||
container_registry_name = azurerm_container_registry.registry.name
|
||||
}
|
||||
|
||||
resource "azurerm_container_registry_token" "containerd" {
|
||||
name = "containerd"
|
||||
resource_group_name = local.resource_group
|
||||
container_registry_name = azurerm_container_registry.registry.name
|
||||
scope_map_id = data.azurerm_container_registry_scope_map.pull.id
|
||||
}
|
||||
|
||||
resource "azurerm_container_registry_token_password" "containerd" {
|
||||
container_registry_token_id = azurerm_container_registry_token.containerd.id
|
||||
|
||||
password1 {}
|
||||
}
|
||||
@@ -3,8 +3,8 @@ terraform {
|
||||
required_providers {
|
||||
azurerm = {
|
||||
source = "hashicorp/azurerm"
|
||||
version = "~> 3.40.0"
|
||||
version = "~> 3.62.1"
|
||||
}
|
||||
}
|
||||
required_version = ">= 1.2"
|
||||
required_version = ">= 1.5"
|
||||
}
|
||||
|
||||
@@ -57,6 +57,14 @@ machine:
|
||||
- os:reader
|
||||
allowedKubernetesNamespaces:
|
||||
- kube-system
|
||||
%{if acrRepo != "" }
|
||||
registries:
|
||||
config:
|
||||
${acrRepo}:
|
||||
auth:
|
||||
username: ${acrUsername}
|
||||
password: ${acrPassword}
|
||||
%{endif}
|
||||
cluster:
|
||||
adminKubeconfig:
|
||||
certLifetime: 8h0m0s
|
||||
@@ -102,6 +110,7 @@ cluster:
|
||||
manifests:
|
||||
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/_deployments/vars/talos-cloud-controller-manager-result.yaml
|
||||
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/azure/deployments/azure-cloud-controller-manager.yaml
|
||||
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/azure/deployments/azure-autoscaler-result.yaml
|
||||
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/azure/deployments/azuredisk-csi-driver-result.yaml
|
||||
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/azure/deployments/azuredisk-storage.yaml
|
||||
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/_deployments/vars/metrics-server-result.yaml
|
||||
|
||||
@@ -59,6 +59,14 @@ machine:
|
||||
keys:
|
||||
- nodeID: {}
|
||||
slot: 0
|
||||
%{if acrRepo != "" }
|
||||
registries:
|
||||
config:
|
||||
${acrRepo}:
|
||||
auth:
|
||||
username: ${acrUsername}
|
||||
password: ${acrPassword}
|
||||
%{endif}
|
||||
cluster:
|
||||
id: ${clusterID}
|
||||
secret: ${clusterSecret}
|
||||
|
||||
@@ -73,6 +73,27 @@ variable "kubernetes" {
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "acr" {
|
||||
type = map(string)
|
||||
default = {
|
||||
acrRepo = ""
|
||||
acrUsername = ""
|
||||
acrPassword = ""
|
||||
}
|
||||
}
|
||||
|
||||
variable "zones" {
|
||||
description = "The Azure zones"
|
||||
type = list(string)
|
||||
default = ["1", "3"]
|
||||
}
|
||||
|
||||
variable "ssh_public_key" {
|
||||
description = "The SSH-RSA public key, ssh-keygen -t rsa -b 2048 -f ~/.ssh/terraform -C 'terraform'"
|
||||
type = string
|
||||
default = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBx2qCSLlZ03TYqHm88pXZPyqZ3fvR1p2jWvsLt3uX+mBMr6B8S4vkX3oEBv43IEgi1bkIrdjJ50QvXNWS6fSOo6G0wZ0FHRCan3t4Kq2U+qoWkDsb5K0Kdgd9DZuaNM9412J2dWldYK7iD3hhQ3wh/E1gPlqrYb2AsPAarK+VA59n63QCDrpmGCW/Pki69e8Mt7HH/A1uw+4wvlrtaytrx6C3Y3/mQfBoas4XJliWHeTgEKeVdIzlOf9XrDnZ85pmvmQbFAtRtaRlfwCHMksVEwunYbg1RPrvQ8/YsSv6sFHwwvqjrJ7hdJcaa3afS3rUyAy7vkO0OXm4KdOEgE8X terraform"
|
||||
}
|
||||
|
||||
variable "instances" {
|
||||
description = "Map of region's properties"
|
||||
type = map(any)
|
||||
|
||||
@@ -39,7 +39,7 @@ spec:
|
||||
priorityClassName: overprovisioning
|
||||
containers:
|
||||
- name: reserve-resources
|
||||
image: registry.k8s.io/pause:3.6
|
||||
image: registry.k8s.io/pause:3.9
|
||||
resources:
|
||||
requests:
|
||||
cpu: "700m"
|
||||
|
||||
@@ -39,7 +39,7 @@ spec:
|
||||
priorityClassName: overprovisioning
|
||||
containers:
|
||||
- name: reserve-resources
|
||||
image: registry.k8s.io/pause:3.6
|
||||
image: registry.k8s.io/pause:3.9
|
||||
resources:
|
||||
requests:
|
||||
cpu: "700m"
|
||||
|
||||
Reference in New Issue
Block a user