备考ICA----Istio实验14---出向流量管控Egress Gateways实验

备考ICA----Istio实验14---出向流量管控Egress Gateways实验

1. 发布测试用 pod

bash 复制代码
kubectl apply -f istio/samples/sleep/sleep.yaml
kubectl get pods -l app=sleep

2. ServiceEntry

创建一个ServiceEntry允许流量访问edition.cnn.com

egressgw/edition-ServiceEntry.yaml

yaml 复制代码
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: cnn
spec:
  hosts:
  - edition.cnn.com
  ports:
  - number: 80
    name: http-port
    protocol: HTTP
  - number: 443
    name: https
    protocol: HTTPS
  resolution: DNS

部署ServiceEntry

bash 复制代码
kubectl apply -f egressgw/edition-ServiceEntry.yaml

访问测试

bash 复制代码
kubectl exec deploy/sleep -- curl -sSL -o /dev/null \
-D - http://edition.cnn.com/politics

检查egress的日志

bash 复制代码
kubectl logs -l istio=egressgateway -c istio-proxy -n istio-system | tail

此时流量是从pod上的envoy直出到公网的.

bash 复制代码
kubectl logs sleep-7656cf8794-xwqww -c istio-proxy  | tail

3.将流量导向egress

3.1 定义出口网关规则

为 edition.cnn.com 创建一个出口,端口 80,并为定向到出口网关的流量创建一个目标规则

egressgw/cnn-egressgateway.yaml

yaml 复制代码
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-egressgateway
spec:
  selector:
    istio: egressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - edition.cnn.com
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: egressgateway-for-cnn
spec:
  host: istio-egressgateway.istio-system.svc.cluster.local
  subsets:
  - name: cnn

部署

bash 复制代码
kubectl apply -f egressgw/cnn-egressgateway.yaml 

3.2 配置egress规则

配置路由规则,将流量从边车导向到 Egress Gateway,再从 Egress Gateway 导向到外部服务

egressgw/direct-cnn-through-egress-gateway.yaml

yaml 复制代码
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: direct-cnn-through-egress-gateway
spec:
  hosts:
  - edition.cnn.com
  gateways:
  - istio-egressgateway
  - mesh
  http:
  - match:
    - gateways:
      - mesh
      port: 80
    route:
    - destination:
        host: istio-egressgateway.istio-system.svc.cluster.local
        subset: cnn
        port:
          number: 80
      weight: 100
  - match:
    - gateways:
      - istio-egressgateway
      port: 80
    route:
    - destination:
        host: edition.cnn.com
        port:
          number: 80
      weight: 100

部署

bash 复制代码
kubectl apply -f egressgw/direct-cnn-through-egress-gateway.yaml

3.3 再次测试访问

bash 复制代码
kubectl exec deploy/sleep -- curl -sSL \
-o /dev/null -D - http://edition.cnn.com/politics

看上去和之前一样,再看下sleep的envoy日志,本次的流量也从envoy sidecar上出去了

bash 复制代码
kubectl logs sleep-7656cf8794-xwqww -c istio-proxy  | tail

再看egress的envoy上的日志,之前那次是没有经过egress的,这次流量明显是从egress出去的

bash 复制代码
kubectl logs -l istio=egressgateway -c istio-proxy -n istio-system | tail

我们已经将出向的流量配置成由Egress转发

至此备考ICA----Istio实验14---出向流量管控Egress Gateways实验完成

相关推荐
DolitD7 小时前
UE像素流与云渲染技术方案对比分析
3d·云原生·ue5·云计算·图形渲染
这个DBA有点耶9 小时前
云数据库半夜卡顿,CPU才30%?深挖云盘IOPS突发限制与内核挂起机制
数据库·mysql·云原生
分布式存储与RustFS14 小时前
JuiceFS 接 RustFS 当数据后端:把对象存储挂成本地文件系统
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
孔令飞17 小时前
很多人想学AI Infra,今天推荐一个 AI Agent / AI Infra 学习路线
云原生·go·ai编程
Z21-X18 小时前
云原生运维实战笔记:华为云存储类服务全景解析——EVS、OBS、SFS与CBR深度实践
运维·笔记·学习·云原生·华为云
分布式存储与RustFS18 小时前
K8s 集群备份落到自建对象存储:Velero 接 RustFS 配置指南
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
螺蛳粉 螺蛳粉1 天前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
知已难寻1 天前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
n112121 天前
Ollama 接 Open WebUI 中文界面:我踩的 4 个坑
云原生·eureka·ollama·本地大模型·open webui·私有部署·中文界面
阿里云云原生1 天前
用户说 App“下不了单”:用 Session Replay 看清流程卡在哪一步
云原生