Установка Istio на уровне проекта

#kubernetes #openshift #istio

#kubernetes #openshift #istio

Вопрос:

Возможно ли установить Istio на уровне проекта? Каждое руководство по установке Istio, которое я вижу, предназначено для всего кластера. Но поскольку в моей компании несколько отделов используют один и тот же кластер, это не вариант.

Комментарии:

1. То, что вы говорите, не имеет никакого смысла. Итак, несколько отделов имеют доступ к кластеру, и вы хотите решить эту проблему, установив Istio на уровне проекта, к которому (вероятно) имеют доступ еще больше пользователей? Кроме того, именно поэтому существуют правила RBAC.

2. Что? Насколько я понимаю, в OpenShift несколько проектов совместно используют один и тот же кластер. Спасибо за -1.

3. ОК. Давайте предположим, что вы можете это сделать. Теперь вы установили Istio на уровне проекта. В вашем проекте 20% пользователей должны иметь доступ к кластеру, но остальные 80% не должны (например), или из ваших пользователей k8s 20% должны иметь доступ к Istio, в то время как остальные 80% не должны. Как вы решаете эту проблему? Вы можете сказать, что я просто не даю им доступ к кластеру. Тогда не давайте их с самого начала. Для меня все еще не имеет смысла. Вам нужно использовать RBAC.

Ответ №1:

Istio установлен в одном пространстве имен, но не обязательно работает для всего кластера. На самом деле Istio работает только для тех рабочих нагрузок, в которые внедрен Istio sidecar.

Например, следующая команда создаст несколько развертываний (и, следовательно, модулей), в которые будет внедрен модуль Istio Sidecar. Эти модули будут включать все функции Istio.

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

Однако следующая команда не будет вводить Istio sidecar и, как следствие, Istio control plane не изменит их поведение.

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

Чтобы управлять входящим / исходящим трафиком в сетку служб istio, вы можете создать шлюзы Istio (на границе сетки):https://istio.io/docs/reference/config/networking/v1alpha3/gateway /

Istio также связан с доступом к трафику и имеет свой собственный istio-ingressgateway (аналогичный входному ресурсу K8S, но без применения какого-либо правила трафика по умолчанию):https://istio.io/docs/tasks/traffic-management/ingress /

Остальной трафик, не проходящий через эти пути, не будет частью трафика, управляемого Istio Service Mesh.

Чтобы протестировать это, вы можете легко установить демонстрационную версию Istio по умолчанию bookinfo без дополнительных средств (вторая команда выше) и убедиться, что телеметрия не зарегистрирована и данные отслеживания отсутствуют. Если вы используете Kiali (www.kiali .ввод-вывод) вы увидите, что график сервиса отображается пустым и отключенным (это означает, что телеметрия не зарегистрирована).

График обслуживания в Kiali для модулей вне сервисной сетки

Кроме того, вы можете предоставить любую службу bookinfo и использовать их без какого-либо взаимодействия Istio:

Вызов службы рейтингов, в которую не введен sidecar

Ответ №2:

Это возможно, если у вашего проекта есть собственное пространство имен. Вы бы просто включили istio для этого пространства имен:

 kind: Namespace
apiVersion: v1
metadata:
  name: yourapp
  labels:
    app: yourapp
    istio-injection: enabled