Terraform入门教程,示例展示管理Docker和Kubernetes资源,java技术图谱
2021/12/7 14:48:20
本文主要是介绍Terraform入门教程,示例展示管理Docker和Kubernetes资源,java技术图谱,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
创建一个 main.tf
文件,写入以下内容:
terraform {
required_providers {
docker = {
source = “kreuzwerker/docker”
}
}
}
provider “docker” {}
resource “docker_image” “nginx” {
name = “nginx:latest”
keep_locally = false
}
resource “docker_container” “nginx” {
image = docker_image.nginx.latest
name = “tutorial”
ports {
internal = 80
external = 8000
}
}
根据 main.tf
初始化项目:
$ terraform init
Initializing the backend…
Initializing provider plugins…
-
Finding latest version of kreuzwerker/docker…
-
Installing kreuzwerker/docker v2.12.2…
-
Installed kreuzwerker/docker v2.12.2 (self-signed, key ID 24E54F214569A8A5)
Partner and community providers are signed by their developers.
If you’d like to know more about provider signing, you can read about it here:
https://www.terraform.io/docs/cli/plugins/signing.html
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run “terraform init” in the future.
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running “terraform plan” to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
我们先执行plan来看看它将会有什么变更:
$ terraform plan
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
- create
Terraform will perform the following actions:
docker_container.nginx will be created
-
resource “docker_container” “nginx” {
-
attach = false
-
bridge = (known after apply)
-
command = (known after apply)
-
container_logs = (known after apply)
-
entrypoint = (known after apply)
-
env = (known after apply)
-
exit_code = (known after apply)
-
gateway = (known after apply)
-
hostname = (known after apply)
-
id = (known after apply)
-
image = (known after apply)
-
init = (known after apply)
-
ip_address = (known after apply)
-
ip_prefix_length = (known after apply)
-
ipc_mode = (known after apply)
-
log_driver = “json-file”
-
logs = false
-
must_run = true
-
name = “tutorial”
-
network_data = (known after apply)
-
read_only = false
-
remove_volumes = true
-
restart = “no”
-
rm = false
-
security_opts = (known after apply)
-
shm_size = (known after apply)
-
start = true
-
stdin_open = false
-
tty = false
-
healthcheck {
-
interval = (known after apply)
-
retries = (known after apply)
-
start_period = (known after apply)
-
test = (known after apply)
-
timeout = (known after apply)
}
-
labels {
-
label = (known after apply)
-
value = (known after apply)
}
-
ports {
-
external = 8000
-
internal = 80
-
ip = “0.0.0.0”
-
protocol = “tcp”
}
}
docker_image.nginx will be created
-
resource “docker_image” “nginx” {
-
id = (known after apply)
-
keep_locally = false
-
latest = (known after apply)
-
name = “nginx:latest”
-
output = (known after apply)
}
Plan: 2 to add, 0 to change, 0 to destroy.
执行变更:
$ terraform apply
docker_image.nginx: Creating…
docker_image.nginx: Still creating… [10s elapsed]
docker_image.nginx: Still creating… [20s elapsed]
docker_image.nginx: Creation complete after 28s [id=sha256:d1a364dc548d5357f0da3268c888e1971bbdb957ee3f028fe7194f1d61c6fdeenginx:latest]
docker_container.nginx: Creating…
docker_container.nginx: Creation complete after 1s [id=0dac86e383366959bd976cc843c88395a17c5734d729f62f07106caf604b466f]
它自动帮我们下载了镜像和启动了容器。通过以下命令查看nginx的主页:
$ curl http://localhost:8000
现在我不想要这些资源了,通过以下命令删除:
$ terraform destroy
docker_container.nginx: Destroying… [id=0dac86e383366959bd976cc843c88395a17c5734d729f62f07106caf604b466f]
docker_container.nginx: Destruction complete after 0s
docker_image.nginx: Destroying… [id=sha256:d1a364dc548d5357f0da3268c888e1971bbdb957ee3f028fe7194f1d61c6fdeenginx:latest]
docker_image.nginx: Destruction complete after 1s
4 部署Kubernetes资源
创建目录:
$ mkdir terraform-kubernetes-demo && cd $_
创建 main.tf
文件:
terraform {
required_providers {
kubernetes = {
source = “hashicorp/kubernetes”
version = “>= 2.0.0”
}
}
}
provider "kubernete
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
s" {
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
}
}
这篇关于Terraform入门教程,示例展示管理Docker和Kubernetes资源,java技术图谱的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性
- 2024-05-29哪些无用敏捷指标正在破坏敏捷转型?
- 2024-05-29鸿蒙原生应用再新丁!新华社 入局鸿蒙
- 2024-05-29设计模式 之 迭代器模式(Iterator)