背景
terraform是基础设施即代码的热门工具,但是他的license有限制,而opentofu是他的开源替代
示例
创建main.tf,内容如下
provider "kubernetes" {
config_path = "~/.kube/config"
}
resource "kubernetes_namespace" "demo" {
metadata {
name = "demo"
}
}
resource "kubernetes_service" "demo" {
metadata {
name = "demo"
namespace = kubernetes_namespace.demo.metadata.0.name
}
spec {
port {
port = 80
target_port = 80
protocol = "TCP"
}
type = "ClusterIP"
}
}
resource "kubernetes_ingress_v1" "demo" {
metadata {
name = "demo"
namespace = kubernetes_namespace.demo.metadata.0.name
}
spec {
rule {
host = "demo.com"
http {
path {
path = "/*"
backend {
service {
name = kubernetes_service.demo.metadata.0.name
port {
number = 80
}
}
}
}
}
}
}
}
resource "kubernetes_deployment" "demo" {
metadata {
name = "demo"
namespace = kubernetes_namespace.demo.metadata.0.name
}
spec {
selector {
match_labels = {
app = "demo"
}
}
template {
metadata {
labels = {
app = "demo"
}
}
spec {
container {
image = "nginx"
name = "app"
}
}
}
}
}
初始化
tofu init
查看创建计划
tofu plan
查看销毁计划
tofu plan -destroy
创建
tofu apply
输入yes
创建自动确认
···
tofu apply -auto-approve
···
销毁
tofu destroy
输入yes
销毁自动确认
tofu destroy -auto-approve
补充
provider
本文使用到的provider在这
https://github.com/hashicorp/terraform-provider-kubernetes
状态信息
terraform.tfstate 当前状态
terraform.tfstate.backup 当前状态的备份,当前状态文件丢失后可rename成terraform.tfstate
provider查询
在此寻找你xu qiu
https://search.opentofu.org/