- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用单个 Terraform 脚本来部署 AKS 和应用程序网关。到目前为止,一切都按预期工作,我需要的最后一件事是在 AKS 和应用程序网关之间配置 vnet 对等互连。
根据 Terraform 的文档,vnet 对等需要 AKS vnet 名称和 ID:
# AppGw to AKS
resource "azurerm_virtual_network_peering" "appgw_aks_peering" {
name = "appgw-aks-peer"
resource_group_name = "my-appgw-rg"
virtual_network_name = azurerm_virtual_network.my_vnet.name
remote_virtual_network_id = ???
}
# AKS to AppGw
resource "azurerm_virtual_network_peering" "aks_appgw_peering" {
name = "aks-appgw-peer"
resource_group_name = "my-aksnode-rg"
virtual_network_name = ???
remote_virtual_network_id = azurerm_virtual_network.my_vnet.id
}
resource "azurerm_kubernetes_cluster" "my_cluster" {
name = "my-aks"
location = "australiaeast"
resource_group_name = "my-aks-rg"
node_resource_group = "my-aksnode-rg"
addon_profile {
ingress_application_gateway {
enabled = true
gateway_id = azurerm_application_gateway.my_appgw.id
}
}
default_node_pool {
name = "np01"
node_count = 1
os_disk_size_gb = 30
vm_size = var.aks_np_vm_sku
}
...
}
我遇到的问题是创建 AKS 时会自动创建 AKS vnet,并且名称或 ID 都不会导出到任何地方。我找不到使用 Terraform 获取 AKS vnet 名称或 ID 的方法。有人可以指出我正确的方向或建议替代解决方案吗?
最佳答案
由于无法从 AKS 群集的资源 block 获取 Vnet ID,因此您也可以为 AKS 创建 vnet 和子网,并在默认节点池 block 中创建群集时使用它,如下所示:
default_node_pool {
name = "np01"
node_count = 1
os_disk_size_gb = 30
vm_size = var.aks_np_vm_sku
vnet_subnet_id = azurerm_subnet.aks.id
}
因此,根据您的要求,.tf 文件将如下所示:
provider "azurerm" {
features{}
}
data "azurerm_resource_group" "name" {
name = "resourcegroupname"
}
resource "azurerm_virtual_network" "aks" {
name = "aks-vnet"
location = data.azurerm_resource_group.name.location
resource_group_name = data.azurerm_resource_group.name.name
address_space = ["10.0.0.0/16"]
}
resource "azurerm_subnet" "aks" {
name = "aks-subnet"
resource_group_name = data.azurerm_resource_group.name.name
virtual_network_name = data.azurerm_resource_group.name.location
address_prefixes = ["10.0.1.0/24"]
}
resource "azurerm_virtual_network" "appgw" {
name = "appgw-vnet"
location = data.azurerm_resource_group.name.location
resource_group_name = data.azurerm_resource_group.name.name
address_space = ["10.254.0.0/16"]
}
resource "azurerm_subnet" "frontend" {
name = "frontend"
resource_group_name = data.azurerm_resource_group.name.name
virtual_network_name = azurerm_virtual_network.appgw.name
address_prefixes = ["10.254.0.0/24"]
}
resource "azurerm_subnet" "backend" {
name = "backend"
resource_group_name = data.azurerm_resource_group.name.name
virtual_network_name = azurerm_virtual_network.appgw.name
address_prefixes = ["10.254.2.0/24"]
}
resource "azurerm_public_ip" "example" {
name = "example-pip"
resource_group_name = data.azurerm_resource_group.name.name
location = data.azurerm_resource_group.name.location
allocation_method = "Dynamic"
}
# since these variables are re-used - a locals block makes this more maintainable
locals {
backend_address_pool_name = "${azurerm_virtual_network.appgw.name}-beap"
frontend_port_name = "${azurerm_virtual_network.appgw.name}-feport"
frontend_ip_configuration_name = "${azurerm_virtual_network.appgw.name}-feip"
http_setting_name = "${azurerm_virtual_network.appgw.name}-be-htst"
listener_name = "${azurerm_virtual_network.appgw.name}-httplstn"
request_routing_rule_name = "${azurerm_virtual_network.appgw.name}-rqrt"
redirect_configuration_name = "${azurerm_virtual_network.appgw.name}-rdrcfg"
}
resource "azurerm_application_gateway" "network" {
name = "example-appgateway"
resource_group_name = data.azurerm_resource_group.name.name
location = data.azurerm_resource_group.name.location
sku {
name = "Standard_Small"
tier = "Standard"
capacity = 2
}
gateway_ip_configuration {
name = "my-gateway-ip-configuration"
subnet_id = azurerm_subnet.frontend.id
}
frontend_port {
name = local.frontend_port_name
port = 80
}
frontend_ip_configuration {
name = local.frontend_ip_configuration_name
public_ip_address_id = azurerm_public_ip.example.id
}
backend_address_pool {
name = local.backend_address_pool_name
}
backend_http_settings {
name = local.http_setting_name
cookie_based_affinity = "Disabled"
path = "/path1/"
port = 80
protocol = "Http"
request_timeout = 60
}
http_listener {
name = local.listener_name
frontend_ip_configuration_name = local.frontend_ip_configuration_name
frontend_port_name = local.frontend_port_name
protocol = "Http"
}
request_routing_rule {
name = local.request_routing_rule_name
rule_type = "Basic"
http_listener_name = local.listener_name
backend_address_pool_name = local.backend_address_pool_name
backend_http_settings_name = local.http_setting_name
}
}
resource "azurerm_virtual_network_peering" "appgw_aks_peering" {
name = "appgw-aks-peer"
resource_group_name = data.azurerm_resource_group.name.name
virtual_network_name = azurerm_virtual_network.appgw.id
remote_virtual_network_id = azurerm_virtual_network.aks.id
}
# AKS to AppGw
resource "azurerm_virtual_network_peering" "aks_appgw_peering" {
name = "aks-appgw-peer"
resource_group_name = data.azurerm_resource_group.name.name
virtual_network_name = azurerm_virtual_network.aks.id
remote_virtual_network_id = azurerm_virtual_network.appgw.id
}
resource "azurerm_kubernetes_cluster" "my_cluster" {
name = "my-aks"
location = data.azurerm_resource_group.name.location
resource_group_name = data.azurerm_resource_group.name.name
dns_prefix = "dns-myaks"
addon_profile {
ingress_application_gateway {
enabled = true
gateway_id = azurerm_application_gateway.network.id
}
}
default_node_pool {
name = "np01"
node_count = 1
os_disk_size_gb = 30
vm_size = "Standard_D2_v2"
vnet_subnet_id = azurerm_subnet.aks.id
}
identity {
type = "SystemAssigned"
}
}
输出:
关于azure - Terraform - 如何查找用于网络对等互连的 Azure Kubernetes AKS vnet ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69158600/
我使用“创建 Kubernetes 集群”功能在 Azure 门户中创建了我的 AKS 集群,并允许它创建新的服务主体。 我开始怀疑这个主体使用的凭据是否过期。为了避免 K8s 在凭证到期时与 Azu
文档描述了如何将 ACR 附加到现有的 AKS 群集,https://learn.microsoft.com/en-us/azure/aks/cluster-container-registry-in
我创建了一个 AKS 集群,并启用了 AKS 管理的 Azure Active Directory 和基于角色的访问控制 (RBAC)。如果我尝试使用 Admin Azure AD 组中包含的其中一个
因此,我可以在 AKS 的见解选项卡中清楚地看到每个容器的统计信息。这些必须来自某个地方,但我只能在查询日志/指标时找到每个节点的统计信息。我如何查询这个(为了构建一个工作簿)。 最佳答案 该数据位于
我遇到的情况是,我的 AKS 集群已经就位,有两个 AKS 集群,并且它们仅在其安全区域内部可用。我不想通过互联网从另一个集群访问集群内的内部资源。 我正在探索专用链接服务和端点,有什么建议吗? 两个
好吧,在过去的两天里,我一直在与这个文档作斗争: https://learn.microsoft.com/en-au/azure/aks/static-ip和 https://learn.micros
我正在尝试找出使用 AKS 和 VSTS 为 Asp.Net Core Web 应用程序设置 CI/CD 的步骤。 https://learn.microsoft.com/en-us/vsts/bui
我遇到的情况是,我的 AKS 集群已经就位,有两个 AKS 集群,并且它们仅在其安全区域内部可用。我不想通过互联网从另一个集群访问集群内的内部资源。 我正在探索专用链接服务和端点,有什么建议吗? 两个
只是一个问题,在微软页面上 https://learn.microsoft.com/en-us/azure/aks/configure-kubenet#bring-your-own-subnet-an
kubectl 任务无法将 list 文件部署到 AKS。管道失败并出现以下错误 ##[错误]未找到与/home/vsts/work/1/s/manifests 匹配的配置文件。 管道在运行两个阶段(
我一直在尝试设置 Kubernetes 1.13 AKS 部署以使用 HPA,但我一直遇到问题: NAME REFERENCE
我们公司封锁了 ssh 端口。如何使用 cloud shell ssh 进入 AKS 集群,以便我们可以从那里 curl 到外部 URL 来测试连接?谢了。 最佳答案 这实际上没有多大意义,但您只需要
我正在通过 azure 安装 istio az aks mesh enable --resource-group 'myrg' --name 'myk8s' 然后启用外部 istio 入口网关 az
查看地形 documentation我无法确定如何将 UAMI 分配为 kubelet_identity对于aks集群。 identity { ... }按照描述设置 controlPlane UAM
我正在通过 azure 安装 istio az aks mesh enable --resource-group 'myrg' --name 'myk8s' 然后启用外部 istio 入口网关 az
查看地形 documentation我无法确定如何将 UAMI 分配为 kubelet_identity对于aks集群。 identity { ... }按照描述设置 controlPlane UAM
我们可以从 Log Analytics Workspace 访问 pod 相关日志,但没有应用程序日志(类似于我们在 kubectl get events 中看到的)。 我指的是 Azure 文档,但
az aks create -n MyServices -g MyKubernetes --generate-ssh-keys 不工作。错误消息:az aks create -n Adestis-Se
我想知道如何通过 ssh 连接到 GKE 和 AKS 中的节点,以及如何在 Kubernetes 集群中安装 ELK 堆栈。 任何一步一步的链接都会对我有帮助。 无法使用此命令连接:gcloud co
使用azure aks get-credentials --admin可以获取kubernetes管理配置文件,azure aks get-credentials只能获取azure上的用户配置文件。
我是一名优秀的程序员,十分优秀!