linux cpu占用率如何看
380
2022-09-28
Terraform与Kubernetes的体验
背景:Terraform体验了腾讯云的CVM的基本操作。正常流程要去体验一下其他基础组件的整合比如数据库redis等基础组件,还有现有资源的导入。配置文件的合理配置等等等....先插播一下kubernetes的体验吧......毕竟我主要的工作环境是Kubernetes!也有tke。其实也可以体验下tke的整合?现在先单独体验下原生的kubernetes吧!
Terraform与Kubernetes的体验
1.关于Documentation的快速导读
2.terraform 连接kubernetes集群以及简单操作
1. terraform 连接kubernetes集群初始化相关
1. 指定required_providers
2. terraform连接kubernetes集群的两种方式
参照官方文档:kubernetes的两种方式:
kubeconfig path host and tls证书
3. 创建工作目录初始化terraform并顺便创建一个namespace
1. 创建工作目录
[root@k8s-master-01 ~]# mkdir terraform-k8s [root@k8s-master-01 ~]# cd terraform-k8s/
2. 创建provider.tf
[root@k8s-master-01 terraform-k8s]# cat provider.tf
terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = ">= 2.10.0" } } } provider "kubernetes" { config_path = "~/.kube/config" config_context = "kubernetes-admin@kubernetes" } resource "kubernetes_namespace" "zhangpeng" { metadata { name = "zhangpeng" } }
3. terraform init
root@k8s-master-01 terraform-k8s]# terraform init
4. terraform plan and terraform apply
[root@k8s-master-01 terraform-k8s]# terraform plan
5. 验证namespace的创建
[root@k8s-master-01 terraform-k8s]# kubectl get ns
2. terraform 创建一个deployments? and 绑定一个ingress并打印出相关信息?
1. 创建一个nginx的deployment应用
参照官方文档。只增加了namespace的限定!cat nginx.tf
resource "kubernetes_deployment_v1" "example" { metadata { name = "terraform-example" namespace = "zhangpeng" labels = { test = "MyExampleApp" } } spec { replicas = 3 selector { match_labels = { test = "MyExampleApp" } } template { metadata { labels = { test = "MyExampleApp" } } spec { container { image = "nginx:1.21.6" name = "example" resources { limits = { cpu = "0.5" memory = "512Mi" } requests = { cpu = "250m" memory = "50Mi" } } liveness_probe { { path = "/" port = 80 { name = "X-Custom-Header" value = "Awesome" } } initial_delay_seconds = 3 period_seconds = 3 } } } } } }
[root@k8s-master-01 terraform-k8s]# terraform plan
[root@k8s-master-01 terraform-k8s]# terraform apply
[root@k8s-master-01 terraform-k8s]# kubectl get pods -n zhangpeng
恩这一步等了好久 差不多两分钟具体原因查看livenessProbe initialDelaySeconds periodSeconds相关设置!
[root@k8s-master-01 terraform-k8s]# kubectl get all -n zhangpeng NAME READY STATUS RESTARTS AGE pod/terraform-example-78ff4f86d7-bxfwj 1/1 Running 0 6m26s pod/terraform-example-78ff4f86d7-vb2p7 1/1 Running 0 6m26s pod/terraform-example-78ff4f86d7-vqm6b 1/1 Running 0 6m26s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/terraform-example 3/3 3 3 6m26s NAME DESIRED CURRENT READY AGE replicaset.apps/terraform-example-78ff4f86d7 3 3 3 6m26s
2.创建sevice相关配置绑定deployment
resource "kubernetes_service" "terraform-example-service" { metadata { name = "terraform-example-service" namespace = kubernetes_namespace.zhangpeng.metadata.0.name } spec { selector = { test = kubernetes_deployment_v1.example.spec.0.template.0.metadata.0.labels.test } session_affinity = "ClientIP" port { port = 80 target_port = 80 } type = "ClusterIP" } }
注意:标签的匹配:selector的标签,namespace deployment的版本是否带v1。session_affinity还有type都是kubernetes的基础自行脑补!type的三种方式按照自己环境需求自行设置。terraform plan and terraform apply
[root@k8s-master-01 terraform-k8s]# terraform plan [root@k8s-master-01 terraform-k8s]# terraform apply
[root@k8s-master-01 terraform-k8s]# kubectl get svc -n zhangpeng
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
terraform-example-service ClusterIP 172.19.253.9
3.创建ingress绑定clusterip
resource "kubernetes_ingress_v1" "nginx_ingress_test" { metadata { name = "nginx-ingress-test" namespace = kubernetes_namespace.zhangpeng.metadata.0.name annotations = { "kubernetes.io/ingress.class" = "traefik" "traefik.ingress.kubernetes.io/router.entrypoints" = "web" } } spec { rule { host = "nginx-ingress-test.xxxx.com" { path { path = "/" backend { service { name = "terraform-example-service" port { number = 80 } } } } } } } }
强调一下:这里本来想设置pathType,但是设置了就有报错。我想看一下默认的是什么!terraform plan and terraform apply
[root@k8s-master-01 terraform-k8s]# terraform plan [root@k8s-master-01 terraform-k8s]# terraform apply
3. 顺便看一下腾讯云的tke的文档
总结一下
terraform能完成很多工作,现在的很多主流的平台都能满足 terraform很多时候并不是最优的,不是万能最佳。管理kubernetes反正我觉得就没有用spinnaker等其他的工具简单 只是提前想体验一下kubernetes的整合。后面terraform还是停留在管理我的基础设施上面.kubernetes管理我还是不会用terraform的
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~