提交 9fc631aa 编写于 作者: F feilong

fix bug

上级 afad3e79
......@@ -13,6 +13,7 @@ docker image
可以看到所有的docker image 操作命令
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/2.docker image 操作/docker-image.png)
<br/>
下面说法错误的是?
......
......@@ -13,6 +13,7 @@ docker image inspect hello-world
操作截图如下,可以看到镜像启动后会立刻执行的命令CMD:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/2.docker image 操作/docker-image-inspect.png)
<br/>
请自己实际操作后回答问题:以下对`docker image inspect`输出结果描述错误的是?
......
......@@ -13,6 +13,7 @@ docker image ls
操作截图如下,可以看到前一题拉取到的`hello-world`镜像:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/2.docker image 操作/docker-image-ls.png)
<br/>
以下对`docker image ls`输出结果描述错误的是?
......
......@@ -13,6 +13,7 @@ docker image pull library/hello-world
操作截图如下:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/2.docker image 操作/docker-image-pull.png)
<br/>
以下从Docker Hub 拉取 ubuntu 镜像操作正确的是?
......
......@@ -13,6 +13,7 @@ docker image ls
截图如下,可以看到两个名字为`<none>`的镜像:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/2.docker image 操作/docker-image-rm-ls.png)
<br/>
如果镜像没有被启动过,直接之下下面的命令能删除成功:
......@@ -23,14 +24,17 @@ docker image rm 09d01ed9156b
如图所示:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/2.docker image 操作/docker-image-rm-success.png)
<br/>
但是如果镜像被启动过,有可能出现错误信息:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/2.docker image 操作/docker-image-rm-failed.png)
<br/>
红框的提示表示该镜像被启动过并且目前处于停止状态,我们可以通过`docker ps`命令查看被启动过的镜像状态
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/2.docker image 操作/docker-image-rm-ps.png)
<br/>
可以看到,其中
......@@ -46,6 +50,7 @@ docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm
如图所示
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/2.docker image 操作/docker-image-rm-clear.png)
<br/>
以下说法错误的是?
......
......@@ -11,6 +11,7 @@ docker container ls
可以看到上一题运行的`ubuntu`容器的id
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/3.docker container 操作/container-kill-ls.jpg)
<br/>
现在,使用容器的id就可以杀死容器实例
......@@ -21,10 +22,12 @@ docker container kill 2bba2dec1e97
命令执行的返回如图所示:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/3.docker container 操作/container-kill-action.jpg)
<br/>
而运行中的ubuntu docker 实例则被成功kill后退出:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/3.docker container 操作/container-kill-resp.jpg)
<br/>
以下描述错误的是?
......
......@@ -11,6 +11,7 @@ docker image pull library/ubuntu
下载 ubuntu 镜像成功
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/3.docker container 操作/container-run-bash-ubuntu.jpg.jpg)
<br/>
接着,启动container 并执行第一个程序`bin/bash`:
......@@ -21,6 +22,7 @@ docker container run -it ubuntu bin/bash
可以看到成功进入了ubuntu容器实例的shell环境,并在shell环境里执行了`ls``ll`命令。
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/3.docker container 操作/container-run-bash-ubuntu-shell.jpg)
<br/>
以下描述错误的是?
......
......@@ -11,6 +11,7 @@ docker container
如图所示:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/3.docker container 操作/container.jpg)
<br/>
以下描述错误的是?
......
......@@ -23,6 +23,7 @@ docker image pull library/ubuntu
下载 ubuntu 镜像成功
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/3.docker container 操作/container-run-bash-ubuntu.jpg.jpg)
<br/>
接着,启动container 并执行第一个程序`bin/bash`:
......@@ -33,6 +34,7 @@ docker container run -it ubuntu bin/bash
可以看到成功进入了ubuntu容器实例的shell环境,并在shell环境里执行了`ls``ll`命令。
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/3.docker container 操作/container-run-bash-ubuntu-shell.jpg)
<br/>
以下描述错误的是?
......@@ -55,6 +57,7 @@ docker container run -it ubuntu bin/bash
因为指定了参数`-it`,因此可以直接在启动容器的终端上输入命令,回车交给容器里的shell环境执行命令。
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/3.docker container 操作/container-run-simple.jpg)
<br/>
参数`-it`表示将容器的shell链接到当前终端。
......
......@@ -9,6 +9,7 @@ docker image build -t cloud_native_hello_py:0.0.1 ./
构建如图所示:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image.jpg)
<br/>
构建镜像之后,可以将镜像发布到 DockerHub ,不过需要首先注册下账号
......@@ -24,6 +25,7 @@ docker tag cloud_native_hello_py:0.0.1 fanfeilong/cloud_native_hello_py
可以用`docker image ls`验证结果
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image_tag.jpg)
<br/>
现在,可以使用镜像的 push 命令来发布
......@@ -32,6 +34,7 @@ docker push fanfeilong/cloud_native_hello_py:latest
```
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/4.使用Dockerfile制作镜像/build_image_push.jpg)
<br/>
以下描述错误的是?
......
......@@ -11,6 +11,7 @@ docker pull fanfeilong/cloud_native_hello_py
```
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/5.使用docker运行Python程序/docker_pull.jpg)
<br/>
其次,运行容器:
......@@ -21,10 +22,12 @@ docker run -p 1024:1024 -it fanfeilong/cloud_native_hello_py
这个命令没有指定容器启动后运行的命令,因此容器启动后会执行镜像制作时Dockerfile里指定的CMD命令,可以看到容器启动后执行了Python程序,容器服务在1024端口监听HTTP请求,因为 docker run 配置了参数`-p 1024:1024`,这里把主机的1024端口映射到了容器里的1024端口。
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/5.使用docker运行Python程序/run-with-port-map.jpg)
<br/>
现在,在浏览器里测试下请求:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/1.容器(docker)/5.使用docker运行Python程序/test-request.jpg)
<br/>
请求成功,输出了"Hello World!",到这里你就成功学会了容器镜像制作、发布、拉取和运行一条龙服务。
......
......@@ -29,6 +29,7 @@ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stabl
截图如下:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/1.安装kubectl/imgs/install_kubectl.png)
<br/>
依次执行如下命令配置权限:
......@@ -39,6 +40,7 @@ sudo chown root: /usr/local/bin/kubectl
```
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/1.安装kubectl/imgs/install_kubectl_02.png)
<br/>
使用如下两个命令分别查看版本信息:
......@@ -49,6 +51,7 @@ kubectl version --client --output yaml
```
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/1.安装kubectl/imgs/install_kubectl_03.png)
<br/>
以下关于 kubectl 安装说法错误的是?
......
......@@ -29,6 +29,7 @@ minikube version
```
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/2.安装minikube/img/minikube_version.png)
<br/>
安装成功。以下对 minikube 说法错误的是?
......
......@@ -3,6 +3,7 @@
学习一个新工具,先大致熟悉它的命令体系,在后续使用中按图索骥是一种常见的方式。先看一下 minikube 有哪些命令选项,输入 `minikube` 直接回车,可以看到
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/2.安装minikube/img/minikube_options.png)
<br/>
首先是一组基础命令,用来开始、暂停、恢复、停止、删除 kubernetes 集群:
......
......@@ -13,10 +13,12 @@ minikube start --vm-driver=docker --image-mirror-country='cn'
启动过程截图:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/2.安装minikube/img/minikube_start.png)
<br/>
安装过程中可能会遇到各种问题,例如下图遇到了镜像下载失败使用回退版本的策略
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/2.安装minikube/img/minikube_start_success.png)
<br/>
幸运的是,启动成功了,提示 `kubectl` 已经配置到和`minikube` k8s 集群连接:
......@@ -27,6 +29,7 @@ Done! kubectl is now configured to use "minikube" cluster and "default" namespac
使用命令`kubectl cluster-info --context minikube` 查看下集群的信息
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/2.安装minikube/img/minikube_cluster_info.png)
<br/>
以下对 minikube 启动说法错误的是?
......
......@@ -3,10 +3,12 @@
通过命令`kind get clusters` 查看 kind 创建的集群列表
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/3.安装kind/img/kind_get_clusters.png)
<br/>
通过命令`kind get nodes --name test` 查看 kind 创建的节点列表
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/3.安装kind/img/kind_get_nodes.png)
<br/>
可以看到test集群下的单节点 `test-control-plane`
......
......@@ -27,14 +27,17 @@ mv ./kind /some-dir-in-your-PATH/kind
安装成功:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/3.安装kind/img/kind_install.png)
<br/>
版本信息:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/3.安装kind/img/kind_version.png)
<br/>
子命令列表
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/3.安装kind/img/kind_commands.png)
<br/>
以下对安装 kind 说法错误的是?
......
......@@ -9,6 +9,7 @@ kind create cluster --name test
创建一个 k8s 集群
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/3.安装kind/img/kind_start.png)
<br/>
同样的,kind 提示了可以使用 kubectl 获取集群信息
......@@ -22,6 +23,7 @@ kubectl cluster-info --context kind-test
使用命令`kubectl cluster-info --context kind-test` 测试一下:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/3.安装kind/img/kind_cluster_info.png)
<br/>
以下说法错误的是?
......
......@@ -28,11 +28,13 @@ kind create cluster --config hello-k8s-config.yaml --name hello-k8s
```
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/3.安装kind/img/kind_three_nodes.png)
<br/>
查看集群的节点列表
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/3.安装kind/img/kind_three_nodes_info.png)
<br/>
......
......@@ -68,6 +68,7 @@ users:
```
主要包括这几类信息:
* `clusters` 列出了所有的 k8s 集群,例如这里有两个kind创建的集群:`kind-hello-k8s``kind-test` 以及一个 minikube 创建的集群`minikube`
* `context` 列出了每个 k8s 集群对应的上下文信息
* `users` 列出了每个 k8s 集群的用户信息
......@@ -77,14 +78,17 @@ users:
首先,通过`kubectl config get-contexts` 查看下有哪些集群上下文,通过`kubectl config current-context` 确认当前 k8s 集群上下文
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/4.kubectl查看和切换context/img/config_get.png)
<br/>
其次,通过`kubectl get nodes`查看当前 kubectl 连接的集群`kind-hello-k8s`的节点列表:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/4.kubectl查看和切换context/img/kubectl_get_nodes.png)
<br/>
现在,通过`kubectl config use-context kind-test` 切换连接的 k8s 集群,然后再次查看信息
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/4.kubectl查看和切换context/img/kubectl_switch_context.png)
<br/>
以下说法错误的是?
......
......@@ -47,6 +47,7 @@ spec:
* 使用命令`kubectl rollout status deployment/cloud-native-hello-py`查看状态。
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/5.kubectl部署一个Python程序/img/deployment.png)
<br/>
以下说法错误的是?
......
......@@ -38,14 +38,17 @@ kubectl create -f k8s.service.yaml
```
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/5.kubectl部署一个Python程序/img/service.png)
<br/>
对服务做下端口转发
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/5.kubectl部署一个Python程序/img/port_forward.png)
<br/>
使用浏览器直接访问
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/5.kubectl部署一个Python程序/img/it_works_html.png)
<br/>
HelloWorld! 恭喜你成功地在 K8S 上部署启动了一个 Python Flask 后端服务。
......
......@@ -7,10 +7,12 @@ Pod是一个或多个容器的组合,这些容器共享存储、网络和命
我们先通过命令`kubectl get rs`直观地看下 ReplicaSet
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/5.kubectl部署一个Python程序/img/rs.png)
<br/>
我们再通过命令`kubectl get pods`直观地看下 pods
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/2.容器编排(学习环境 k8s)/5.kubectl部署一个Python程序/img/pods.png)
<br/>
可以看到有一个 ReplicaSet,管理三个 Pods。ReplicaSet 管理多个 Pod,确保以指定个数的副本运行部署的服务。
......
......@@ -31,6 +31,7 @@ brew install helm
```
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/4.k8s包管理(helm)/1.安装helm/img/install.png)
<br/>
以下说法错误的是?
......
......@@ -13,6 +13,7 @@ helm search repo bitnami
```
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/4.k8s包管理(helm)/3.使用helm安装mysql到k8s/img/repo.png)
<br/>
接着,通过 grep 命令过滤下 mysql 包相关的信息
......@@ -21,6 +22,7 @@ helm serach repo|grep mysql
```
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/4.k8s包管理(helm)/3.使用helm安装mysql到k8s/img/repo_mysql.png)
<br/>
然后,安装 mysql 包到 k8s,可以看到安装的
......@@ -30,6 +32,7 @@ helm install bitnami/mysql --generate-name
```
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/4.k8s包管理(helm)/3.使用helm安装mysql到k8s/img/install_mysql_chart.png)
<br/>
查看已经安装的 chart 列表,可以看到mysql已经装上了:
......@@ -38,10 +41,12 @@ helm list
```
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/4.k8s包管理(helm)/3.使用helm安装mysql到k8s/img/list.png)
<br/>
现在,使用`helm status xxx`命令查看已安装mysql的状态
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/4.k8s包管理(helm)/3.使用helm安装mysql到k8s/img/status.png)
<br/>
以下说法错误的是?
......
......@@ -76,14 +76,17 @@ helm install ./chart/hello-py/ --generate-name
检测下 k8s 的 deployment 和 sevice:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/4.k8s包管理(helm)/4.使用helm部署Python应用/img/status.png)
<br/>
端口转发:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/4.k8s包管理(helm)/4.使用helm部署Python应用/img/port.png)
<br/>
访问服务:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/4.k8s包管理(helm)/4.使用helm部署Python应用/img/visit.png)
<br/>
以下说法错误的是?
......
......@@ -25,6 +25,7 @@ Client <-> Interface <-> [ProxyB->ServerB] <-> [ProxyA->ServerA]
2. 原来k8s的node里的pod通过node的kube-proxy桥接通信;在ServiceMesh下,每个 pod 之间直接通过装在 pod上的proxy直接通信。
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/5.服务网格(istio)/1.ServiceMesh介绍/img/k8s_native_vs_service_mesh.png)
<br/>
以下说法错误的是?
......
......@@ -87,6 +87,7 @@ istioctl
可以看到 istioctl 支持的子命令列表:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/5.服务网格(istio)/2.安装istio/img/commands.png)
<br/>
istio 通过`profile`对不同的配置分组,内置的`profile`列表可以通过命令`istioctl profile list`查看:
......@@ -105,6 +106,7 @@ Istio configuration profiles:
例如,使用命令`istioctl profile dump demo`查看名为`demo``profile`:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/5.服务网格(istio)/2.安装istio/img/dump_profile.png)
<br/>
配置`profile=demo`,安装istio到k8s
......
......@@ -12,11 +12,13 @@ brew install hashicorp/tap/terraform
安装成功如图:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/7.基础架构自动编排(Terraform)/2.Terraform命令行工具/img/install.png)
<br/>
查看下有哪些命令:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/7.基础架构自动编排(Terraform)/2.Terraform命令行工具/img/commands.png)
<br/>
可以看到一组核心命令:
......@@ -59,22 +61,27 @@ resource "docker_container" "nginx" {
现在,执行`terraform init`命令初始化
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/7.基础架构自动编排(Terraform)/2.Terraform命令行工具/img/init.png)
<br/>
现在,执行`terraform plan`命令检测配置
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/7.基础架构自动编排(Terraform)/2.Terraform命令行工具/img/plan.png)
<br/>
可以看到,由于连不上 Mac系统的 docker daemon ,环境监测失败。Mac系统上不需要配置`host = "tcp://localhost:2375"`,删除后,重新执行如下
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/7.基础架构自动编排(Terraform)/2.Terraform命令行工具/img/plan_success.png)
<br/>
现在,我们执行`terraform apply`,将会开始构建一个 ngix 的docker:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/7.基础架构自动编排(Terraform)/2.Terraform命令行工具/img/apply_q.png)
<br/>
在实际构建之前,会要求再次确认,输入'yes'回车,开始实施:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/7.基础架构自动编排(Terraform)/2.Terraform命令行工具/img/apply_a.png)
<br/>
可见,使用 terraform 可以让基础设施的构建使用上声明式配置,具有标准化、统一配置、减少错误、跨平台的好处。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册