IaC基础设施即代码:Terraform 创建ACK集群 与部署应用

这篇具有很好参考价值的文章主要介绍了IaC基础设施即代码:Terraform 创建ACK集群 与部署应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 一、实验

1.环境

2.Terraform 创建网络资源

3. 阿里云给RAM添加权限

4.Terraform 创建 ACK集群

5.在ACK集群中部署应用

6.销毁资源

二、问题

1.Terraform 验证失败

2.Terraform申请资源失败


 文章来源地址https://www.toymoban.com/news/detail-821889.html

 

 

 一、实验

1.环境

(1)主机

表1-1 主机

主机 系统 软件 工具 备注
jia

Windows 

Terraform 1.6.6 VS Code、 PowerShell、 Chocolatey  

 

2.Terraform 创建网络资源

(1)查看项目

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(2)网络配置文件

network.tf 

//VPC 专有网络
resource "alicloud_vpc" "vpc" {
  vpc_name   = "k8s_vpc"
  cidr_block = "172.16.0.0/12"
}

//switch 交换机
resource "alicloud_vswitch" "vsw" {
  vpc_id     = alicloud_vpc.vpc.id
  cidr_block = "172.16.0.0/16"
  zone_id    = "cn-hangzhou-j"
}

 

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(3) 版本配置文件

versions.tf

terraform {
  required_providers {
    alicloud = {
      source  = "aliyun/alicloud"
      version = "1.214.1"
    }
  }
}

# Configure the Alicloud Provider 默认供应商
provider "alicloud" {
  access_key = var.access_key
  secret_key = var.secret_key
  region     = "cn-hangzhou"
}

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(4)变量配置文件

variables.tf

variable "access_key" {
  description = "access_key"

}

variable "secret_key" {
  description = "secret_key"
}

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

(5) 密钥配置文件

terraform.tfvars

 

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(6)初始化

terraform init

 

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(7)格式化代码

terraform fmt

 

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(8)验证代码

terraform validate

 

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(9)计划与预览

 terraform plan

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

(10)申请资源

terraform apply

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

(11)登录阿里云系统查看VPC

VPC已新增1个 (cn-hangzhou)

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

交换机已新增1个 (cn-hangzhou)

 

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

3. 阿里云给RAM添加权限

(1)AliyunCSFullAcess

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(2)AliyunApiGatewayFullAcess

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(3)NATGatewayFullAcess

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

4.Terraform 创建 ACK集群

(1)查看alicloud provider 示例

Terraform Registry

托管版K8S 示例

……

resource "alicloud_cs_managed_kubernetes" "k8s" {
  name         = var.name
  cluster_spec = "ack.pro.small"
  # version can not be defined in variables.tf.
  version            = "1.26.3-aliyun.1"
  worker_vswitch_ids = length(var.vswitch_ids) > 0 ? split(",", join(",", var.vswitch_ids)) : length(var.vswitch_cidrs) < 1 ? [] : split(",", join(",", alicloud_vswitch.vswitches.*.id))
  pod_vswitch_ids    = length(var.terway_vswitch_ids) > 0 ? split(",", join(",", var.terway_vswitch_ids)) : length(var.terway_vswitch_cidrs) < 1 ? [] : split(",", join(",", alicloud_vswitch.terway_vswitches.*.id))
  new_nat_gateway    = true
  node_cidr_mask     = var.node_cidr_mask
  proxy_mode         = var.proxy_mode
  service_cidr       = var.service_cidr

  dynamic "addons" {
    for_each = var.cluster_addons
    content {
      name   = lookup(addons.value, "name", var.cluster_addons)
      config = lookup(addons.value, "config", var.cluster_addons)
    }
  }
}

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(2) 修改主配置文件

main.tf

locals {
  cluster_version = "1.26.3-aliyun.1"
  service_cidr    = "192.168.0.0/16"
  pod_cidr        = "10.212.0.0/16"
}

resource "alicloud_cs_managed_kubernetes" "k8s" {
  name                 = var.cluster_name
  version              = local.cluster_version  
  cluster_spec         = "ack.standard"
  worker_vswitch_ids   = [alicloud_vswitch.vsw.id] 
  new_nat_gateway      = true
  pod_cidr             = local.service_cidr
  service_cidr         = local.pod_cidr
  load_balancer_spec   = "slb.s1.small"
  slb_internet_enabled = true

  dynamic "addons" {
    for_each = var.cluster_addons
    content {
      name   = lookup(addons.value, "name", var.cluster_addons)
      config = lookup(addons.value, "config", var.cluster_addons)
    }
  }
}

resource "alicloud_cs_kubernetes_node_pool" "default" {
  name                 = var.nodepool_name
  cluster_id           = alicloud_cs_managed_kubernetes.k8s.id
  vswitch_ids          = [alicloud_vswitch.vsw.id]
  instance_types       = ["ecs.g6.xlarge"]
  system_disk_category = "cloud_efficiency"
  system_disk_size     = 40
  desired_size         = 1
  password             = "Admin@123"
  runtime_name         = "containerd"
  runtime_version      = "1.6.20"
}

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(3) 修改变量配置文件

variables.tf

variable "access_key" {
  description = "access_key"

}

variable "secret_key" {
  description = "secret_key"
}

variable "cluster_name" {
  default = "k8s_cluster_01"
}

variable "nodepool_name" {
  default = "k8s-nodepool"
}

variable "cluster_addons" {
  type = list(object({
    name   = string
    config = string
  }))

  default = [
    {
      "name"   = "flannel",
      "config" = "",
    },
    {
      "name"   = "csi-plugin",
      "config" = "",
    },
    {
      "name"   = "csi-provisioner",
      "config" = "",
    },
    {
      "name"   = "logtail-ds",
      "config" = "{'IngressDashboardEnabled':'true'}",
    },
    {
      "name"   = "nginx-ingress-controller",
      "config" = "{'IngressSlbNetworkType':'internet'}",
    },
    {
      "name"   = "arms-prometheus",
      "config" = "",
    },
    {
      "name"   = "ack-node-problem-detector",
      "config" = "{'sls_project_name':''}",
    }
  ]
}

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(4)  验证代码

terraform validate

 

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(5) 计划与预览

 terraform plan

 

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(6)申请资源

terraform apply

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

yes ,用时大约6分钟

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

(7) 登录阿里云系统查看ACK集群

初始化中

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

运行中

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(8)查看节点池

节点池

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

伸缩活动

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(9)查看命名空间

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(10)查看网络

服务 service

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

5.在ACK集群中部署应用

(1)查看目录

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(2)Terraform模板(docker)

Terraform Registry

USE PROVIDER

terraform {
  required_providers {
    kubernetes = {
      source = "hashicorp/kubernetes"
      version = "2.25.2"
    }
  }
}

provider "kubernetes" {
  # Configuration options
}

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(3)下载软件包

https://github.com/hashicorp/terraform-provider-kubernetes/releases

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(3)修改K8S集群配置文件

阿里云系统查看连接集群信息

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

复制上面的连接集群信息到clustera.config

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

(5)修改主配置文件

provider "kubernetes" {
  # Configuration options
  config_path    = "../config/clustera.config"
  config_context = "kubernetes-admin-c718a5ce282f94d539ee5ce1986370194"
  alias          = "clustera"
  insecure       = true
}

resource "kubernetes_namespace" "jenkins" {
  provider = kubernetes.clustera
  metadata {
    name = "devops"
  }
}

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

(6)修改版本配置文件

terraform {
  required_providers {
    kubernetes = {
      source = "hashicorp/kubernetes"
      version = "2.25.2"
    }
  }
}

provider "kubernetes" {
  # Configuration options
}

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(7)修改输出配置文件

output "service_name" {
  value = kubernetes_service_v1.jenkins.metadata[0].name

}

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(8)修改服务配置文件

jenkins.tf

resource "kubernetes_deployment_v1" "jenkins" {
  provider = kubernetes.clustera
  metadata {
    name = "jenkins"
    labels = {
      app = "jenkins"
    }
    namespace = kubernetes_namespace.jenkins.id
  }

  spec {
    replicas = 1

    selector {
      match_labels = {
        app = "jenkins"
      }
    }

    template {
      metadata {
        labels = {
          app = "jenkins"
        }
      }

      spec {
        container {
          image             = "jenkins/jenkins:latest"
          name              = "jenkins"
          image_pull_policy = "IfNotPresent"

          port {
            container_port = 8080
          }

          resources {
            limits = {
              cpu    = "1000m"
              memory = "4096Mi"
            }
            requests = {
              cpu    = "250m"
              memory = "1024Mi"
            }
          }
          #   liveness_probe {
          #     http_get {
          #       path = "/"
          #       port = 8080
          #     }
          #     initial_delay_seconds = 30
          #     period_seconds        = 3
          #   }
        }
      }
    }
  }
}


resource "kubernetes_service_v1" "jenkins" {
  provider = kubernetes.clustera
  metadata {
    name      = "jenkins-service"
    namespace = kubernetes_namespace.jenkins.id
  }
  spec {
    selector = {
      app = kubernetes_deployment_v1.jenkins.metadata[0].labels.app
    }
    port {
      port        = 8080
      target_port = 8080
    }

    type = "ClusterIP"
  }
}


resource "kubernetes_ingress_v1" "jenkins_ingress" {
  provider = kubernetes.clustera
  metadata {
    name      = "jenkins-ingress"
    namespace = kubernetes_namespace.jenkins.id
  }

  spec {
    rule {
      host = "jenkins.maojing.site"
      http {
        path {
          backend {
            service {
              name = kubernetes_service_v1.jenkins.metadata[0].name
              port {
                number = 8080
              }
            }
          }
          path_type = "Prefix"
          path = "/"
        }
      }
    }
  }
}

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(9)初始化

terraform init

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

(10)格式化代码

terraform fmt

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

(11)验证代码

terraform validate

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

(12)计划与预览

 terraform plan

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(13) 申请资源

terraform apply

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

yes , 4个资源将被添加

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(14)登录阿里云系统查看

命名空间新增1个 devops

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

工作负载(无状态deployment)新增1个jenkins

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

进入jenkins,状态为running

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

服务service

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

service关联路由

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

(15)修改输出配置文件

outputs.tf,添加如下代码

output "ingress_ip" {
  value = kubernetes_ingress_v1.jenkins_ingress.status[0].load_balancer[0].ingress[0].ip
}

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(16)计划与预览

 terraform plan

成功拿到ingress的ip

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

(17)添加DNS配置文件

dns.tf

#  DNS
resource "alicloud_dns_record" "record" {
  name        = "maojing.site"
  host_record = "jenkins"
  type        = "A"
  value       = kubernetes_ingress_v1.jenkins_ingress.status[0].load_balancer[0].ingress[0].ip
}

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(18) 添加变量配置文件

variables.tf

variable "access_key" {
  description = "access_key"

}

variable "secret_key" {
  description = "secret_key"
}

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(19) 修改版本配置文件

terraform {
  required_providers {
    kubernetes = {
      source  = "hashicorp/kubernetes"
      version = "2.25.2"
    }
    alicloud = {
      source  = "aliyun/alicloud"
      version = "1.214.1"
    }
  }
}

provider "kubernetes" {
  # Configuration options
}

# Configure the Alicloud Provider 默认供应商
provider "alicloud" {
  access_key = var.access_key
  secret_key = var.secret_key
  region     = "cn-hangzhou"
}

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(20)初始化

terraform init

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(21)格式化代码

terraform fmt

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(22)验证代码

terraform validate

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(23)计划与预览

 terraform plan

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(24)申请资源

terraform apply

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

yes

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(25)阿里云系统查看

域名解析已新增

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(26)dig测试DNS

dig jenkins.maojing.site

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(27) 浏览器测试

显示Jenkins安装界面

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(28) 查看集群监控

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

6.销毁资源

(1)销毁服务资源

terraform destroy

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

yes

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(2)登录阿里云系统

DNS解析已删除

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

devops命名空间已删除

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

(3)销毁集群资源

terraform destroy

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

yes ,用时大约5分钟

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(4)登录阿里云系统查看集群

删除中

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

已删除

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

二、问题

1.Terraform 验证失败

(1)报错

╷
│ Error: "availability_zone": [REMOVED] Field 'availability_zone' has been removed from provider version 1.212.0.
│
│   with alicloud_cs_managed_kubernetes.k8s,
│   on main.tf line 7, in resource "alicloud_cs_managed_kubernetes" "k8s":
│    7: resource "alicloud_cs_managed_kubernetes" "k8s" {

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

│ Error: "availability_zone": [REMOVED] Field 'availability_zone' has been removed from provider version 1.212.0.
│
│   with alicloud_cs_managed_kubernetes.k8s,
│   on main.tf line 7, in resource "alicloud_cs_managed_kubernetes" "k8s":
│    7: resource "alicloud_cs_managed_kubernetes" "k8s" {

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

│ Error: "runtime": [REMOVED] Field 'runtime' has been removed from provider version 1.212.0. Please use resource 'alicloud_cs_kubernetes_node_pool' to manage cluster nodes, by using field 'runtime_name' and 'runtime_version' to replace it.
│
│   with alicloud_cs_managed_kubernetes.k8s,
│   on main.tf line 7, in resource "alicloud_cs_managed_kubernetes" "k8s":
│    7: resource "alicloud_cs_managed_kubernetes" "k8s" {

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(2)原因分析

Terraform Registry

从1.212版本开始,部分关键地段被移除,推荐使用alicloud_cs_kubernetes_node_pool 管理工作节点。

From version 1.212.0, runtime,enable_ssh,rds_instances,exclude_autoscaler_nodes,worker_number,worker_instance_types,password,key_name,kms_encrypted_password,kms_encryption_context,worker_instance_charge_type,worker_period,worker_period_unit,worker_auto_renew,worker_auto_renew_period,worker_disk_category,worker_disk_size,worker_data_disks,node_name_mode,node_port_range,os_type,platform,image_id,cpu_policy,user_data,taints,worker_disk_performance_level,worker_disk_snapshot_policy_id,install_cloud_monitor,kube_config,availability_zone are removed. Please use resource alicloud_cs_kubernetes_node_pool to manage your cluster worker nodes.

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(3)解决方法

修改配置文件。

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

2.Terraform申请资源失败

(1)报错

Error: [ERROR] terraform-provider-alicloud/alicloud/resource_alicloud_cs_kubernetes.go:1230: Resource c28e6d5ac0cf64922a476e6963f1239b8 DescribeNatGateways Failed!!! [SDK alibaba-cloud-sdk-go ERROR]:
│ SDK.ServerError
│ ErrorCode: Forbidden.RAM
│ Recommend: https://api.aliyun.com/troubleshoot?q=Forbidden.RAM&product=Vpc&requestId=0254494A-FE5F-51C9-96DA-394123C37E13
│ RequestId: 0254494A-FE5F-51C9-96DA-394123C37E13
│ Message: User not authorized to operate on the specified resource, or this API doesn't support RAM.
│ RespHeaders: map[Access-Control-Allow-Origin:[*] Access-Control-Expose-Headers:[*] Connection:[keep-alive] Content-Length:[568] Content-Type:[application/json;charset=utf-8] Date:[Tue, 23 Jan 2024 05:11:28 GMT] Keep-Alive:[timeout=25] X-Acs-Request-Id:[0254494A-FE5F-51C9-96DA-394123C37E13] X-Acs-Trace-Id:[740d51a284c42eb37e67556a9d62faa6]]
│ AccessDeniedDetail: map[AuthPrincipalDisplayName:205814005146961779 AuthPrincipalOwnerId:1889388625243280 AuthPrincipalType:SubUser EncodedDiagnosticMessage:AQEAAAAAZa9KgzAyNTQ0OTRBLUZFNUYtNTFDOS05NkRBLTM5NDEyM0MzN0UxMw==]
│
│   with alicloud_cs_managed_kubernetes.k8s,
│   on main.tf line 7, in resource "alicloud_cs_managed_kubernetes" "k8s":
│    7: resource "alicloud_cs_managed_kubernetes" "k8s" {

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

(2)原因分析

RAM缺少NATGatewayFullAcess权限

(3)解决方法

RAM添加NATGatewayFullAcess权限。

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

重新申请资源

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

yes,先删除旧的实例

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

开始创建新实例

IaC基础设施即代码:Terraform 创建ACK集群 与部署应用,IaC基础设施即代码,terraform,云原生,云计算,运维

 

 

到了这里,关于IaC基础设施即代码:Terraform 创建ACK集群 与部署应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 揭秘Karmada百倍集群规模多云基础设施体系

    摘要: 本文结合Karmada社区对大规模场景的思考,揭示Karmada稳定支持100个大规模集群、管理超过50万个节点和200万个Pod背后的原理 本文分享自华为云社区《Karmada百倍集群规模多云基础设施体系揭秘》,作者: 云容器大未来 。 随着云原生技术在越来越多的企业和组织中的大规

    2024年02月03日
    浏览(36)
  • 微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台

    通过采用微服相关架构构建一套以Kubernetes+Docker为自动化运维基础平台,以微服务为服务中心,在此基础之上构建业务中台,并通过Jekins自动构建、编译、测试、发布的自动部署,形成一套完整的自动化运维、发布的快速DevOps平台。 本文是基于Kubernets集群基础上来部署Kubesp

    2024年02月04日
    浏览(74)
  • 网络基础设施 & 拥塞控制

    我经常说,传统的 TCP 优化已经到顶,不会有大意义了,这有两方面意思。 一方面,内在的,TCP 的 ACK 时钟带回的信息就那么多,用足了又能怎样。一个学习最差的差生能控制的分数是是 0~100 分的区间,宽度足足 100 分,他控制不了自己能考多少分,而一个学习最好的学生

    2024年02月02日
    浏览(46)
  • 公开密钥基础设施PKI

    公开密钥基础设施(PKI,Public Key Infrastructure),是以不对称密钥加密技术为基础,以数据机密性、完整性、身份认证和行为不可抵赖性为安全目的,来实施和提供安全服务的、具有普适性的安全基础设施。具体内容包括: 数字证书 不对称密钥密码技术 认证中心 证书和密钥

    2023年04月08日
    浏览(84)
  • 云计算概论 -- 云基础设施机制

    逻辑网络边界 虚拟服务器 云存储设备 云使用监控 资源复制 一、逻辑网络边界 (一)逻辑网络边界 逻辑网络边界是将一个网络环境与通信网络的其他部分隔离开来,形成一个虚拟网络边界,它包含并隔离了一组相关的基于云的IT资源,这些资源在物理上可能是分布式的。 逻辑

    2023年04月08日
    浏览(51)
  • 大数据基础设施搭建 - Hbase

    首先保证Zookeeper和Hadoop正常运行 新增内容: 使环境变量生效: 不使用hbase内置的zookeeper,使用独立zookeeper 内容: 表明zookeeper集群,hbase web访问路径 内容: regionserver所在机器 内容: 8.3.1 创建表 在first_namespace命名空间中创建表格student,两个列族。info列族数据维护的版本数

    2024年01月24日
    浏览(54)
  • 云计算基础设施总体架构介绍

    云计算基础设施是指由硬件资源和资源抽象控制组件构成的支撑云计算的基础设施,包括为云服务客户提供计算资源、存储资源、网络资源、安全资源所需的软硬件设备及云管理平台。云计算基础设施总体架构如图1 所示。 图1 云计算基础设施总体架构  资源池包括计算资源

    2024年02月11日
    浏览(39)
  • 大数据基础设施搭建 - Redis

    redis是用c写的,因此安装redis需要c语言的编译环境,即需要安装gcc 内容: key:string value:string、list、set、zset、hash 有序可重复 无序不重复 有序不重复,就是在set的基础上,给每个元素绑定了一个分数,按照分数由低到高排序 RDB为快照备份,会在备份时将内存中的所有数据

    2024年01月23日
    浏览(38)
  • 大数据基础设施搭建 - Spark

    内容: 到YARN WEB页面查看任务提交情况 内容: 4.3.1 启动SparkSQL客户端(Yarn方式) 4.3.2 启动Hive客户端 优势在哪里??

    2024年04月09日
    浏览(49)
  • 抛弃对外依赖,OpenEular(欧拉)操作系统为企业搭建独立的K8S集群环境! 容器编排平台丨Kubernetes 丨自主可控的云计算系统丨容器化技术丨 新一代云计算基础设施丨分布式应用部署和管理

    需要提前准备好OpenEular操作系统虚拟机3台,本文使用模板机创建。 如今,随着云计算、大数据、人工智能等技术的快速发展,越来越多的企业开始使用容器化技术来提高开发和交付速度。而Kubernetes则成为了最受欢迎的容器编排平台之一。然而,许多企业往往将Kubernetes部署在

    2024年02月11日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包