Istio 安装与入门 电脑版发表于:2022/1/3 15:43  >#Istio 安装 [TOC] tn2>Istio是做什么的我在使用完Istio之后将会进行详细写,可先参考官网:https://istio.io/latest/zh/docs/concepts/what-is-istio/ 前提 ------------ tn2>准备好kubernetes环境。 安装 ------------ tn2>我们可以通过官网的命令进行安装。也可以到<a href="https://github.com/istio/istio/releases/tag/1.12.1" target="_blank">Istio发布</a>页面进行下载。 ```bash curl -L https://istio.io/downloadIstio | sh - # 或 wget -O istio-1.12.1 https://github.com/istio/istio/releases/download/1.12.1/istio-1.12.1-linux-amd64.tar.gz ``` tn2>开始转到 Istio 包目录进行安装。 ```bash cd istio-1.12.1 ``` tn2>安装目录包含: `samples/` 目录下的示例应用程序 `bin/` 目录下的 istioctl 客户端二进制文件 将 istioctl 客户端加入搜索路径(Linux or macOS) ```bash export PATH=$PWD/bin:$PATH ``` tn2>对于本次安装,我们采用 demo <a href="https://istio.io/latest/zh/docs/setup/additional-setup/config-profiles/" target="_blank">配置组合</a>。 选择它是因为它包含了一组专为测试准备的功能集合,另外还有用于生产或性能测试的配置组合。 ```bash istioctl install --set profile=demo -y ``` tn2>给命名空间添加标签,指示 Istio 在部署应用的时候,自动注入 Envoy 边车代理: ```bash kubectl label namespace default istio-injection=enabled ``` tn>如果你的平台有供应商提供的配置组合,比如:Openshift,则在下面命令中替换掉 demo 配置项。更多细节请参阅你的<a href="https://istio.io/latest/zh/docs/setup/platform-setup/" target="_blank">平台说明</a> 部署示例应用 ------------ tn2>部署 <a href="https://istio.io/latest/zh/docs/examples/bookinfo/" target="_blank">Bookinfo 示例应用</a>: ```bash kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml ``` tn2>应用很快会启动起来。当每个 Pod 准备就绪时,Istio 边车代理将伴随它们一起部署。 ```bash kubectl get services kubectl get pods ``` tn2>测试是否启动成功。通过如下命令可以获取应用title信息。 ```bash kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -s productpage:9080/productpage | grep -o "<title>.*</title>" <title>Simple Bookstore App</title> ``` 对外开放应用程序 ------------ tn2>此时,BookInfo 应用已经部署,但还不能被外界访问。 要开放访问,你需要创建<a href="https://istio.io/latest/zh/docs/concepts/traffic-management/#gateways" target="_blank"> Istio 入站网关(Ingress Gateway)</a>, 它会在网格边缘把一个路径映射到路由。 <br/> tn2>1.把应用关联到 Istio 网关 ```bash kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml ``` tn2>2.确保配置文件没有问题: ```bash istioctl analyze ``` 确定入站 IP 和端口 ------------ tn2>按照说明,为访问网关设置两个变量:`INGRESS_HOST` 和 `INGRESS_PORT`。 ```bash kubectl get svc istio-ingressgateway -n istio-system ``` ```bash export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}') export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}') export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].port}') ``` tn2>设置环境变量 `GATEWAY_URL`: ```bash export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT ``` tn2>确保 IP 地址和端口均成功的赋值给了环境变量: ```bash echo "$GATEWAY_URL" ``` 验证外部访问 ------------ tn2>运行下面命令,获取 Bookinfo 应用的外部访问地址。 ```bash echo "http://$GATEWAY_URL/productpage" ``` 查看仪表板 ------------ tn2>Istio 和几个遥测应用做了集成。 遥测能帮你了解服务网格的结构、展示网络的拓扑结构、分析网格的健康状态。 使用下面说明部署 Kiali 仪表板、 以及 Prometheus、 Grafana、 还有 Jaeger 安装 Kiali 和其他插件,等待部署完成。 ```bash kubectl apply -f samples/addons kubectl rollout status deployment/kiali -n istio-system ``` tn2>访问 Kiali 仪表板。 ```bash istioctl dashboard kiali --address 0.0.0.0 ``` tn2>在左侧的导航菜单,选择 Graph ,然后在 Namespace 下拉列表中,选择 default 。 Kiali 仪表板展示了网格的概览、以及 Bookinfo 示例应用的各个服务之间的关系。 它还提供过滤器来可视化流量的流动。  更多安装 ------------ tn2>https://istio.io/latest/zh/docs/setup/platform-setup/