Menu

  • Home
  • Work
    • Cloud
      • Virtualization
      • IaaS
      • PaaS
    • Java
    • Go
    • C
    • C++
    • JavaScript
    • PHP
    • Python
    • Architecture
    • Others
      • Assembly
      • Ruby
      • Perl
      • Lua
      • Rust
      • XML
      • Network
      • IoT
      • GIS
      • Algorithm
      • AI
      • Math
      • RE
      • Graphic
    • OS
      • Linux
      • Windows
      • Mac OS X
    • BigData
    • Database
      • MySQL
      • Oracle
    • Mobile
      • Android
      • IOS
    • Web
      • HTML
      • CSS
  • Life
    • Cooking
    • Travel
    • Gardening
  • Gallery
  • Video
  • Music
  • Essay
  • Home
  • Work
    • Cloud
      • Virtualization
      • IaaS
      • PaaS
    • Java
    • Go
    • C
    • C++
    • JavaScript
    • PHP
    • Python
    • Architecture
    • Others
      • Assembly
      • Ruby
      • Perl
      • Lua
      • Rust
      • XML
      • Network
      • IoT
      • GIS
      • Algorithm
      • AI
      • Math
      • RE
      • Graphic
    • OS
      • Linux
      • Windows
      • Mac OS X
    • BigData
    • Database
      • MySQL
      • Oracle
    • Mobile
      • Android
      • IOS
    • Web
      • HTML
      • CSS
  • Life
    • Cooking
    • Travel
    • Gardening
  • Gallery
  • Video
  • Music
  • Essay

KintoHub试用笔记

30
Apr
2019

KintoHub试用笔记

By Alex
/ in PaaS
0 Comments
简介

KintoHub能够管理云原生应用从源代码到线上环境部署的整个生命周期,包括构建、编排和部署。

理念

KintoHub认为微服务必须遵从如下原则:

  1. 微服务的功能和数据构成界限上下文,微服务是单一职责的,其功能通过一个或多个API端点暴露
  2. 微服务必须支持通过上下文(contextual)API端点进行无限制的扩容

KintoHub会收集AP端点调用者的上下文信息,例如终端用户、应用程序、环境(Staging/Production...),每个API调用基于Kinto-App-Id和可选的会话内存(Session Memory)来追踪。合理的利用上下文信息,可以不必为每套环境部署专属服务,从而节约成本。这个理念让人觉得很难落地,让线上环境、测试环境在同一进程中运行风险太大。

API调用

要访问KintoHub API端点,首先需要进行身份验证。每个KintoApp都具有clientId/clientSecret作为凭证,使用此凭证你可以创建针对特定版本化环境的会话Token。从此Token中KintoHub可以知道你想和什么KintoBlocks进行交互。

会话内存

共享内存的高级形式,通常基于Redis/Memcache。KintoHub支持通过报文头读写会话内存。试用这个功能会增强应用和KintoHub的耦合。

无SDK框架

KintoHub希望消除编程语言差异带来的成本。和KintoHub交互、兼容,不需要通过语言特定的SDK,而只需要编写注释。

KintoHub利用APIDOC描述API规格,APIDOC本身是RESTful API的一种内联(和代码在一起)文档规范。比起流行的Swagger/OpenAPI,APIDOC更加简单、可以很容易的支持多种协议。KintoHub还允许在同一协议中基于HTTP或gRPC进行通信。

工作区

工作区是一个独立的空间,团队成员可以在工作区内协作,共享Deployments、KintoBlocks。你可以在KintoHub的仪表盘上创建新的工作区,并添加团队成员。

GitHub、Bitbucket的账号可以关联到工作区,这样工作区可以访问你的代码。

KintoBlock

KintoBlock是自包含、容器化、语言无关、可组合、可共享的后端服务单元。目前支持的KintoBlock类型包括:

  1. Microservice:单一职责的微服务
  2. Website:从源码库直接家在、管理Web文集
  3. Custom Service:定义有状态应用,例如数据库、缓存、队列

未来会增加对Tasks、Functions的支持。

KintoBlock管理服务单元的完整生命周期,包括构建、组合、依赖管理、文档、CI/CD、部署以及扩容。

创建KintoBlock

创建KintoBlock时,你需要指定它的编程语言+SDK版本、代码仓库、通信协议(目前支持gRPC/HTTP),此外你可以定制KintoBlock的构建、运行命令,设置暴露给KintoBlock的环境变量及其默认值。

持续集成

创建KintoBlock后,首次构建会立即触发。默认情况下,每当master分支上有新的commit都会触发构建。

通过查看构建日志可以发现,KintoBlock做了以下工作:

  1. 签出代码
  2. 使用Docker的multi-stage机制执行构建:
    1. 第一stage的基础镜像取决于构建命令,构建出二进制文件
    2. 第二stage的基础镜像取决于编程语言+SDK版本,构建出运行时镜像
  3. 标记镜像并推送到镜像仓库asia.gcr.io

每次构建的结果,以列表的形式展示, 显示的字段包括BUILD id、Commit id、构建时间、构建日志、状态。支持Tag成功的构建,为其指定三段式(MAJOR.MINOR.REVISION)的版本号

目前看来,构建过程的可定制性较差,例如:

  1. Maven仓库无法使用私有服务,而且不支持Maven镜像缓存,每次构建都引起大量的外网流量
  2. 不支持指定JVM的实现,只能使用OpenJDK
环境变量

环境变量能够让Deployment在多套环境下无缝切换,你可以在KintoBlock、Deployment的配置页面上进行设置环境变量。

Deployment

Deployment是由KintoBlock编排成的、具有独特配置参数的应用程序。Deployment以Serverless的方式部署,也就是说,仅仅在被调用时才会动态加载、创建端点。

创建Deployment时,你需要指定其所属的Enviroment,其包含的KintoBlock及其版本,每个Deployment可以包含多个KintoBlock。并可以指定当KintoBlock的当前分支提交代码后是否自动部署。

你可以为Deployment中的每个KintoBlock覆盖环境的默认值。

Environment

你可以在多套环境下运行Deployment,让程序从Dev逐步晋升到Stg、Pdt环境,从而进行更加完整的测试,避免将缺陷暴露给用户。

晋升

使用晋升(Promoting)可以方便的将一个环境中的特性推送到另一个。 晋升就是将环境A的版本也部署到环境B上。

晋升这种设计之前在Jenkins X中了解过,Jenkins X甚至支持自动晋升。

回滚

KintoHub支持将Deployment回退到之前的某个版本。

API访问

要访问你的KintoBlock提供的服务,首先需要根据ClientID/ClientSecret来获取一个Token,然后通过页面指定的URL即可访问。

不论是外部还是内部访问,Endpoint的名称都是必须的,不过试用时无法获取端点列表。端点列表应该是根据APIDOC生成的,手工提取APIDOC中的端点拼装URL访问,报502错误。

← 扩展Envoy
SOFAStack学习笔记 →

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Related Posts

  • 服务网格的现状和未来
  • Kubernetes集群部署记录
  • SOFAStack学习笔记
  • Envoy学习笔记
  • Argo学习笔记

Recent Posts

  • Investigating and Solving the Issue of Failed Certificate Request with ZeroSSL and Cert-Manager
  • A Comprehensive Study of Kotlin for Java Developers
  • 背诵营笔记
  • 利用LangChain和语言模型交互
  • 享学营笔记
ABOUT ME

汪震 | Alex Wong

江苏淮安人,现居北京。目前供职于腾讯云,专注容器方向。

GitHub:gmemcc

Git:git.gmem.cc

Email:gmemjunk@gmem.cc@me.com

ABOUT GMEM

绿色记忆是我的个人网站,域名gmem.cc中G是Green的简写,MEM是Memory的简写,CC则是我的小天使彩彩名字的简写。

我在这里记录自己的工作与生活,同时和大家分享一些编程方面的知识。

GMEM HISTORY
v2.00:微风
v1.03:单车旅行
v1.02:夏日版
v1.01:未完成
v0.10:彩虹天堂
v0.01:阳光海岸
MIRROR INFO
Meta
  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org
Recent Posts
  • Investigating and Solving the Issue of Failed Certificate Request with ZeroSSL and Cert-Manager
    In this blog post, I will walk ...
  • A Comprehensive Study of Kotlin for Java Developers
    Introduction Purpose of the Study Understanding the Mo ...
  • 背诵营笔记
    Day 1 Find Your Greatness 原文 Greatness. It’s just ...
  • 利用LangChain和语言模型交互
    LangChain是什么 从名字上可以看出来,LangChain可以用来构建自然语言处理能力的链条。它是一个库 ...
  • 享学营笔记
    Unit 1 At home Lesson 1 In the ...
  • K8S集群跨云迁移
    要将K8S集群从一个云服务商迁移到另外一个,需要解决以下问题: 各种K8S资源的迁移 工作负载所挂载的数 ...
  • Terraform快速参考
    简介 Terraform用于实现基础设施即代码(infrastructure as code)—— 通过代码( ...
  • 草缸2021
    经过四个多月的努力,我的小小荷兰景到达极致了状态。

  • 编写Kubernetes风格的APIServer
    背景 前段时间接到一个需求做一个工具,工具将在K8S中运行。需求很适合用控制器模式实现,很自然的就基于kube ...
  • 记录一次KeyDB缓慢的定位过程
    环境说明 运行环境 这个问题出现在一套搭建在虚拟机上的Kubernetes 1.18集群上。集群有三个节点: ...
  • eBPF学习笔记
    简介 BPF,即Berkeley Packet Filter,是一个古老的网络封包过滤机制。它允许从用户空间注 ...
  • IPVS模式下ClusterIP泄露宿主机端口的问题
    问题 在一个启用了IPVS模式kube-proxy的K8S集群中,运行着一个Docker Registry服务 ...
  • 念爷爷
      今天是爷爷的头七,十二月七日、阴历十月廿三中午,老人家与世长辞。   九月初,回家看望刚动完手术的爸爸,发

  • 6 杨梅坑

  • liuhuashan
    深圳人才公园的网红景点 —— 流花山

  • 1 2020年10月拈花湾

  • 内核缺陷触发的NodePort服务63秒延迟问题
    现象 我们有一个新创建的TKE 1.3.0集群,使用基于Galaxy + Flannel(VXLAN模式)的容 ...
  • Galaxy学习笔记
    简介 Galaxy是TKEStack的一个网络组件,支持为TKE集群提供Overlay/Underlay容器网 ...
TOPLINKS
  • Zitahli's blue 91 people like this
  • 梦中的婚礼 64 people like this
  • 汪静好 61 people like this
  • 那年我一岁 36 people like this
  • 为了爱 28 people like this
  • 小绿彩 26 people like this
  • 彩虹姐姐的笑脸 24 people like this
  • 杨梅坑 6 people like this
  • 亚龙湾之旅 1 people like this
  • 汪昌博 people like this
  • 2013年11月香山 10 people like this
  • 2013年7月秦皇岛 6 people like this
  • 2013年6月蓟县盘山 5 people like this
  • 2013年2月梅花山 2 people like this
  • 2013年淮阴自贡迎春灯会 3 people like this
  • 2012年镇江金山游 1 people like this
  • 2012年徽杭古道 9 people like this
  • 2011年清明节后扬州行 1 people like this
  • 2008年十一云龙公园 5 people like this
  • 2008年之秋忆 7 people like this
  • 老照片 13 people like this
  • 火一样的六月 16 people like this
  • 发黄的相片 3 people like this
  • Cesium学习笔记 90 people like this
  • IntelliJ IDEA知识集锦 59 people like this
  • 基于Kurento搭建WebRTC服务器 38 people like this
  • Bazel学习笔记 37 people like this
  • PhoneGap学习笔记 32 people like this
  • NaCl学习笔记 32 people like this
  • 使用Oracle Java Mission Control监控JVM运行状态 29 people like this
  • Ceph学习笔记 27 people like this
  • 基于Calico的CNI 27 people like this
Tag Cloud
ActiveMQ AspectJ CDT Ceph Chrome CNI Command Cordova Coroutine CXF Cygwin DNS Docker eBPF Eclipse ExtJS F7 FAQ Groovy Hibernate HTTP IntelliJ IO编程 IPVS JacksonJSON JMS JSON JVM K8S kernel LB libvirt Linux知识 Linux编程 LOG Maven MinGW Mock Monitoring Multimedia MVC MySQL netfs Netty Nginx NIO Node.js NoSQL Oracle PDT PHP Redis RPC Scheduler ServiceMesh SNMP Spring SSL svn Tomcat TSDB Ubuntu WebGL WebRTC WebService WebSocket wxWidgets XDebug XML XPath XRM ZooKeeper 亚龙湾 单元测试 学习笔记 实时处理 并发编程 彩姐 性能剖析 性能调优 文本处理 新特性 架构模式 系统编程 网络编程 视频监控 设计模式 远程调试 配置文件 齐塔莉
Recent Comments
  • qg on Istio中的透明代理问题
  • heao on 基于本地gRPC的Go插件系统
  • 黄豆豆 on Ginkgo学习笔记
  • cloud on OpenStack学习笔记
  • 5dragoncon on Cilium学习笔记
  • Archeb on 重温iptables
  • C/C++编程:WebSocketpp(Linux + Clion + boostAsio) – 源码巴士 on 基于C/C++的WebSocket库
  • jerbin on eBPF学习笔记
  • point on Istio中的透明代理问题
  • G on Istio中的透明代理问题
  • 绿色记忆:Go语言单元测试和仿冒 on Ginkgo学习笔记
  • point on Istio中的透明代理问题
  • 【Maven】maven插件开发实战 – IT汇 on Maven插件开发
  • chenlx on eBPF学习笔记
  • Alex on eBPF学习笔记
  • CFC4N on eBPF学习笔记
  • 李运田 on 念爷爷
  • yongman on 记录一次KeyDB缓慢的定位过程
  • Alex on Istio中的透明代理问题
  • will on Istio中的透明代理问题
  • will on Istio中的透明代理问题
  • haolipeng on 基于本地gRPC的Go插件系统
  • 吴杰 on 基于C/C++的WebSocket库
©2005-2025 Gmem.cc | Powered by WordPress | 京ICP备18007345号-2