搭建开发环境

参考Istio官方文档:

https://github.com/istio/istio/wiki/Dev-Guide

准备环境

按照官方文档的要求先准备好golang/docker/kubernetes/fpm。

同样按照官方文档的要求设置环境变量:

export GOPATH=/home/sky/work/soft/go
export PATH=$GOPATH/bin:$PATH
export ISTIO=$GOPATH/src/istio.io
export HUB="docker.io/aoxiaojian"
export TAG=aoxiaojian
export GITHUB_USER=skyao
export KUBECONFIG=${HOME}/.kube/config

build

在istio目录下执行make命令:

make
make docker

然后通过Docker images命令可以看到新build出来的docker镜像:

$ docker images
REPOSITORY                           TAG                                        IMAGE ID            CREATED              SIZE
istio/node-agent-k8s                 98c2fe55136b584f19499615a509143127ac7532   a988dfde603a        17 seconds ago       235MB
istio/kubectl                        98c2fe55136b584f19499615a509143127ac7532   eb9b7c9b5de1        41 seconds ago       360MB
istio/sidecar_injector               98c2fe55136b584f19499615a509143127ac7532   c004d72da376        About a minute ago   47.1MB
istio/galley                         98c2fe55136b584f19499615a509143127ac7532   910ba0296ef2        About a minute ago   320MB
istio/citadel                        98c2fe55136b584f19499615a509143127ac7532   606bfc1a071d        About a minute ago   51.3MB
istio/mixer_codegen                  98c2fe55136b584f19499615a509143127ac7532   9e0519ca2dfa        About a minute ago   15.8MB
istio/mixer                          98c2fe55136b584f19499615a509143127ac7532   491c656242ac        About a minute ago   71.4MB
istio/servicegraph                   98c2fe55136b584f19499615a509143127ac7532   f8c7d7fc60e5        About a minute ago   11.4MB
istio/proxy_init                     98c2fe55136b584f19499615a509143127ac7532   f8f0e35bbc4a        About a minute ago   121MB
istio/test_policybackend             98c2fe55136b584f19499615a509143127ac7532   26848d4ce62a        2 minutes ago        265MB
istio/app                            98c2fe55136b584f19499615a509143127ac7532   0bc69e99902b        2 minutes ago        316MB
istio/proxyv2                        98c2fe55136b584f19499615a509143127ac7532   0ec135749c6b        2 minutes ago        370MB
istio/proxytproxy                    98c2fe55136b584f19499615a509143127ac7532   df4354e32772        2 minutes ago        370MB
istio/proxy_debug                    98c2fe55136b584f19499615a509143127ac7532   da1009d4e234        2 minutes ago        932MB
istio/pilot                          98c2fe55136b584f19499615a509143127ac7532   c539ef7acb36        3 minutes ago        309MB

debug

  • 在本地开发阶段可以方便的debug代码,代码更新后,不用重新构建镜像,可以高效的进行debug
  • debug环境开箱即用,不需要每个开发人员进行配置

在本地启动container,挂载本地的workspace,docker bash 上去进行dlv

使用方式

cd $istio_src 
# 挂载本地的src到docker,修改马上生效
docker run -it --security-opt=seccomp:unconfined -p 2345:2345  -v $(pwd):/go/src/istio.io/istio -w /go/src/istio.io/istio reg.docker.alibaba-inc.com/sofastack/meshci-1.11:0.1 bash 

# 登录后对某个UT进行debug,例如xds_test.go 的TestEnvoy func
dlv test --build-flags='pilot/pkg/proxy/envoy/v2/xds_test.go' --headless --api-version=2 --listen=0.0.0.0:2345 -- -test.run ^TestEnvoy$

goland通过配置

img