istio框架(istio故障注入)

创建HTTPS证书的secretkubectlcreate-nistio-systemsecretgenericall-test.com-credential–from-file=key=private.key–from-file=cert=full_chain.pem创建网关kubectlapply-ftest-gateway.yamlapiVersion:networking.istio.io/v1beta1kind:Gatewaymetadata:

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

创建Deployment,SVC

1.创建Deployment

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

kubectl apply -f nginx-deployment.yaml

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

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

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

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

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

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

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.net/126779.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 虚拟机桥接模式不能上网

    虚拟机桥接模式不能上网首先我的主机的有线连接是正常的,如下: 但是我的虚拟机的网络连接模式为桥接模式,但是却上不了网,如下:  我们来确认下,我的虚拟机的网络模式,如下: 设置全部都是对的,但是为什么就是不能上网呢?后来我发现,原来是虚拟网络编辑器的设置有问题,如下: 我们点击“虚拟网络编辑器”,如下: 由上图,我们可以知道,我的“桥…

    2022年4月26日
    39
  • Scala学习笔记(一)

    Scala学习笔记(一)

    2021年9月11日
    54
  • setAttribute的具体用法

    setAttribute的具体用法setAttribute(stringname,stringvalue):增加一个指定名称和值的新属性,或者把一个现有的属性设定为指定的值。1、样式问题setAttribute("cl

    2022年7月1日
    24
  • 电脑用户名不能用中文吗_如何修改计算机名和用户名

    电脑用户名不能用中文吗_如何修改计算机名和用户名在windows下安装,如果使用用户名是中文的,则会出现安装错误/启动失败的情况。关于这一点下边给出终极解决方案。1、假如你的中文用户名是XXXXXX,为用户目录建立软链接,软连接名称为应为xxxxx,方法如下:1)用管理员进入cmd格式下,2)进入C:\Users下,cdC:\Users3)mklink/DxxxxXXXXXX2、修改注册表1)命令…

    2022年8月31日
    5
  • redis :read error on connection

    redis :read error on connection

    2021年10月27日
    38
  • adminLte解决iframe高度问题

    adminLte解决iframe高度问题adminLte默认是全局刷新,也就是不存在frame页面,经过修改,可以很容易实现右边内容框用frame实现页面刷新,这样就不需要整个页面全局刷新,点击相应菜单时,只会刷新frame窗口,但是有一个问题就是frame默认高度只有一丁点,百度之后用了自适应也会有各种问题,比如高度只能拉伸不会缩短,在解决的道路上真的是没有一个完美的解决方案,经过自己研究,发现一个非常简单的方法,那就是用js获取wi…

    2022年7月27日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号