istio 服务网格 服务发布

istio 服务网格 服务发布


前言

Bookinfo 是 Istio 社区官方推荐的示例应用之一。它可以用来演示多种 Istio 的特性,并且它是一个异构的微服务应用。该应用由四个单独的微服务构成。
在这里插入图片描述


一、istio 环境

1.容器

在这里插入图片描述

2.服务

在这里插入图片描述
其中istio-ingressgateway需要修改svc:
在spec下面添加外部负载均衡,IP地址是k8s的master节点,node节点无效。

  externalIPs:
  - 192.168.3.94
apiVersion: v1
kind: Service
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"istio-ingressgateway","install.operator.istio.io/owning-resource":"installed-state","install.operator.istio.io/owning-resource-namespace":"istio-system","istio":"ingressgateway","istio.io/rev":"default","operator.istio.io/component":"IngressGateways","operator.istio.io/managed":"Reconcile","operator.istio.io/version":"1.7.3","release":"istio"},"name":"istio-ingressgateway","namespace":"istio-system"},"spec":{"ports":[{"name":"status-port","port":15021,"targetPort":15021},{"name":"http2","port":80,"targetPort":8080},{"name":"https","port":443,"targetPort":8443},{"name":"tcp","port":31400,"targetPort":31400},{"name":"tls","port":15443,"targetPort":15443}],"selector":{"app":"istio-ingressgateway","istio":"ingressgateway"},"type":"LoadBalancer"}}
  creationTimestamp: "2020-10-23T08:31:29Z"
  labels:
    app: istio-ingressgateway
    install.operator.istio.io/owning-resource: installed-state
    install.operator.istio.io/owning-resource-namespace: istio-system
    istio: ingressgateway
    istio.io/rev: default
    operator.istio.io/component: IngressGateways
    operator.istio.io/managed: Reconcile
    operator.istio.io/version: 1.7.3
    release: istio
  name: istio-ingressgateway
  namespace: istio-system
  resourceVersion: "36077645"
  selfLink: /api/v1/namespaces/istio-system/services/istio-ingressgateway
  uid: 3043b502-2e20-463d-a5ce-beb0f0012db9
spec:
  clusterIP: 10.96.138.129
  externalIPs:
  - 192.168.3.94
  externalTrafficPolicy: Cluster
  ports:
  - name: status-port
    nodePort: 28430
    port: 15021
    protocol: TCP
    targetPort: 15021
  - name: http2
    nodePort: 28613
    port: 80
    protocol: TCP
    targetPort: 8080
  - name: https
    nodePort: 30761
    port: 443
    protocol: TCP
    targetPort: 8443
  - name: tcp
    nodePort: 13768
    port: 31400
    protocol: TCP
    targetPort: 31400
  - name: tls
    nodePort: 8870
    port: 15443
    protocol: TCP
    targetPort: 15443
  selector:
    app: istio-ingressgateway
    istio: ingressgateway
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer: {}

3.bookinfo部署

3.1 bookinfo部署

github上下载istio,并到istio-1.7.3目录,执行下面到命令:

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml 

在这里插入图片描述
在这里插入图片描述

3.2 gateway部署

kind: Gateway
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"networking.istio.io/v1alpha3","kind":"Gateway","metadata":{"annotations":{},"name":"bookinfo-gateway","namespace":"cok"},"spec":{"selector":{"istio":"ingressgateway"},"servers":[{"hosts":["*"],"port":{"name":"http","number":80,"protocol":"HTTP"}}]}}
  creationTimestamp: "2020-10-26T03:27:20Z"
  generation: 4
  name: bookinfo-gateway
  namespace: cok
  resourceVersion: "36103178"
  selfLink: /apis/networking.istio.io/v1beta1/namespaces/cok/gateways/bookinfo-gateway
  uid: 927bcb8e-e191-4718-8209-d9d81c1750bb
spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - productpage-demo.io  #这里指定我们外部需要访问的域名
    port:
      name: http
      number: 80
      protocol: HTTP

3.3 vs部署

3.3.1 bookinfo-vs部署
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  creationTimestamp: "2020-10-27T06:47:58Z"
  generation: 5
  name: bookinfo
  namespace: cok
  resourceVersion: "36101859"
  selfLink: /apis/networking.istio.io/v1beta1/namespaces/cok/virtualservices/bookinfo
  uid: d2c86f6f-5384-4c0a-b1e4-eada4c55173e
spec:
  gateways:
  - bookinfo-gateway
  hosts:
  - productpage-demo.io
  http:
  - match:
    - uri:
        exact: /productpage
    - uri:
        prefix: /static
    - uri:
        exact: /login
    - uri:
        exact: /logout
    - uri:
        prefix: /api/v1/products
    route:
    - destination:
        host: productpage
        port:
          number: 9080
3.3.2 productpage-vs部署
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  creationTimestamp: "2020-10-27T06:36:54Z"
  generation: 1
  name: productpage
  namespace: cok
  resourceVersion: "35718078"
  selfLink: /apis/networking.istio.io/v1beta1/namespaces/cok/virtualservices/productpage
  uid: 7353841f-46c3-4a68-94c6-eb1e161cddee
spec:
  hosts:
  - productpage
  http:
  - route:
    - destination:
        host: productpage
        subset: v1

3.4 dr部署

3.4.1 productpage-dr部署
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  creationTimestamp: "2020-10-27T06:35:34Z"
  generation: 1
  name: productpage
  namespace: cok
  resourceVersion: "35717914"
  selfLink: /apis/networking.istio.io/v1beta1/namespaces/cok/destinationrules/productpage
  uid: 82bba7d9-f52c-488a-9e54-b83598e3b0c6
spec:
  host: productpage
  subsets:
  - labels:
      version: v1
    name: v1

3.5 修改主机hosts文件。

192.168.3.94 productpage-demo.io

3.6 浏览器通过域名访问。

在这里插入图片描述

总结

到这里,我们就通过创建depoy,svc,vs,gw,dr组件完成了服务网格的部署并可以通过域名进行访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值