开发者学堂课程【ALPD 云架构师系列-云原生 DevOps36计:示例介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/82/detail/1266
示例介绍
内容介绍:
一、示例介绍
二、示例结构
三、课后作业
四、小结
一、示例介绍
简单介绍一个示例
前段时间花了蛮多的精力的,要写一个有很多服务的,并且有依赖的,能够帮助大家去了解概念,还需要简单易懂的示例。所以在综合各种情况下,写的这样一个示例。
这个服务考虑过换好几个版本,也有好几个想法,最后呈现的实际上是这样的一个东西。
这个服务非常简单。首先它是一个 SSH 的服务,
有个 SSH 入口,然后客户端连到 SSH 的服务商,首先会做鉴权,是由鉴权服务提供的。
鉴权成功之后,客户端可以向这个 SSH 服务发送一些请求,比如查个天气、查一下IP归属地这样的信息。查询之后就会有一个查询机器人的服务,这个服务会调一些外部服务帮我查询。
大家可能发现这里面其实是一个很简单的,完全可以在一个应用里把它都做掉。为什么要拆这么细,首先会发现在现实情况上,比如说一个应用很快的发展,就会变得非常大,如果放在一个应用里面,再拆是很难拆的。本来就需要去做各种优化,所以就有一种诉求,而且在这里加一种鉴定鉴权的类型,或者鉴权方式之后会变得很简单。可以独立发,然后另外就是我们希望大家知道这些服务之间是有依赖的。有外部依赖的情况,比较像现实中的很多研发场景,怎么去解决这种方式场景,怎么去解决比较小的微服务应用的各种交付问题,就是我们接下来会有讨论的一些点。其实就是希望利用模拟一个简单、复杂的场景。但又不是说让你有很大的理解的负担。
这是做了一个单独的假设,因为10.105这个地址是我本地的kis的具体值,部署上去之后可以连到它这里去做一个认证。用户名密码也选的pass,之后在这个上面可以去搜一下my IP,可以查IP的归属地、查询天气。这样的话,就实现了助手的功能,是一个很简单的助手。
可能当时觉得前段写的太烂了,以 ssh 的方式会比较简单。其中,这里面有四个应用的仓库。首先就是alpd-bot。里面基本上就是用户名和密码;第二个是 query 服务。
以上两个服务都是 GRBC 的服务,会为 SSH 服务所调用的。第三个是入口 demo服务,即 ssh服务端,会调用上述提及的两个服务;第四个是 protos ,是接口的 IDL 描述。
拉代码为什么编译失败了?因为从model就没拉起来。为什么 model 里面放了protos ,因为 protos 定义了整个接口描述,因此每一个应用都依赖 protos 。这就是目前的一个方法。大家可能会遇到为什么拉不下来,这时要加一个更高的 connection 的参数。
二、示例结果
示例结果
看一下整个目录结构,首先会有多个 file 去描述镜像是怎么回事,我们是怎样构建的;第二个是 makfile ,所有的应用里都有 makefile ,里面都具有 build 的 test的,一个用来做构建,一个做测试。构建的话就会调到 build 去做构建,然后 README 是做一个工程说明,这过程中是什么,包含了什么东西、怎么构建、怎么开发。 deployment .yml 是为本地k8s做部署用的。
另一个 yml 是为云效 K8S 部署,在云效 K8S 上做部署的时候,因为可能涉及到一些变量,这东西我们会通过jpg文件去描述;protos 的目录,就是刚刚说的,其实是一个some model,是接口的定义。包含两个 protos 文件。整个示例其实是有三个应用加一个 protos 定义,包含了三种语言,一个 goland,一个 Python等。我们特意把它弄得这么复杂,而不是不用一个语言来去实现。
三、课后作业
从https://code.aliyun.com/groups/alpd-demo获取所有应用的代码
参照应用的README,在本地构建出alpd-bot-auth、 alpd-bot-query、alpd-bot-ssh三个应用的容器镜像
在本地将三个应用容器运行起来
在本地k8s集群中将三个应用部署起来
四、小结
今天讲的一些东西,对一些专家来说是比较浅显对的,全都是概念。但是魔鬼总是藏在细节里的。经常做这些工程上的事情,很多事情说出来是对的。但是具体去落地的时候总是有各种各样的问题。
比如说配置怎么发布,很多时候并不给你发代码,发的是配置,配置改了怎么办、怎么发,可能还有回滚。
还会经常听到,测试环境不够,没有环境就测不了。第三个就是存在依赖,跟另外人要联调,要等他发了我才能发,不然我发不了;还有就测不完,因为发布的东西太多了,测试用例太多了,即便自动化来不及;还有就是本地跑不起来,或者说我只能跑起我自己,而依赖的跑不起来。
环境不够,8g、16g也跑不动等,各种各样的很细节的问题,才是在做工程的时候可能会真实遇到的情况。