任务,与 k3s server 节点交互来进行应用部署,其会部署 Traefik Ingress 和一个 whoami web 应用,直接执行
❯ ansible-playbook -i k3s_hosts apps.yml
...
PLAY RECAP *****************************************************
control : ok=4 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
完成之后,通过 kubectl 命令查看部署的 pod
❯ kubectl --kubeconfig k3s.yaml get po -n whoami
NAME READY STATUS RESTARTS AGE
whoami-5b844ffb57-mffgf 1/1 Running 0 79s
❯ kubectl --kubeconfig k3s.yaml get ingressroute -n whoami
NAME AGE
whoami 2m12s
尝试访问 whoami 应用
❯ http http://192.168.123.10/
HTTP/1.1 200 OK
Content-Length: 413
Content-Type: text/plain; charset=utf-8
Date: Thu, 13 Oct 2022 08:58:06 GMT
Hostname: whoami-5b844ffb57-mffgf
IP: 127.0.0.1
IP: ::1
IP: 10.42.2.3
IP: fe80::b83a:19ff:febe:7a7f
RemoteAddr: 10.42.0.5:60580
GET / HTTP/1.1
Host: 192.168.123.10
User-Agent: HTTPie/3.2.1
Accept: */*
Accept-Encoding: gzip, deflate
X-Forwarded-For: 192.168.123.1
X-Forwarded-Host: 192.168.123.10
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: traefik-rjbr9
X-Real-Ip: 192.168.123.1
销毁集群
通过以上方式创建的 K3S 集群,我们可以很方便的通过 Terraform 销毁并重新创建。当完成了相关的应用测试之后,我们可以通过以下命令销毁集群
❯ rm -f k3s.yaml
❯ cd ../terraform/
❯ terraform destroy --auto-approve
...
Destroy complete! Resources: 8 destroyed.
我就将会删除所创建的所有相关资源,恢复干净的本地环境。
当需要集群的时候,只需要执行上面的步骤就可以创建一个新的 K3S 集群。
总结
这里演示了一个 IaC 场景,通过代码化基础设施资源,我们可以很容易地通过 Terraform,Ansible 等工具管理并维护相应的基础设施资源。
这里我们演示在本地虚拟化环境创建虚拟机并部署k3S集群,那通过 Terraform 的其他 Providers (例如 AWS, GCP等共有云),我们可以代码化管理我们的公有云基础设施环境,并可以将相应的流程加入 CI/CD 中,可快速创建需要的环境做测试。
IaC 是现代化基础设施运维的方向,结合相关工具,我们可以轻松实现基础设施自动化运维。
同时发布在 Mengz's Blog