搭建 Istio 开发测试环境

Catalogue
  1. 1. Pilot Discovery
    1. 1.1. 构建
    2. 1.2. 运行
  2. 2. Pilot Agent
    1. 2.1. 构建 Proxy
    2. 2.2. 构建 Agent
    3. 2.3. 运行
  3. 3. 参考
  4. 4. 后记

Pilot Discovery

构建

1
2
3
4
5
6

# 下载,检出版本
git clone https://github.com/istio/istio.git && cd istio && git checkout <YOUR_WANT_ISTIO>

# 构建
go build pilot/cmd/pilot-discovery

运行

为了让我们在本地开发测试 Pilot,首先准备好 kube-config

启动 poilot

1
pilot-discovery discovery --kubeconfig ~/.kube/config <默认配置>

Pilot Discovery 运行是非常的简单的,比较复杂的是 Agent。

Pilot Agent

构建 Proxy

1
2
3
4
5
# 下载并检出
git clone https://github.com/istio/proxy.git && cd proxy

# make build_envoy
make build_envoy

构建 istio proxy 会遇见各种的问题,有问题可以参考这里 How to build Istio proxy on OSX (Catalina)

构建 Agent

1
2
# 构建 agent
go build pilot/cmd/pilot-agent

运行

建议在 istio 目录下运行,这里的 #PWD = istio path

  • 创建 envoy 启动模板
1
2
3
mkdir -p var/lib/istio/envoy/

cp tools/packaing/common/envoy_bootstrap.json var/lib/istio/envoy/envoy_bootstrap_tmpl.json
  • 创建 Mesh 配置, mesh.yaml
1
2
3
4
5
6
7
8
9
10
11
12
enableTracing: true
ingressService: istio-ingress
defaultConfig:
connectTimeout: 1s
configPath: "/etc/istio/proxy"
binaryPath: "<YOUR ENVOY BIN>"
serviceCluster: istio-proxy
drainDuration: 2s
parentShutdownDuration: 3s
proxyAdminPort: 15000
statsdUdpAddress: ""
discoveryAddress: istiod-remote.istio-system.svc:15012 <建议修改 Host istiod-remote.istio-system.svc 映射到 127.0.0.1>
  • 创建 Kube Token

//TODO

  • 运行 istioAgent
1
2
3
EXTERNAL_ISTIOD=true;CA_ROOT_CA=<ROOT-CA证书,从服务器下载下来>;CA_ADDR=istiod-remote.istio-system.svc:15012;JWT_POLICY=first-party-jwt;ISTIO_META_CLUSTER_ID=Kubernetes;ISTIO_META_DNS_CAPTURE=false;POD_NAME=netshoot-local-test;POD_NAMESPACE=default;SERVICE_ACCOUNT=default

proxy --meshConfig mesh.yaml

参考

后记

提了一个 Issue 给社区,看看有没有更好的方式进行运行。