备考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实验完成

相关推荐
SilentSamsara16 小时前
存储卷体系:EmptyDir/HostPath/PV/PVC/StorageClass 的选型决策树
服务器·微服务·云原生·容器·架构·kubernetes·k8s
王的宝库17 小时前
【K8s】集群安全机制(二):授权(Authorization)详解与实战
学习·云原生·容器·kubernetes
东北甜妹19 小时前
Docker 容器故障排查
云原生·eureka
Shining059620 小时前
QEMU 编译开发环境搭建
人工智能·语言模型·自然语言处理·云原生·qemu·vllm·华为昇腾
匀泪2 天前
云原生(Kubernetes service微服务)
微服务·云原生·kubernetes
倔强的胖蚂蚁2 天前
Ollama Modelfile 配置文件 全指南
云原生·开源
AutoMQ2 天前
AWS 新发布的 S3 Files 适合作为 Kafka 的存储吗?
云原生·消息队列·云计算
heimeiyingwang2 天前
【架构实战】Service Mesh深度对比:Istio vs Linkerd
架构·istio·service_mesh
MY_TEUCK2 天前
从零开始:使用Sealos Devbox快速搭建云原生开发环境
人工智能·spring boot·ai·云原生·aigc
没有口袋啦2 天前
《基于 GitOps 理念的企业级自动化 CI/CD 流水线》
阿里云·ci/cd·云原生·自动化·k8s