gpt4 book ai didi

Azure Kubernetes 服务 : Setup an Internal load balancer with static IP address

转载 作者:行者123 更新时间:2023-12-03 01:14:52 25 4
gpt4 key购买 nike

我使用以下 Terraform 代码创建了一个 Azure kubernetes 集群

# Required Provider
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 3.0.2"
}
}
required_version = ">= 1.1.0"
}

data "azurerm_client_config" "current" {}

provider "azurerm" {
subscription_id = local.subscription_id
tenant_id = local.tenant_id
client_id = local.client_id
client_secret = local.client_secret

features {}
}

resource "random_pet" "rg-name" {
prefix = var.resource_group_name_prefix
}

resource "azurerm_resource_group" "rg" {
name = random_pet.rg-name.id
location = var.resource_group_location
}

resource "azurerm_virtual_network" "test" {
name = var.virtual_network_name
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
address_space = [var.virtual_network_address_prefix]

subnet {
name = var.aks_subnet_name
address_prefix = var.aks_subnet_address_prefix
}

tags = var.tags
}

data "azurerm_subnet" "kubesubnet" {
name = var.aks_subnet_name
virtual_network_name = azurerm_virtual_network.test.name
resource_group_name = azurerm_resource_group.rg.name
depends_on = [azurerm_virtual_network.test]
}

resource "azurerm_kubernetes_cluster" "k8s" {
name = var.aks_name
location = azurerm_resource_group.rg.location
dns_prefix = var.aks_dns_prefix
private_cluster_enabled = var.private_cluster
resource_group_name = azurerm_resource_group.rg.name

http_application_routing_enabled = false

linux_profile {
admin_username = var.vm_user_name

ssh_key {
key_data = file(var.public_ssh_key_path)
}
}

default_node_pool {
name = "agentpool"
node_count = var.aks_agent_count
vm_size = var.aks_agent_vm_size
os_disk_size_gb = var.aks_agent_os_disk_size
vnet_subnet_id = data.azurerm_subnet.kubesubnet.id
}

service_principal {
client_id = local.client_id
client_secret = local.client_secret
}

network_profile {
network_plugin = "azure"
dns_service_ip = var.aks_dns_service_ip
docker_bridge_cidr = var.aks_docker_bridge_cidr
service_cidr = var.aks_service_cidr
load_balancer_sku = "standard"
}

# Enabled the cluster configuration to the Azure kubernets with RBAC
azure_active_directory_role_based_access_control {
managed = var.azure_active_directory_role_based_access_control_managed
admin_group_object_ids = var.active_directory_role_based_access_control_admin_group_object_ids
azure_rbac_enabled = var.azure_rbac_enabled
}

timeouts {
create = "20m"
delete = "20m"
}

depends_on = [data.azurerm_subnet.kubesubnet,module.log_analytics_workspace]
tags = var.tags
}

它使用公共(public) IP 创建负载均衡器,如下所示

enter image description here

但是,我不想让负载均衡器拥有公共(public) IP,而是应该拥有内部专用 IP。

enter image description here

我应该怎么做才能让这个负载均衡器具有内部私有(private) IP 并且服务不会使用公共(public) IP 通过互联网公开?

注意:根据 Microsoft documentation ,即使您使用 annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" 进行注释,仍然会分配外部 IP,这是我试图避免的。

最佳答案

使用 AKS 群集(通常称为 kubernetes)创建的负载均衡器用于导出(而非入口)流量,并且是公共(public) LB,并且不能是私有(private)的。这是出站类型配置的一部分。

AKS 群集的“出站类型”可以设置为“LoadBalancer、UserDefinedRouting 或 ManagedNatGateway”。如果您选择 LB 以外的任何选项,则需要配置网络以在外部路由流量。检查this doc了解更多信息。

对于入口流量,您可以选择使用公共(public)或私有(private) LB。这是在 kubernetes 下的服务资源(LoadBalancer 类型)中配置的,您可以在其中使用您提到的注释来创建私有(private) LB。公共(public)规则将使用与集群创建的相同公共(public)负载均衡。

您也可以使用注释设置LB的私有(private)IP:

  annotations:
service.beta.kubernetes.io/azure-load-balancer-ipv4: 10.240.0.25
service.beta.kubernetes.io/azure-load-balancer-internal: "true"

same doc 中提到了这一点您分享的。

关于Azure Kubernetes 服务 : Setup an Internal load balancer with static IP address,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75363487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com