MicroG for Earthquake Sciences

Work better more insights


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 站点地图

  • 搜索

使用Swagger工具生成API文档

发表于 2018-11-29 |
字数统计: 389 字 | 阅读时长 ≈ 1 分钟

要实现微服务框架API接口必不可少,使用Swagger工具可以更加方便的生成API框架和对应的接口文档。

  • 首先,在swaggerhub.com上面注册一个账户,选免费的即可

根据示例工程,自己在编辑器中修改既可以看到API文档情况。

  • 其次,如果想保存这些API文档,而可以通过设置于Github账号同步,直接同步到github账号下的指定仓库。

保存设计的API接口后,在swaggerHub网站的项目下,找到Add New Integrations,添加一个GitHub sync。保持账户登陆状态既可以生成token到swaggerhub,设置存放仓库路径即可。

  • 我测试了server stub下面的nodejs-server生成类型,同步到github网站后,在客户端用git工具,打开git bash。直接运行
1
npm start
  • 最后,如果从git上面下载到本地后。执行正确,在本机输入http://localhost:8080/docs/,可以看到下图:

Alt text

PS:通过自动生成的API文档,可以通过github仓库进行保存,再通过CD工具,可以部署到docker或者远程服务器,将API文档发布出来。当然也可以直接在swaggerhub上面浏览或用第三方工具如ReDoc来直接通过GitHub的pages功能进行发布(由于pages只能发布静态网页,所以nodejs项目的执行必须通过工具先生成静态网页才可以运行,如Hexo建站原理类似)。

github上测试项目地址,https://igp-gravity.github.io/geoistapi/

测试第一个NB微服务

发表于 2018-11-28 |
字数统计: 350 字 | 阅读时长 ≈ 1 分钟

尝试了一下kernelgateway的notebook_http功能

因为Geoist的定位就是将封装后的地球物理学代码共享给更多的用户使用,所以让python程序以微服务框架为大家服务是理想的解决方案之一。今天在出差的路上没忍住,亲测了一下让Jupyter Notebook变为微服务的kernelgateway服务。作为Jupyter系列项目中的一个,这个功能还是很酷的,只要通过简单的改造,你的nb程序就可以变成microservice啦

  • 首先启动Jupyter Notebook,写一个ipynb文件,本次测试的代码如下:

  • 开始第一个代码块cell

1
2
import math
import json
  • 再写第二个代码块
1
2
3
4
5
6
7
8
9
10
# GET /convert
req = json.loads(REQUEST)
args = req['args']

if 'angle' not in args:
print(json.dumps({'convertedAngle':None}))
else:
angle = int(args['angle'][0])
converted = math.radians(angle)
print(json.dumps({'convertedAngle':converted}))

注意上面的# GET /convert,这个是关键,convert代表将来的微服务入口,这个cell的前三行是固定写法,记下来。里面的print是返回的内容。

  • 写好没问题后,保存到本地,注意目录要能通过http访问到。运行命令不容易记,写在这里吧
1
jupyter kernelgateway --KernelGatewayApp.api='kernel_gateway.notebook_http' --KernelGatewayApp.seed_uri='kgtest.ipynb'

ps:如果出现signal相关错误,可以通过尝试conda update ipykernel解决

演示NB脚本

更多kernelgateway的技术手册

测试Kubernetes部署和容器服务

发表于 2018-11-27 |
字数统计: 701 字 | 阅读时长 ≈ 3 分钟

通过 microk8s使用Kubernetes结合Azure pipeline实现CD工作

折腾了几天MS的Azure pipeline在build阶段的任务终于配置好了,但是在release阶段一直没搞定。今天用了1元券在MS的Azure上面开了一个虚拟机,准备装个大名鼎鼎的k8s,世纪互联上总是比国外的慢不少,虽然是官方在11月中旬已经宣布登陆中国市场,但是在国内Azure上还没找到,自己手动装一个吧。前面坑不少,这几天总算把Azure DevOps的部署环境搞明白了,界面比Travis-CI高大上,但是感觉坑比那个多一些,没办法先当小白吧,一个一个坑爬过去,先把经验写到这里以便给自己给可能需要的人一些帮助…

  • 在Azure世纪互联建立Ubuntu LTS虚拟机,通过Snap安装microk8s。

microk8s是一个简化版的kube用于测试和单机部署,一行命令即可完成安装。

1
snap install microk8s --classic
  • 为了不和已经安装的 kubectl 产生冲突,microk8s 有自己的 microk8s.kubectl 命令
1
microk8s.kubectl get services
  • 如果本地没有 kubectl 命令可以增加一个别名
1
snap alias microk8s.kubectl kubectl
  • 或者取消
1
snap unalias kubectl
  • API 服务监听 8080 端口,如果是在Azure云上面的虚拟机上面安装,需要安全配置里面打开端口
1
microk8s.kubectl config view
  • 查看附加组件。
1
Kubernetes Addons
  • microk8s 只是最精简的安装,所以只有 api-server, controller-manager, scheduler, kubelet, cni, kube-proxy 被安装运行。额外的服务比如 kube-dns, dashboard 可以通过microk8s.enable 启动
1
microk8s.enable dns dashboard
  • 禁用
1
microk8s.disable dns dashboard
  • 可用的扩展

dns
dashboard
storage
ingress
gpu
istio
registry
metrics-server

  • 停止或重启 microk8s
1
2
snap disable microk8s   # 停止
snap enable microk8s # 重启
  • 移除
1
2
microk8s.reset
snap remove microk8s
  • 安装完环境后,定义pod,首先要用vi新建一个hello-world-pod.yaml,保存
1
2
3
4
5
6
7
8
9
10
apiVersion: v1
kind: Pod
metadata:
name: hello-world
spec:
restartPolicy: OnFailure
containers:
- name: hello
image: "ubuntu"
command: ["/bin/echo","hello”,”world"]
  • 字段解释
1
2
3
4
5
6
7
8
9
10
apiVersion: 声明K8s的API版本
kind: 声明API对象的类型,这里是Pod
metadata:设置Pod的元数据
name: hello-world 指定Pod的名称Pod名称必粗在Namespace内唯一
spec:配置Pod的具体规格
restartPolicy: 重启策略
containers:容器规格,数组形式,每一项定义一个容器
- name:指定容器的名称,在Pod的定义中唯一
image:设置容器镜像
command:设置容器的启动命令
  • 定义和创建pod
1
kubectl create -f hello-world-pod.yaml
  • 查询pod信息
1
kubectl get pod hello-world
  • 输出pod信息
1
kubectl get pod hello-world --output json
  • 状态和生命周期查询
1
kubectl describe pod hello-world
更多参考:https://github.com/ubuntu/microk8s

纪念第一个DevOps项目框架完成

发表于 2018-11-26 |
字数统计: 155 字 | 阅读时长 ≈ 1 分钟

我们第一个地球物理开源项目,期望这是梦想的开始…

经过2周多组里的人努力工作,终于完成了一套协同工作环境

Alt text

自动化文档、自动化集成和自动化部署,世界变化真快,从今开始实践Agile的软件设计方法

项目地址
https://github.com/igp-gravity/geoist

参考文档
https://geoist.readthedocs.io

我们的组织也有了,欢迎大家一起和我们践行现代化软件研发实践和共享精神

https://github.com/gravity-igpcea

Alt text

看着这些小图标,是不是有点高大上

Alt text

Jupyter NB秒变微服务的利器

发表于 2018-11-25 |
字数统计: 96 字 | 阅读时长 ≈ 1 分钟

Jupyter Kernel Gateway这个工具可以帮你把写好的notebook变为REST api

原文可参考:
https://ndres.me/post/jupyter-notebook-rest-api/

安装

1
conda install -c conda-forge jupyter_kernel_gateway

启动

1
jupyter kernelgateway

在这个kernel的基础上,还可以进一步使用Jupyter Enterprise Gateway将你的cluster集群变成服务群。

这个项目的地址可以找到更多参考信息:
https://github.com/jupyter/enterprise_gateway

Geoist自定义节点

发表于 2018-11-15 |
字数统计: 112 字 | 阅读时长 ≈ 1 分钟

今天的工作进展

  • 第一,实现了自定义界面的设计,通过数据源绑定和参数设计,采用vue框架下的HTML设计,可以提高用户体验;

  • 第二,初步完成了5个节点的封装,实现了Pandas的Dataframe数据类型和网格Grid两种类型的数据处理和流转;

  • 第三,注册到Datist节点库,并在Geoist的GitHub线上的extension目录下进行统一管理。

新的Geoist图标诞生了

发表于 2018-11-14 |
字数统计: 45 字 | 阅读时长 ≈ 1 分钟

Geoist图标设计

  • 开源的Geoist软件包,很快就要和大家见面了,DevOps的持续交付软件实践,为地学开源软件贡献一份力量。
    Alt text

什么是Geoist?

发表于 2018-11-13 |
字数统计: 182 字 | 阅读时长 ≈ 1 分钟

基于Python的开源地球物理软件包-Geoist

Geoist是基于Python语言的开源程序包,面向地球物理研究生、教学科研人员,也可为原型化的地球物理算法设计和科研提供基础软件服务。程序包功能包括:重磁位场数据处理、反演解释和模型评估;高精度时变重力数据平差等。

该程序包采用MIT开源协议,并在Github上进行公开发布和维护,代码编写遵循PEP8规范。Geoist程序包采用模块化设计,用户可基于Geoist程序包进行二次开发和集成应用。

项目网站:https://github.com/igp-gravity/geoist

更多关于Geoist

Geoist计划正式启航

发表于 2018-11-12 |
字数统计: 9 字 | 阅读时长 ≈ 1 分钟

Geoist项目计划即将出炉

Alt text

参加微软亚洲研究院二十年庆典

发表于 2018-11-11 |
字数统计: 38 字 | 阅读时长 ≈ 1 分钟

参加微软亚洲研究院20周年庆典

1998-2008二十年历程,5000+论文产出,开放合作,创新模式值得学习。
Alt text
Alt text

123
SHI CHEN at CEA-IGP

SHI CHEN at CEA-IGP

microg.club

26 日志
1 分类
9 标签
RSS
GitHub E-Mail Google
官方信息站点
  • 重力团队
  • 关于我自己
  • Geoist项目
  • Geoist项目文档
  • 地震会商技术系统
  • 地震科普
  • 数据专家
© 2019 SHI CHEN | Site words total count: 6.9k
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
人次 次