我一直在尝试使用Terraform部署Aks集群。以下是我的模板文件:
main.tf
locals {
cluster_name = "aks-${random_integer.random_int.result}"
agents_resource_group_name = "MC_${var.resource_group_name}_${local.cluster_name}_${azurerm_resource_group.k8s.location}"
}
resource "azurerm_resource_group" "k8s" {
name = "${var.resource_group_name}"
location = "${var.resource_group_location}"
}
#Keep the AKS name (and dns label) somewhat unique
resource "random_integer" "random_int" {
min = 100
max = 999
}
resource "azurerm_kubernetes_cluster" "k8s" {
name = "${local.cluster_name}"
location = "${azurerm_resource_group.k8s.location}"
resource_group_name = "${azurerm_resource_group.k8s.name}"
dns_prefix = "${local.cluster_name}"
linux_profile {
admin_username = "${var.linux_admin_username}"
ssh_key {
key_data = "${file("${var.linux_admin_ssh_publickey}")}"
}
}
agent_pool_profile {
name = "agentpool"
count = "${var.node_count}"
vm_size = "${var.vm_size}"
os_type = "Linux"
os_disk_size_gb = "${var.os_disk_size_gb}"
}
service_principal {
client_id = "${var.client_id}"
client_secret = "${var.client_secret}"
}
tags {
Environment = "Production"
}
}
data "azurerm_resource_group" "agents" {
name = "${local.agents_resource_group_name}"
depends_on = [
"azurerm_kubernetes_cluster.k8s",
]
}
这些变量都是正确的,因为我对此没有任何错误。大约2m之后我一直收到的错误是
azurerm_kubernetes_cluster.k8s:等待完成的错误 托管的Kubernetes集群“ aks-136”(资源组“ azure-aks”): Code =“ NotFound” Message =“ resources.DeploymentsClient#Get:失败 响应请求:StatusCode = 404-原始错误: autorest / azure:服务返回了错误。状态= 404 代码= \“ DeploymentNotFound \”消息= \“部署 找不到'898a5255-0c27-4eed-963a-65183e7d693c”。\“
似乎azure API拒绝响应,也许terraform将其识别为错误和恐慌。
答案 0 :(得分:0)
从错误显示中,似乎您的部署失败。我这方面有两个可能的原因。一是您的配额还不够。另一个是您部署的区域至少当前不支持AKS。
答案 1 :(得分:0)
尝试以下代码
#variables file
arm_subscription_id = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"
arm_client_id = "XXXXXXXXXXXXXXXXXXXXXXX"
arm_client_secret = "XXXXXXXXXXXXXXXXXXX"
arm_tenent_id = "XXXXXXXXXXXXXXX"
resource_group_name = "k8terraform"
location = "East US"
cluster_name = "k8terraform"
dns_prifix = "k8terraform1232"
#Running on a Windows add front slash to ignore characters
ssh_public_key = "E:\\DevOps\\Terraform\\Azure\\AKS\\aksdeploy"
agent_count = 3
#Variable
variable "arm_subscription_id" {
}
variable "arm_client_id" {
}
variable "arm_client_secret" {
}
variable "arm_tenent_id" {
}
variable "location" {
}
variable "cluster_name" {
}
variable "dns_prifix" {
}
variable "ssh_public_key" {
}
variable "agent_count" {
default = 3
}
variable "resource_group_name" {
}
#Add Azure Provider
provider "azurerm" {
}
#Create Resource Group
resource "azurerm_resource_group" "k8terraform" {
name = "${var.resource_group_name}"
location = "${var.location}"
}
#Create AKS Cluster
resource "azurerm_kubernetes_cluster" "k8cluster" {
name = "${var.cluster_name}"
location = "${azurerm_resource_group.k8terraform.location}"
resource_group_name = "${azurerm_resource_group.k8terraform.name}"
dns_prefix = "${var.dns_prifix}"
linux_profile{
admin_username = "localadmin"
ssh_key{
key_data = "${file("${var.ssh_public_key}")}"
}
}
agent_pool_profile{
name = "aksterraform"
count = "${var.agent_count}"
vm_size = "Standard_B2ms"
os_type = "Linux"
os_disk_size_gb = 30
}
service_principal{
client_id = "${var.arm_client_id}"
client_secret = "${var.arm_client_secret}"
}
tags{
Environment = "Development"
}
}
#Outputs -Optional
#output "kube_config" {
# value = "${azurerm_kubernetes_cluster.k8s.kube_config_raw}"
#}
#output "host" {
# value = "${azurerm_kubernetes_cluster.k8s.kube_config.0.host}"
#}