istio部署

建议在k8s集群中部署,关于k8s的快速部署,可以参考一下方案:
https://blog.csdn.net/weixin_45363959/article/details/134643519?spm=1001.2014.3001.5502

1. 下载istio

1.1 使用以下命令会在本地下载Istio 包

 curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.20.0 TARGET_ARCH=x86_64 sh -

1.2 进入 istio 文件夹

 cd istio-1.20.0

1.3 将 istioctl 客户端添加到路径

export PATH=$PWD/bin:$PATH

2 安装 istio

2.1 采用 demo 配置组合

istioctl install --set profile=demo -y

2.2 如果现有k8s有已有应用在运行,比如测试环境,建议重新创建命名空间,不要影响到现有已经在使用的命名空间

# 创建命名空间
kubectl create namespace istio-test
# 后续应用都部署在istio-test的这个命名空间下,所以要给命名空间添加标签,指示 Istio 在部署应用的时候,自动注入 Envoy 边车代理。
kubectl label namespace istio-test istio-injection=enabled

3. 部署示例应用

3.1 部署 Bookinfo 示例应用

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml -n istio-test

3.2 观察应用启动情况

# pod情况
kubectl get pods -n istio-test -w
# service情况
kubectl get svc -n istio-test 

3.3 确认应用都起来后,对应用进行测试确认

kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"

如果应用一切OK,该命令会返回:Simple Bookstore App

4 外部访问应用

4.1 给应用创建istio入口网关

 kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

4.2 验证配置是否正确

istioctl analyze

5 外部访问的ip和端口

因为没有外部负载均衡设备,所以通过选择一个节点的端口来代替。
设置外部访问的IP、端口:

export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')

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"

运行下面命令,获取 Bookinfo 应用的外部访问地址。

echo "http://$GATEWAY_URL/productpage"

5 查看仪表板

安装 Kiali 和其他插件

kubectl apply -f samples/addons

启动Kiali 仪表板

# 192.168.1.200为master ip地址
istioctl dashboard kiali  --address=192.168.1.200 &

启动grafana仪表板

# 192.168.1.200为master ip地址
istioctl dashboard grafana  --address=192.168.1.200 &

以上相关仪表板都是通过后台运行,启动后会放回访问地址

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐