一、概述
telepresence是一款为kubernetes微服务框架提供快速本地化开发功能的开源软件。
目前国内很少关于该软件的介绍,本文内容全部基于官网文档: https://www.telepresence.io/
kubernetes集群内部的微服务的特点是,各微服务之间在集群内可以互相访问,集群外部没有很好的方法来获取集群内部的功能,比如获取数据库中的数据。(实际上借助于service的nodePort可以实现)
此外,当前的CICD流程步骤为: 提交代码 -> jenkins 拉取源码 -> maven编译 -> docker编译 -> 部署
多个步骤,虽然该过程由jenkins自动完成,但是每次调试均需要经历该步骤,降低效率。
而通过telepresence,则可以实现在本机运行本地代码,本地代码能够获取远端k8s集群的各项资源。
直白一点,telepresence就是给本机提供了k8s集群的代理,使本机直连到远程k8s集群,能够访问集群内部资源。
实际调试中发现,telepresence最新版本(0.92)中存在一些bug与限制,下文中体现
- 本文中涉及k8s与docker中的概念,不再展开
- 本文内容若结合IDEA的Source Synchronizer插件,可以提高效率。
- 该插件可以将代码改动部分或指定文件同步到指定的linux环境
二、安装
telepresence提供对多种操作系统或提供商的支持,本文重点说明centos版本linux的安装与使用
1. OS X
brew cask install osxfuse
brew install socat datawire/blackbird/telepresence
2. Ubuntu 16.04 or later
curl -s https://packagecloud.io/install/repositories/datawireio/telepresence/script.deb.sh | sudo bash
sudo apt install --no-install-recommends telepresence
3. Fedora 26 or later
curl -s https://packagecloud.io/install/repositories/datawireio/telepresence/script.rpm.sh | sudo bash
sudo dnf install telepresence
4. Arch Linux
其它linux版本只能通过源码包的方式来安装,这种方式所依赖的其它软件均需要安装:
4.1 python3.7
$ yum install -y yum-utils
$ yum-builddep python
$ curl -O https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
$ tar xf Python-3.7.0.tgz
$ cd Python-3.7.0
$ ./configure
$ make
$ make install
4.2 其它依赖软件
$ yum install -y sshfs conntrack torsocks socat git docker
$ systemctl start docker
$ systemctl enable docker
4.3 kubectl
从k8s集群的master节点拷贝 /usr/local/bin/kubectl 与 /root/.kube/config 到本机相应目录
4.4 telepresence