Robin Blog

Stay hungry, Stay foolish

Kubernetes源码分析:Client-go

Kubernetes Source Code Reading: Client-go

The version of Kubernetes Client-go source code is release-4.0. 2015年8月使用Go语言搭建基于Kubernetes的PaaS平台的时候,还没有任何Kubernetes的Go client。 只能把Kubernetes的核心源码撸一遍,通过源码级别集成Kubernetes,直接调用Kubernetes的一些代码,来实...

Golang命令行参数解析库源码分析:flag VS pflag

Golang Flag Library Source Code Reading: flag VS pflag

Golang官方的命令行参数解析库flag,已经用的比较少。而是Google的一位Golang大牛Steve Francia自己写的命令行参数解析库pflag更加优秀,从而得到广泛使用。下面从源码的角度对它们的工作原理进行分析,同时对它们的功能进行一个全面的比较。 Golang Flag Flag Types Flag原生支持8种命令行参数类型:bool、int、int64、uint、...

Kubernetes源码分析:从Command Entrypoint看Google代码风格的一致性

Kubernetes Source Code Reading: Learn Google Consistent Code Style From Command Entrypoint

The version of Kubernetes source code is V1.6.6. Kubernetes是Google主导的一款目前最成功的开源软件,完全使用Google自己发明的开发语言Go编写的。 现在Kubernetes的代码量已经非常庞大,刚开始看源码的时候,可能的确需要鼓起很大的勇气。不过,在阅读源码过程中,你会慢慢地发现,大到系统架构,小到代码风格,Goo...

Golang日志库源码分析:Glog

Golang Log Library Source Code Reading: Glog

Glog是著名google开源C++日志库glog的golang版本,具有轻量级、简单、稳定和高效等特性。 目前被用在大型的容器云开源项目Kubernetes中。 Overview Glog主要有以下特点: 支持四种日志等级INFO < WARING < ERROR < FATAL,不支持DEBUG等级。 每个日志等级对应一个日志文件,低等级的日志文件中除了包...

HTTPS原理解析及自建证书生产

Security communication between microservices

HTTPS原理 HTTPS是基于HTTP协议的更加安全的协议。HTTPS在HTTP协议与TCP协议间加一层SSL协议,负责对这两层间通信的数据进行加密(HTTP内容加密后传到TCP)和解密(TCP内容加密后传到HTTP)。 HTTPS虽然通过SSL对通信数据进行加密,但是并不能保证足够安全。因为无法确认服务器的安全性,很有可能访问的就是钓鱼网站。因此,HTTPS必须结合SSL和CA证书,...

如何搭建安全的ETCD集群

How to Setup Secure ETCD Cluster

在容器云平台中,除了Docker以外,ETCD是另外一个必不可少的组件。许多知名开源项目都依赖ETCD作为其键值存储,例如Kubernetes,Swarm以及Contiv等。 ETCD同时是一个非常关键性的组件,容器云平台中的其他组件无时无刻不在跟ETCD打交道。例如,Kubernetes将集群的所有配置,状态,资源等信息都存在ETCD集群中,甚至组件间不是通过API直接通信,而是通过Wat...

Jenkins Plugin开发指南

Jenkins Plugin Development Guide

环境准备 所有Jenkins plugin都是java开发的Maven项目,需要准备如下环境: 安装工具: Maven; JDK 6.0或以上版本,Eclipse 环境变量:PATH中添加mvn.bat路径;JAVA_HOME中添加SDK路径 导入项目 Jenkins plugin项目一般都是开源的,可以在他们的基础上进行定制化。 从github上git clone项目 ...

结构化数据高效序列化方法:Google Protocol Buffers

An Efficient Serializing Method for Structured Data: Google Protocol Buffers

Protocol Buffers是Google开源的一种针对结构化数据的跨平台、跨语言、可扩展的序列化方法。 目前,Protocol Buffers已经成为Google通用的数据模型,实际使用中有48K个不同message类型,并在ETCD,Docker和Kubernetes等热门开源项目中得到广泛使用。 Google开源的新RPC框架gRPC,默认就是采用Protocol Buffers的...

Kubernetes集群采用Contiv网络

Use Contiv as CNI Network in Kubernetes Cluster

Contiv Configuration Contiv Master 启动netmaster $ netmaster -debug -cluster-mode kubernetes -cluster-store etcd://${ETCD_HOST}:${ETCD_PORT} > /var/log/netmaster.log 2>&1 &a...

Contiv源码分析:Netplugin

Contiv Source Code Reading: Netplugin

The version of Contiv source code is v1.0.0-alpha-01-28-2017.10-23-11.UTC. 程序启动 Netplugin首先读取并解析命令行参数,然后根据参数配置,New一个Agent,主要工作是有Agent完成。Agent进行一系列的初始化后,会不停地监听并处理网络状态存储(ETCD或者Consul)中的event。 ...