- 下载istio
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.8.4 sh -
注: ISTIO_VERSION指定对应的istio版本,上述服务器不能科学上网可能会比较慢或者失败,可自行下载好上传到服务器,上面命令只是下载istio的压缩包然后解压将命令加入环境变量而已。
- 上述命令执行成功后查看下版本是否正确
istioctl version
- 使用istioctl安装对应的套件
默认安装只会安装核心的组件和套件,demo会安装几乎所有的组件和套件,学习的话可以用demo,生产用默认方式即可,也可以根据需求自定义安装所需组件及其套件
#默认安装
istioctl manifest install
#选择profile
istioctl manifest install --set profile=demo
#自定义安装选项
istioctl manifest install --set addonComponents.grafana.enabled=true
#自定义安装清单
istioctl manifest install --set installPackagePath=<发布路径>/install/kubernetes/operator/charts
这里我采用demo方式,默认方式安装istioctl manifest install即可。
istioctl manifest install --set profile=demo
- 部署服务
# 创建istio命名空间
kubectl create ns istio
# 对istio命名空间开启自动注入sidecar
kubectl label namespace istio istio-injection=enabled --overwrite
# 获取命名空间注入状态
kubectl get namespace -L istio-injection
部署简单的http服务httpbin测试:
# 部署
kubectl apply -f samples/httpbin/httpbin.yaml -n istio
# 查看
kubectl get pods -n istio
部署gateway和VirtualService是其在外部可以被访问:
cat << EOF| kubectl apply -n istio -f -
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: httpbin-gateway
spec:
selector:
istio: ingressgateway # use Istio default gateway implementation
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: httpbin
spec:
hosts:
- "*"
gateways:
- httpbin-gateway
http:
- match:
- uri:
prefix: /headers
route:
- destination:
port:
number: 8000
host: httpbin
EOF
通过ip加端口即可访问,这里我使用了外部负载均衡器,所以访问的是外部负载均衡器的公网地址。