Пользовательский шлюз Istio в пространстве имен

Я пытаюсь открыть службу с помощью Istio Gateway и VirtualService, следуя инструкциям на странице https://istio.io/blog/2019/custom-ingress-gateway

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: demo
  name: demo
  namespace: demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo
  template:
    metadata:
      labels:
        app: demo
    spec:
      containers:
      - image: nginx
        name: nginx
---
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: demo
  name: demo
  namespace: demo
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: demo
  type: ClusterIP
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: demo-gw
  namespace: demo
spec:
  selector:
    app: demo
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "example.com"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: demo-vs
  namespace: demo
spec:
  hosts:
  - "example.com"
  gateways:
  - demo-gw
  http:
  - route:
    - destination:
        host: demo

Я использую minikube кластер с minikube tunnel, так что istio-ingressgateway имеет LoadBalancer IP. Я изменил /etc/hosts, чтобы указать example.com на istio-ingressgateway IP-адрес службы, вот так

10.111.251.46 example.com

Запрос, похоже, доходит до прокси-сервера Envoy. curl -v -X TRACE http://example.com возвращается

*   Trying 10.111.251.46...
* TCP_NODELAY set
* Connected to example.com (10.111.251.46) port 80 (#0)
> TRACE / HTTP/1.1
> Host: example.com
> User-Agent: curl/7.64.1
> Accept: */*
> 
< HTTP/1.1 404 Not Found
< date: Wed, 29 Apr 2020 12:32:49 GMT
< server: istio-envoy
< content-length: 0
< 
* Connection #0 to host example.com left intact
* Closing connection 0

person moazzem    schedule 29.04.2020    source источник
comment
Привет, сообщение в блоге, на которое вы указали ссылку, устарело. This blog post was written assuming Istio 1, so some of this content may now be outdated. Какая версия Istio установлена ​​на вашем кластере minikube?   -  person Piotr Malec    schedule 29.04.2020
comment
Я запускаю Istio 1.5 на Kubernetes 1.18, minikube 1.9.1   -  person moazzem    schedule 29.04.2020


Ответы (1)


Как отметил @Piotr Malec в комментариях

Сообщение в блоге, на которое вы указали ссылку, устарело. Это сообщение в блоге было написано для Istio 1, поэтому часть этого контента может быть устаревшей.


Я бы порекомендовал использовать оператор istio, так как istio 1.5 это лучший вариант чтобы добавить свой собственный входной шлюз.

По этому поводу существует открытая проблема с github, есть несколько способов ее установить.

Например, с помощью yaml из этого комментария вы можете установить профиль istio по умолчанию. с входным шлюзом по умолчанию и, кроме того, он создаст второй входной шлюз в пространстве имен dev.


Надеюсь, вы найдете это полезным.

person Jakub    schedule 30.04.2020