K8S V1.35新版已经不支持ingress了,所以要用istio代替。本文记录安装设置过程,供大家参考学习。
安装istio
- 下载
从https://github.com/istio/istio/releases 下载并解压 - 安装
执行命令
sh
./bin/istioctl install --set profile=default -y
Gateway api 安装
sh
kubectl apply --server-side -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.4.1/standard-install.yaml
部署应用
yaml
---
# 1.业务service
apiVersion: v1
kind: Service
metadata:
name: tmp-gateway-service
namespace: irmp-prod
spec:
ports:
- port: 8080
targetPort: 8080
selector:
app: tmp-gateway
type: ClusterIP
# 2. Gateway - 让 Istio 自动创建 Service
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: tmp-gateway-gw
namespace: irmp-prod
spec:
gatewayClassName: istio
listeners:
- name: default
hostname: "*.irmp.com"
port: 80
protocol: HTTP
allowedRoutes:
namespaces:
from: All
---
# 3. HTTPRoute
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: gw-httproute
namespace: irmp-prod
spec:
parentRefs:
- name: tmp-gateway-gw
hostnames:
- "gw.irmp.com"
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: tmp-gateway-service
port: 8080
Gateway部署之后,它会自动安装一个tmp-gateway-gw-istio的Service,可以查看这个service的VIP,通过VIP可以访问你的服务了:
sh
export GW_IP=$(kubectl get svc tmp-gateway-gw-istio -n irmp-prod -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo ${GW_IP}
curl -H "Host: gw.irmp.com" http://${GW_IP}/