首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >istio框架(istio故障注入)

istio框架(istio故障注入)

作者头像
全栈程序员站长
发布2022-08-01 10:45:49
发布2022-08-01 10:45:49
6910
举报

大家好,又见面了,我是你们的朋友全栈君。

创建Deployment,SVC

1.创建Deployment

注:它们Pod标签都有app: nginx,service服务发现根据这个标签选择,version是为后面定义版本设置的

kubectl apply -f nginx-deployment.yaml

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-v1
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
      version: v1
  template:
    metadata:
      name: nginx-v1
      labels:
        app: nginx
        version: v1
    spec:
      containers:
      - name: nginx-v1
        image: linuxwei/nginx_test:v1
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
        env:
        - name: VERSION
          value: v3
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-v2
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
      version: v2
  template:
    metadata:
      name: nginx-v2
      labels:
        app: nginx
        version: v2
    spec:
      containers:
      - name: nginx-v2
        image: linuxwei/nginx_test:v1-2
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
        env:
        - name: VERSION
          value: v3
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-v3
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
      version: v3
  template:
    metadata:
      name: nginx-v3
      labels:
        app: nginx
        version: v3
    spec:
      containers:
      - name: nginx-v3
        image: linuxwei/nginx_test:v3
        imagePullPolicy: IfNotPresent
        env:
        - name: VERSION
          value: v3
        ports:
        - containerPort: 80

2.创建svc

kubectl apply -f nginx-svc.yaml

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  selector:
    app: nginx
  type: ClusterIP
  ports:
    - targetPort: 80
      port: 80
      name: web

创建Gateway

1.创建HTTPS证书的secret

代码语言:javascript
复制
kubectl create -n istio-system secret generic all-test.com-credential --from-file=key=private.key --from-file=cert=full_chain.pem

2.创建网关

kubectl apply -f test-gateway.yaml

代码语言:javascript
复制
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  name: nginx-gateway
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - '*.test.com'
    port:
      name: http
      number: 80
      protocol: HTTP
  - hosts:
    - '*.test.com'
    port:
      name: https
      number: 443
      protocol: HTTPS
    tls:
      credentialName: all-test.com-credential
      mode: SIMPLE

根据域名进行路由分发

1.根据Pod的version标签进行版本分类(v1,v2,v3)

v3访问路径project/index.html

kubectl apply -f nginx-destinationrule.yaml

代码语言:javascript
复制
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: nginx
spec:
  host: nginx
  trafficPolicy:
    loadBalancer:
      simple: RANDOM
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
  - name: v3
    labels:
      version: v3

2.创建路由分发策略

kubectl apply -f test1-virtualservice.yaml

代码语言:javascript
复制
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: nginxvs
spec:
  hosts:
  - "test1.test.com"
  gateways:
  - istio-system/nginx-gateway       #注意不在一个namespace时前面要加gateway所在的namesapce
  http:
  - match:
    - uri:
        prefix: /
    route:
    - destination:
        host: nginx
        port:
          number: 80
        subset: v1

kubectl apply -f test2-virtualservice.yaml

代码语言:javascript
复制
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: nginxvs2
spec:
  hosts:
  - "test2.test.com"
  gateways:
  - nginx-gateway
  http:
  - match:
    - uri:
        prefix: /
    route:
    - destination:
        host: nginx
        port:
          number: 80
        subset: v2

3.配置本地hosts解析

vim /etc/hosts (ingressgatewayIP) test1.test.com (ingressgatewayIP) test2.test.com 分别访问这两个域名流量对应转到不同版本的Pod

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126779.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建Deployment,SVC
  • 创建Gateway
  • 根据域名进行路由分发
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档