Terraform 编排K8s资源
【摘要】 一 背景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)