当前位置: 首页 > article >正文

istio从入门到精通(1)

1、以单个的nginx举例

部署nginx服务

# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.19.0
        ports:
        - containerPort: 80
---
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
kubectl apply -f nginx.yml

启用istio

kubectl label namespace default istio-injection=enabled

我们需要重新部署nginx服务

kubectl delete -f nginx.yaml
kubectl apply -f nginx.yaml

我们需要部署istio gateway 和vs服务

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: nginx-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
# nginx-virtualservice.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: nginx
spec:
  hosts:
  - "*"
  gateways:
  - nginx-gateway
  http:
  - match:
    - uri:
        prefix: /
    route:
    - destination:
        host: nginx
        port:
          number: 80

使用 kubectl 部署 Gateway 和 VirtualService:

kubectl apply -f nginx-gateway.yaml
kubectl apply -f nginx-virtualservice.yaml

访问 Nginx 服务

kubectl get svc istio-ingressgateway -n istio-system

然后,使用该 IP 地址访问 Nginx:

curl http://<INGRESS_GATEWAY_IP>>

重点注意:
由于上面采用了hosts 字段的作用,我们需要了解其含义

当 hosts 设置为 "*" 时,表示该虚拟服务适用于所有通过 Istio Gateway 的请
求,无论请求的主机或域名是什么。意味着无论客户端请求的是 example.com、foo.bar 还是任何其他域名,Istio 都会将该请求路由到该虚拟服务中定义的规则。

注意事项

安全性:在生产环境中,使用 "*" 可能会带来安全风险,因为它会将所有流量路由到该虚
拟服务。建议明确指定适用的域名。
​优先级:如果有多个虚拟服务匹配同一个请求,Istio 会按照最长匹配原则选择最具体的
规则。例如,hosts: ["example.com"] 的优先级高于 hosts: ["*"]。```


http://www.kler.cn/a/574365.html

相关文章:

  • vue+neo4j 四大名著知识图谱问答系统
  • es 慢查询引起 cpu报警处理方法
  • 计算机毕业设计Python+Django+Vue3微博数据舆情分析平台 微博用户画像系统 微博舆情可视化(源码+ 文档+PPT+讲解)
  • Java,Golang,Rust 泛型的大体对比小记
  • 验证测试 .NET 10 预览版的 Windows 窗体中的剪贴板新增功能
  • 【1Panel】平替宝塔面板!1Panel面板香橙派部署结合内网穿透远程管理
  • 第5章:vuex
  • C++ Primer 拷贝控制和资源管理
  • 嵌入式 ARM Linux 系统构成(2):Linux内核层
  • 文本处理Bert面试内容整理-如何使用BERT进行微调?
  • FX-枚举
  • Python编程中常见的10个案例
  • Java爬虫获取淘宝商品搜索接口(item_search)的详细解析
  • C++ Primer 拷贝、赋值与销毁
  • Spring WebFlux 入门指南
  • 计算机视觉之dlib人脸关键点绘制及微笑测试
  • C语言基础之【指针】(下)
  • 【嵌入式通信协议】 I²C 详细介绍
  • 【LeetCode111】二叉树的最小深度
  • 哈尔滨服务器租用的流程