0
点赞
收藏
分享

微信扫一扫

k8s安装istio及istio入门示例


以下是一个使用Istio作为应用程序网关的示例:

首先,需要安装并配置Istio。可以使用以下命令安装Istio:

$ curl -L https://istio.io/downloadIstio | sh -
$ cd istio-1.9.1
$ export PATH=$PWD/bin:$PATH
$ istioctl install --set profile=demo

安装完成后,需要创建一个名为“bookinfo”的示例应用程序,可以使用以下命令:

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

接下来,需要创建一个Istio网关。可以使用以下配置文件:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"

该配置文件定义了一个名为“bookinfo-gateway”的Istio网关,将所有流量都从端口80传入,并将它们路由到所有有效的主机上。

接下来,需要创建一个Istio虚拟服务。可以使用以下配置文件:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
  - "*"
  gateways:
  - bookinfo-gateway
  http:
  - match:
    - uri:
        prefix: /productpage
    route:
    - destination:
        host: productpage
        port:
          number: 9080
  - match:
    - uri:
        prefix: /login
    route:
    - destination:
        host: login
        port:
          number: 9080

该配置文件定义了一个名为“bookinfo”的Istio虚拟服务,将所有流量路由到有效主机上。它指定了一个与URI前缀匹配的路由规则,并将其路由到具有相应的主机和端口的目标服务。

在这个示例中,虚拟服务将/productpage和/login URI前缀路由到具有相应主机和端口的目标服务。

最后,可以访问应用程序的productpage页面,通过Istio网关进行路由。可以使用以下命令:

$ export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
$ export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
$ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
$ curl -s http://$GATEWAY_URL/productpage | grep -o "<title>.*</title>"

该命令获取Istio网关的IP地址和端口,并使用curl命令访问应用程序的/productpage页面。如果一切顺利,应该会显示页面的标题。

需要注意的是,在上面的示例中,Istio虚拟服务定义了两个路由规则,将/productpage和/login URI前缀路由到不同的目标服务。这提供了在Istio网关上进行多个应用程序的路由的灵活性。


举报

相关推荐

0 条评论