# huaweicloud-istio-bookinfo-development-guide **Repository Path**: HuaweiCloudDeveloper/huaweicloud-istio-bookinfo-development-guide ## Basic Information - **Project Name**: huaweicloud-istio-bookinfo-development-guide - **Description**: 基于华为云CCE快速构建Kubernetes集群,在CCE基础上快速实现手动安装Istio以及部署istio官方demo-bookinfo的部署实践文档。 - **Primary Language**: 其他 - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-05-11 - **Last Updated**: 2023-02-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [TOC] **cce集群部署istio官方demo-bookinfo** ================================ **cce搭建** ----------------- 搭建一个cce集群,选择至少两个节点,且单节点内存大于32g,否则安装istio会失败 [istio官方搭建CCE教程](https://istio.io/latest/docs/setup/platform-setup/huaweicloud/) **bookinfo部署** -------------------- ### 配置kubectl - 在cce集群下载kubeconfig.json文件,放置在usr/local目录下 - 配置kubectl ``` mkdir -p $HOME/.kube mv -f kubeconfig.json $HOME/.kube/config ``` - 验证集群信息,输入kubectl cluster-info,安装成功显示如下图 ![图片说明](http://image.huawei.com/tiny-lts/v1/images/566d72b9b819ea990577eca013f0a166_879x123.png) - 如果没有安装kubectl,可以参考K8s官方[链接](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/)安装 ### 安装istio - 下载最新版 > curl -L https://istio.io/downloadIstio | sh - - 下载指定版 > curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.6.8 TARGET_ARCH=x86_64 sh - - 如果无法通过命令下载,请[下载](https://github.com/istio/istio/releases/tag/1.13.3)官方文件拷贝文件至/usr/local目录下 - 这里选择的是istio-1.13.3版本,解压,安装istio,大概需要5到10分钟安装完成(节点需要配置弹性IP,否则会安装失败) - 安装istio ``` cd /usr/local tar -zxvf istio-1.13.3-linux-amd64.tar.gz cd istio-1.13.3 export PATH=$PWD/bin:$PATH istioctl install --set profile=demo -y ``` 安装成功如下图 ![图片说明](http://image.huawei.com/tiny-lts/v1/images/3dc08dc535e69b2ad38574f8fe6e8964_958x114.png) ### 部署bookInfo - 给命名空间添加标签,指示 Istio 在部署应用的时候,自动注入 Envoy 边车代理;以及部署BookInfo程序 ``` kubectl label namespace default istio-injection=enabled kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml ``` 部署之后服务会逐步启动,查看下服务和应用信息 ``` kubectl get services kubectl get pods ``` ![图片说明](http://image.huawei.com/tiny-lts/v1/images/47464137ffd78cf69f620168b6f2dac8_1004x269.png) 大概需要10几分钟,待所有服务都显示Ready状态 ![图片说明](http://image.huawei.com/tiny-lts/v1/images/c7a08573d6337bf709a4922e37212232_644x146.png) - [istio官方部署参考链接](https://istio.io/latest/zh/docs/setup/getting-started/) ### 配置网关 - 关联应用和网关 > kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml - 执行下面命令以判断你的 Kubernetes 集群环境是否支持外部负载均衡: > kubectl get svc istio-ingressgateway -n istio-system ![图片说明](http://image.huawei.com/tiny-lts/v1/images/8eac0271035f34ce0bb0082a1ceb60bf_1045x119.png) - 发现clusterIP为空,需要配置才能支持外部访问,我们这里选择用master节点IP配置 >kubectl edit service istio-ingressgateway -n istio-system ![图片说明](http://image.huawei.com/tiny-lts/v1/images/8168179054f5f252a65737ed7faa2123_635x275.png) - 设置环境变量 GATEWAY_URL: ``` export INGRESS_HOST=$(kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}') export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT echo "$GATEWAY_URL" ``` - 查看istio 网关信息,发现clusterIP地址已经修改 > kubectl get svc istio-ingressgateway -n istio-system ### 安装控制台插件 Kiali - 安装命令 ``` kubectl apply -f samples/addons kubectl rollout status deployment/kiali -n istio-system ``` - 编辑kiali配置文件 >kubectl edit service kiali -n istio-system ![图片说明](http://image.huawei.com/tiny-lts/v1/images/ec0243a726b819e194fba5951c94d66c_805x391.png) - 查看kiali > kubectl get svc -n istio-system|grep kiali ![图片说明](http://image.huawei.com/tiny-lts/v1/images/2914fcea79ade350949dcd5bc17873ef_952x73.png) - 访问控制台成功 ![图片说明](http://image.huawei.com/tiny-lts/v1/images/7a03cb068b6db4a8bc32a93780969b10_849x522.png) ### 测试 - 用 curl 命令来确认是否能够从集群外部访问 Bookinfo 应用程序 > curl -s http://${GATEWAY_URL}/productpage | grep -o ".*" - 正确如下图 ![图片说明](http://image.huawei.com/tiny-lts/v1/images/b16f64657218f55a4745636bd1f375f3_1034x75.png) - 访问http://$GATEWAY_URL/productpage, 页面刷新几次,再查看kiali图表发现生成访问链路,表明部署成功了! ![图片说明](http://image.huawei.com/tiny-lts/v1/images/306876a52ac676e4535f1df5f973b77b_917x457.png)