一个计算机技术爱好者与学习者

0%

问题简述

怎样在K8S集群中发布一个新的项目?怎样判断一个项目是发布成功了还是失败了?怎样访问一个项目?怎样实现灰度发布?怎样实现发布过程中的并发度控制、暂停、继续、取消?怎样实现回滚?

本文中,会努力寻求这些问题的答案。

参考文档:

阅读全文 »

Golang包管理工具简介

大一点的项目,通常会依赖很多第三方包。Golang把所有的第三方包都放在GOPATH/src目录下,且每个包仅保留一个版本。如果两个项目依赖不同版本的第三方包,就会产生问题。

为了解决这个问题,go在1.5版本引入了vendor属性(默认关闭),并在1.6版本中默认开启了vendor属性。简单来说,vendor属性就是让go编译时,优先从项目源码树根目录下的vendor目录查找代码(可以理解为切了一次GOPATH),如果vendor中有,则不再去GOPATH中去查找。

但是vendor目录又带来了新的问题:
(1)vendor目录中依赖包没有版本信息。这样依赖包脱离了版本管理,对于升级、问题追溯,会有点困难。
(2)如何方便的得到本项目依赖了哪些包,并方便的将其拷贝到vendor目录下?

为了解决这些问题,开发者在vendor基础上开发了多个管理工具,比较常用的有godep、govendor、glide,以及官方的dep和gomod。
本文中,我们来了解一下godep、govendor和gomod,并重点学习gomod。

参考文档:

阅读全文 »

client-go简介

直观上看,用户可以使用kubectl、客户端库或者REST请求来访问K8S API。
而实际上,无论是kubectl还是客户端库,都是封装了REST请求的工具。

client-go作为一个客户端库,能够调用K8S API,实现对K8S集群中资源对象(包括deployment、service、ingress、replicaSet、pod、namespace、node等)的增删改查等操作。

源码地址:kubernetes/client-go
接口文档:kubernetes - GoDoc

阅读全文 »