项目实践

本次课程是一节实践课,在这次课程中,我们利用前面学到的知识部署两个微服务到 Kubernetes 集群中。主要是带大家一起回归一下 deployment、configmap、secret、service 这些资源如何配合使用。

本次部署微服务如下图所示:

微服务架构

这次部署的服务是有两个微服务和一个代理服务组成的,auth 这个微服务提供了认证功能,我们通过访问这个服务来获取请求其他接口的 Token,然后使用这个 Token 去访问 hello 这个微服务,这个微服务验证这个 Token,如果验证成功则接口返回正常响应,否则返回验证失败。frontend 为 auth 和 hello 这两个服务提供代理服务,根据 url 路由用户请求到两个微服务上。

5.1 项目部署

部署

  1. kubectl apply -f project/

获取pods

  1. kubectl get pods
  2. NAME READY STATUS RESTARTS AGE
  3. auth-7fd44dbc5b-klz9k 1/1 Running 0 108s
  4. frontend-84794db478-2wqrk 1/1 Running 0 108s
  5. hello-9944bc998-wgq88 1/1 Running 0 107s

登录虚拟机

  1. minikube ssh

拷贝ca.pem到虚拟机上

访问非授权接口返回成功

  1. curl --cacert ./ca.pem https://127.0.0.1:30443/hello
  2. {"message":"Hello"}

访问非授权接口返回失败

  1. curl --cacert ./ca.pem https://127.0.0.1:30443/secure
  2. authorization failed

获取接口JWT Token

  1. curl --cacert ./ca.pem -u user https://127.0.0.1:30443/login
  2. Enter host password for user 'user':password
  3. {"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJleHAiOjE1NDcyNzg4NjcsImlhdCI6MTU0NzAxOTY2NywiaXNzIjoiYXV0aC5zZXJ2aWNlIiwic3ViIjoidXNlciJ9.bT3flMe_VywoFkGCFt08Tw0fxytKZblj8lBHNVLYC6U"}

使用Token访问接口成功返回

  1. curl --cacert ./ca.pem -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20iLCJleHAiOjE1NDcyNzg4NjcsImlhdCI6MTU0NzAxOTY2NywiaXNzIjoiYXV0aC5zZXJ2aWNlIiwic3ViIjoidXNlciJ9.bT3flMe_VywoFkGCFt08Tw0fxytKZblj8lBHNVLYC6U' https://127.0.0.1:30443/secure

5.2 小结

Kubernetes 技术实践—基础篇到此就讲完了,在基础篇里我给你讲述如何将应用打包成镜像并上传到公有仓库;如何从公有仓库下载并启动这个镜像;并向你讲述了 Kubernetes 架构及各个组件的作用;如何搭建测试目的的 Kubernetes 集群;如何将应用部署到集群上,并对它进行滚动升级。基础篇的目的是带领大家部署一个服务到 Kubernetes 集群上,在接下来的进阶篇中主要给大家介绍 Kubernetes 如何在企业环境中落地,主要涉及 Kubernetes 高可用集群的搭建;企业级的私有仓库的部署;使用 helm 部署应用;通过 CI/CD 管道自动化部署过程;还会向大家讲述网络该如何选型;持久换存储该如何部署、使用;集群及部署在上面的服务该如何监控、报警;日志该如何收集、分析;还会涉及 Service Mesh 服务网格的一些知识,比如:如何进行流量路由,如何进行服务降级,如何进行分布式链路追踪等等。大家可以加入QQ 群(774607973),我们会第一时间在群里发布进阶篇相关的信息,敬请期待!希望大家早日成为 Kubernetes 领域里的老司机,早日开启容器的自动驾驶模式,谢谢大家!