- 安装docker和k8s
k8s的安装由于镜像外网无法访问,可以使用阿里的工具
https://github.com/AliyunContainerService/k8s-for-docker-desktop
k8s安装后可以通过如下命令验证版本信息
kubectl version
配置registry-mirrors提高国内源镜像的访问速度
“registry-mirrors”: [
"https://docker.mirrors.ustc.edu.cn"
]
- 下载istio二进制包,示例采用的是1.10.4版本
https://github.com/istio/istio/releases
下载解压到磁盘目录,并配置环境变量
vim ~/.bash_profile
export PATH=$PATH:/Users/xxx/istio/istio-1.10.4/bin
source ~/.bash_profile
可以通过如下命令验证版本信息
istioctl version
- 将istio和aerraki安装到k8s中
dubbo2istio示例工程需要k8s中的istio配置参数开启smartDns,aerraki已经提供了对应的安装脚本
下载aerraki源码 https://github.com/aeraki-framework/aeraki
打开工程源码可以看到{projectPath}/aeraki/demo/install-demo.sh
但是该脚本还在k8s安装了其他的pod,如果想安装最基础pod,可以在同目录下新建一个instal-istio.sh脚本编写如下内容:
BASEDIR=$(dirname "$0")/..
SCRIPTS_DIR=$BASEDIR/test/e2e/scripts
COMMON_DIR=$BASEDIR/test/e2e/common
export ISTIO_VERSION=1.10.0
export BUILD_TAG=latest
bash ${SCRIPTS_DIR}/aeraki.sh
bash ${SCRIPTS_DIR}/istio.sh -y -f ${COMMON_DIR}/istio-config.yaml
在docker和k8s运行的状态下,执行该脚本
执行结果如下:
在终端查看k8s中多了一个istio-system
命名空间,查看该namespace下的pod状态READY
和STATUS
如下为成功.
kubectl get ns #查看k8s中的namespace
kubectl get pod -n istio-system #查看namespace下pod的状态
- 下载dubbo2istio源码,部署到k8s
dubbo2istio源码地址:** **https://github.com/aeraki-framework/dubbo2istio
[可选]下载dubbo工程示例代码: https://github.com/aeraki-framework/dubbo-envoyfilter-example
打开工程目录 {projectPath}/dubbo2istio/demo/k8s/zk 里面则为需要安装的示例工程以及zookeeper配置
在终端或者idea终端执行如下命令即可
kubectl create ns dubbo //创建dubbo命名空间,应用部署在该namespace下
# TCM
kubectl label namespace dubbo istio.io/rev=1-8-1
# Istio 1.9
# kubectl label namespace dubbo istio-injection=enabled
cd dubbo2istio
kubectl apply -f demo/k8s/zk/ -n dubbo
脚本可能执行失败,可以尝试增大docker内存配置来解决
在终端查看dubbo命令空间下pod的状态
查看dubbo消费端调用日志
kubectl logs --tail 100 dubbo-sample-consumer-555b7bdd6c-f5q8l -c dubbo-sample-consumer -n dubbo
如下则为调用成功
更多: 参考dubbo2istio中的README.md