首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SRE后端接口开发篇

截止昨天,我们可以使用gin框架创建一个简单的web项目,实现通过访问根路径实现页面展示hello world消息。那么像昨天创建的简单项目肯定不能满足我们的调用k8s集群信息功能页面的设计需求,所以今天再接着来开发。

首先,也和vue框架一样,我们首先得设计好路由规则,其实就是你的接口功能以及地址是什么,这路由就是一个导航图,根据想要的功能带你到对应的界面,所以一般都是先设计路由规则,当然这是一般情况。如果你是不想当一般人的话,你也可以先设计功能,实现功能后再设计路由也不是不可以。在gin框架中,路由就是通过将收到的请求和处理函数关联起来,简单讲,就是用户发送请求,服务器可以寻找到能处理该请求的程序并执行。

Gin框架的路由主要有两部分,一个是请求的http方法、一个是对应的url地址,http方法就是常见的get、post、delete、update等等,url就是定义了处理函数对应的请求路径。

知道了以上知识,那么再来说说一般的go项目目录是什么样的,如下所示:

再来解释一下:

config:就是主要放配置文件,不一定是yaml文件,可以根据需要,用不同格式来存储配置信息;

controller:这个主要是处理请求和返回响应,比如获取节点信息情况如何,成功或失败对应返回消息。

middleware:存放中间件代码,可以用于处理跨域请求、实现认证、权限控制、缓存等功能。

model:存放模型代码,定义了数据表结构和数据访问方法,这个这里咱们还暂时用不到。

router:存放路由代码,根据不同的HTTP请求方法和路径匹配对应的控制器方法。

static:存放静态资源文件,例如图片、样式表、JavaScript文件等。

templates:存放视图模板文件,使用模板引擎渲染生成HTML页面。

utils:存放一些常用的工具类,例如JWT工具、响应工具等。

main.go:应用程序的入口文件,初始化数据库连接、路由、中间件等。

go.mod:Go语言项目依赖管理文件。

README.md:项目说明文件,用于描述项目的背景、目的、功能、安装和运行方法等。

知道了以上这些,咱们就开始设计路由规则,可以单独拿出来初始化封装,以供包外调用。

好的,以下是一个可以被包外调用的路由规则示例:

在上述代码中,我们定义了四个请求方法的路由规则,并分别用不同的请求处理函数来处理不同的业务逻辑。同时,我们还定义了用户信息结构体和相关的 CRUD 方法。这样,其他包中的代码就可以 import 这个包,并调用其中定义的路由规则来实现对用户信息的 CURD 操作。

而我们要设计的是一系列关于k8s信息的路由接口,所以可以单独提出来,然后在包外调用即可。

可以在main.go中全局注册router变量,也可以在路由的配置中实例化路由,设置成可以包外调用,然后在main.go中调用即可,这里介绍下具体步骤。

1、在main文件中创建一个全局route变量

2、在其他包定义一个函数,接受*gin.Engine类型的参数,并注册路由

然后在mian文件中调用注册路由函数,传入全局router变量

我们来看看,是否实现:

下面我们就可以设计调用k8s pods的接口:

例如:

设计好之后,就得想那么这个接口返回k8s集群的信息,那么k8s的信息从哪获取,这里就得介绍一下在这个k8s专为Go语言设计的调用api工具client-go客户端库,这个库可以让我们与k8s的api进行交互,并执行任何必要的操作。那么直接贴代码:

1、导入必要的包

2、建立与Kubernetes集群的连接

这将建立一个clientset对象,它可以用于与Kubernetes API进行通信。

3、调用Kubernetes API

现在,您可以使用clientset对象调用Kubernetes API。例如,以下代码将获取所有的Pod。

这将获取在集群上运行的所有Pod,并将它们的名称打印到控制台输出中。

运行代码。

最后,运行main.go文件以测试代码。您可以使用以下命令执行代码:

控制台信息:

访问locahost:8080/pods路径,不出意外这就出现pod信息了

所以说,其他的k8s相关的信息调用和这个一个道理,那么今天就算完成了调用k8s接口的功能开发,也算是完成了后端开发的第一步,后面就能根据自己需求越来越完善。

感兴趣的朋友记得点赞关注呀!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230412A07E9K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券