引言
istio gateway作为网官,暴露80。
目录
架构图
gateway
gateway.yaml
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: gateway1
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- '*'
直接暴露80,任何域名都可以访问
我们执行
kubectl apply -f gateway.yaml
查看运行状况
kubectl get svc -l=istio=ingressgateway -n istio-system
你会发现LoadBalancer 里面有IP地址 在EXTERNAL-IP 。
本地集群也可以LoadBalancer, 可以自动分配IP。可以根据教程配置好。
实战:MetalLB的安装与使用-2023.3.5(测试成功)_metallb 安装_一念一生~one的博客-CSDN博客
VirtualService
vs-helloworld.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: hello-world
spec:
hosts:
- "*"
gateways:
- gateway1
http:
- route:
- destination:
host: myapp
port:
number: 80
执行
kubectl apply -f vs-helloworld.yaml
查看
kubectl get vs
service 部署
test.yaml
apiVersion: v1
kind: Service
metadata:
name: myapp
namespace: default
spec:
selector:
app: myapp
release: canary
ports:
- name: http
port: 80
targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deploy
spec:
replicas: 1
selector:
matchLabels:
app: myapp
release: canary
template:
metadata:
labels:
app: myapp
release: canary
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v2
ports:
- name: httpd
containerPort: 80
验证集群内可以正常访问service服务
浏览器访问