#kubernetes #istio
#kubernetes #istio
Вопрос:
Я использую Istio-1.0.6 для реализации аутентификации / авторизации. Я пытаюсь использовать веб-токены Jason (JWT). Я следовал большинству примеров из документации, но я не получаю ожидаемого результата. Вот мои настройки:
Обслуживание
kubectl describe services hello
Name: hello
Namespace: agud
Selector: app=hello
Type: ClusterIP
IP: 10.247.173.177
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
Endpoints: 172.16.0.193:8080
Session Affinity: None
Шлюз
kubectl describe gateway
Name: hello-gateway
Namespace: agud
Kind: Gateway
Metadata:
Cluster Name:
Creation Timestamp: 2019-03-15T13:40:43Z
Resource Version: 1374497
Self Link:
/apis/networking.istio.io/v1alpha3/namespaces/agud/gateways/hello-gateway
UID: ee483065-4727-11e9-a712-fa163ee249a9
Spec:
Selector:
Istio: ingressgateway
Servers:
Hosts:
*
Port:
Name: http
Number: 80
Protocol: HTTP
Виртуальная служба
kubectl describe virtualservices
Name: hello
Namespace: agud
API Version: networking.istio.io/v1alpha3
Kind: VirtualService
Metadata:
Cluster Name:
Creation Timestamp: 2019-03-18T07:38:52Z
Generation: 0
Resource Version: 2329507
Self Link:
/apis/networking.istio.io/v1alpha3/namespaces/agud/virtualservices/hello
UID: e099b560-4950-11e9-82a1-fa163ee249a9
Spec:
Gateways:
hello-gateway
Hosts:
*
Http:
Match:
Uri:
Exact: /hello
Uri:
Exact: /secured
Route:
Destination:
Host: hello.agud.svc.cluster.local
Port:
Number: 8080
Политика
kubectl describe policies
Name: jwt-hello
Namespace: agud
API Version: authentication.istio.io/v1alpha1
Kind: Policy
Metadata:
Cluster Name:
Creation Timestamp: 2019-03-18T07:45:33Z
Generation: 0
Resource Version: 2331381
Self Link:
/apis/authentication.istio.io/v1alpha1/namespaces/agud/policies/jwt-hello
UID: cf9ed2aa-4951-11e9-9f64-fa163e804eca
Spec:
Origins:
Jwt:
Audiences:
hello
Issuer: testing@secure.istio.io
Jwks Uri: https://raw.githubusercontent.com/istio/istio/release-1.0/security/tools/jwt/samples/jwks.json
Principal Binding: USE_ORIGIN
Targets:
Name: hello.agud.svc.cluster.local
Результат
Я ожидаю получить ошибку 401, но получаю 200. Что не так с моей конфигурацией и как мне это исправить?
curl $INGRESS_HOST/hello -s -o /dev/null -w "%{http_code}n"
200
Комментарии:
1. пожалуйста, упростите это, предоставив файлы yaml вместо команды describe
Ответ №1:
У вас есть:
Port: <unset> 8080/TCP
Для маршрутизации Istio и безопасности необходимо задать для имени порта значение http
или http-<something>
.
Я пробовал с Istio 1.1. Я получил 503
вместо 401
.
Комментарии:
1. Привет @esnible, я добавил порт 8080, но это не помогло.
2. У вашей службы Kubernetes «hello» будет порт. В Kubernetes порты имеют поле name, но это всего лишь метка. Название имеет смысл для Istio. Попробуйте
kubectl edit
свою службу hello и укажите имя портаhttp
.3. К сожалению, это тоже не помогло. kubectl описывает приветственное имя службы: hello Пространство имен: agud Метки: <нет> Аннотации: <нет> Селектор: app = hello Тип: ClusterIP IP: 10.247.174.223 Порт: http 8080 / TCP targetPort: 8080 / TCP Конечные точки: 172.16.0.163: 8080 Привязка к сеансу: Нет События: <нет>