Я использую istio 1.0.2 версии с функцией безопасности (istio-demo-auth.yaml), а версия k8s - v1.9.1.

  • Следуйте примеру istio.io для bookinfo. Успешный.

    curl -o /dev/null -s -w "%{http_code}\n" http://ingressip:port/productpage
    return 200
    
  • Удалите приложение bookinfo, затем измените файл yaml, поместив все приложение в пространство имен (мультиарендность).

    а. разверните bookinfo в пространстве имен мультитенантности:

    kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/platform/kube/bookinfo-multitenancy.yaml)
    

    б. определите входной шлюз для приложения для мультитенантности:

    kubectl apply -f samples/bookinfo/networking/bookinfo-gateway-multitenancy.yaml
    
            apiVersion: networking.istio.io/v1alpha3
            kind: VirtualService
            metadata:
              name: bookinfo
              namespace: multitenancy
            spec:
              hosts:
              - "*"
              gateways:
              - bookinfo-gateway
              http:
              - match:
                - uri:
                    exact: /productpage
                - uri:
                    exact: /login
                - uri:
                    exact: /logout
                - uri:
                    prefix: /api/v1/products
                route:
                - destination:
                    host: productpage
                    port:
                      number: 9080
    

    c. подтвердите, что приложение запущено:

    curl -o /dev/null -s -w "%{http_code}\n" http://ingressip:port/productpage 
    
    Return 404
    
0
SmileSees 1 Ноя 2018 в 11:03

1 ответ

Лучший ответ

Укажите в хосте назначения: productpage.multitenancy.svc.cluster.local. Поскольку шлюз находится в пространстве имен default (я предполагаю, что вы используете определение bookinfo-gateway Gateway из стандартной bookinfo), поместите VirtualService в пространство имен default также.

1
Vadim Eisenberg 1 Ноя 2018 в 09:22