Terraform 编排K8s资源

举报
kaliarch 发表于 2022/05/14 12:32:15 2022/05/14
【摘要】 一 背景Kubernetes (K8S)提供程序用于与 Kubernetes 支持的资源进行交互。在使用提供程序之前,需要用适当的凭据对其进行配置。 二 支持资源Terraform支持完整的Kubernetes 资源。 三 认证方式面向各种云提供商的 Terraform 提供商提供资源,以便将托管的 Kubernetes 集群提升到 EKS、 AKS 和 GKE 等服务上。这些资源(或数据...

一 背景

Kubernetes (K8S)提供程序用于与 Kubernetes 支持的资源进行交互。在使用提供程序之前,需要用适当的凭据对其进行配置。

二 支持资源

Terraform支持完整的Kubernetes 资源。

三 认证方式

面向各种云提供商的 Terraform 提供商提供资源,以便将托管的 Kubernetes 集群提升到 EKS、 AKS 和 GKE 等服务上。这些资源(或数据源)将具有属性,这些属性公开了 Kubernetes 提供者连接到这些集群所需的凭据。

四 操作

4.1 代码

terraform {
  required_providers {
    kubernetes = {
      source  = "hashicorp/kubernetes"
      version = ">= 2.0.0"
    }
  }
}
provider "kubernetes" {
  config_path = "~/.kube/config"
}
resource "kubernetes_namespace" "test" {
  metadata {
    name = "nginx"
  }
}
resource "kubernetes_deployment" "test" {
  metadata {
    name      = "nginx"
    namespace = kubernetes_namespace.test.metadata.0.name
  }
  spec {
    replicas = 2
    selector {
      match_labels = {
        app = "MyTestApp"
      }
    }
    template {
      metadata {
        labels = {
          app = "MyTestApp"
        }
      }
      spec {
        container {
          image = "nginx"
          name  = "nginx-container"
          port {
            container_port = 80
          }
        }
      }
    }
  }
}
resource "kubernetes_service" "test" {
  metadata {
    name      = "nginx"
    namespace = kubernetes_namespace.test.metadata.0.name
  }
  spec {
    selector = {
      app = kubernetes_deployment.test.spec.0.template.0.metadata.0.labels.app
    }
    type = "NodePort"
    port {
      node_port   = 30201
      port        = 80
      target_port = 80
    }
  }
}

4.2 执行

terraform apply
  • 查看结果

  • 查看结果

五 其他

您还可以使用 ssh 协议连接到远程计算机上的 docker 主机。配置如下:

provider "docker" {
  host     = "ssh://user@remote-host:22"
  ssh_opts = ["-o", "StrictHostKeyChecking=no", "-o", "UserKnownHostsFile=/dev/null"]
}

参考链接

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。