示例介绍|学习笔记

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 快速学习示例介绍

开发者学堂课程【ALPD 云架构师系列-云原生 DevOps36计示例介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/82/detail/1266


示例介绍

 

内容介绍:

一、示例介绍

二、示例结构

三、课后作业

四、小结

 

一、示例介绍

简单介绍一个示例图片283.png

 

前段时间花了蛮多的精力的,要写一个有很多服务的,并且有依赖的,能够帮助大家去了解概念,还需要简单易懂的示例。所以在综合各种情况下,写的这样一个示例。
这个服务考虑过换好几个版本,也有好几个想法,最后呈现的实际上是这样的一个东西。

这个服务非常简单。首先它是一个 SSH 的服务,
有个  SSH  入口,然后客户端连到 SSH 的服务商,首先会做鉴权,是由鉴权服务提供的。

鉴权成功之后,客户端可以向这个 SSH 服务发送一些请求,比如查个天气、查一下IP归属地这样的信息。查询之后就会有一个查询机器人的服务,这个服务会调一些外部服务帮我查询。

大家可能发现这里面其实是一个很简单的,完全可以在一个应用里把它都做掉。为什么要拆这么细,首先会发现在现实情况上,比如说一个应用很快的发展,就会变得非常大,如果放在一个应用里面,再拆是很难拆的。本来就需要去做各种优化,所以就有一种诉求,而且在这里加一种鉴定鉴权的类型,或者鉴权方式之后会变得很简单。可以独立发,然后另外就是我们希望大家知道这些服务之间是有依赖的。有外部依赖的情况,比较像现实中的很多研发场景,怎么去解决这种方式场景,怎么去解决比较小的微服务应用的各种交付问题,就是我们接下来会有讨论的一些点。其实就是希望利用模拟一个简单、复杂的场景。但又不是说让你有很大的理解的负担。

图片282.png这是做了一个单独的假设,因为10.105这个地址是我本地的kis的具体值,部署上去之后可以连到它这里去做一个认证。用户名密码也选的pass,之后在这个上面可以去搜一下my IP,可以查IP的归属地、查询天气。这样的话,就实现了助手的功能,是一个很简单的助手。

可能当时觉得前段写的太烂了,以 ssh 的方式会比较简单。其中,这里面有四个应用的仓库。首先就是alpd-bot。里面基本上就是用户名和密码;第二个是 query 服务。

以上两个服务都是 GRBC 的服务,会为 SSH 服务所调用的。第三个是入口 demo服务,即 ssh服务端,会调用上述提及的两个服务;第四个是 protos ,是接口的 IDL 描述。

拉代码为什么编译失败了?因为从model就没拉起来。为什么 model 里面放了protos ,因为 protos 定义了整个接口描述,因此每一个应用都依赖 protos 。这就是目前的一个方法。大家可能会遇到为什么拉不下来,这时要加一个更高的 connection 的参数。


二、示例结果

图片281.png

示例结果 

看一下整个目录结构,首先会有多个 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集群中将三个应用部署起来


四、小结

今天讲的一些东西,对一些专家来说是比较浅显对的,全都是概念。但是魔鬼总是藏在细节里的。经常做这些工程上的事情,很多事情说出来是对的。但是具体去落地的时候总是有各种各样的问题。

图片280.png

比如说配置怎么发布,很多时候并不给你发代码,发的是配置,配置改了怎么办、怎么发,可能还有回滚。

还会经常听到,测试环境不够,没有环境就测不了。第三个就是存在依赖,跟另外人要联调,要等他发了我才能发,不然我发不了;还有就测不完,因为发布的东西太多了,测试用例太多了,即便自动化来不及;还有就是本地跑不起来,或者说我只能跑起我自己,而依赖的跑不起来。

环境不够,8g、16g也跑不动等,各种各样的很细节的问题,才是在做工程的时候可能会真实遇到的情况。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
Cloud Native 架构师 Devops
几个测试示例分享 | 学习笔记
快速学习几个测试示例分享
几个测试示例分享 | 学习笔记
|
监控 Java 应用服务中间件
TestTomcat示例学习笔记
快速学习TestTomcat示例
TestTomcat示例学习笔记
|
前端开发 Java 网络架构
合法性检查示例|学习笔记
快速学习合法性检查示例
116 0
合法性检查示例|学习笔记
|
Kubernetes Cloud Native 架构师
示例介绍 | 学习笔记
快速学习示例介绍
示例介绍 | 学习笔记
|
Cloud Native 架构师 机器人
几个测试示例分享|学习笔记
快速学习几个测试示例分享
几个测试示例分享|学习笔记
|
XML Java 数据格式