Создайте Istio Ingress-gateway POD без создания istiod

Я немного новичок в istio и все еще учусь. У меня есть вариант использования, в котором Istio уже развернуто в пространстве имен istio-system, но мне нужно развернуть модуль istio ingress-gateway Pod в пространстве имен test-ns с помощью istioOperator. Я использую istio 1.6.7.

В документах Istio упоминается запуск этого cmd: istioctl manifest apply --set profile=default --filename=istio-ingress-values.yaml, но это создаст istiod Pods в istio-system, которые я не хочу, так как он уже создан.

Итак, я запустил команду под cmds, чтобы просто создать Ingress Gateway POD, но не увидел никаких подов или сервисов, созданных в test-ns. Пожалуйста, помогите, если это возможно

kubectl apply -f istio-ingress-values.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
    namespace: test-ns
    name: testoperator
    ingressGateways:
    - enabled: true
      name: istio-ingressgateway
      namespace: test-ns
      k8s:
        env:
        - name: ISTIO_META_ROUTER_MODE
          value: sni-dnat
        hpaSpec:
          maxReplicas: 5
          metrics:
          - resource:
              name: cpu
              targetAverageUtilization: 80
            type: Resource
          minReplicas: 1
          scaleTargetRef:
            apiVersion: apps/v1
            kind: Deployment
            name: istio-ingressgateway
        resources: {}
        service:
          ports:
          - name: http2
            port: 80
            targetPort: 80
          - name: https
            port: 443
            targetPort: 443

person Rajeev Ghosh    schedule 17.03.2021    source источник
comment
Обязательно ли создавать входной шлюз в другом пространстве имен? Я предлагаю вам создать входной шлюз в пространстве имен istio-system, создать шлюз также в istio-system, а затем выбрать шлюз из виртуальной службы в пространстве имен test-ns. Таким образом, вы можете разместить свою плоскость управления в одном пространстве имен, а приложение, которое вы хотите предоставить, в другом пространстве имен (плоскость данных).   -  person Arnau Senserrich    schedule 17.03.2021
comment
Как вы установили istio? Какой профиль конфигурации вы используете?   -  person matt_j    schedule 18.03.2021
comment
@matt_j, я использовал этот cmd istioctl manifest apply --set profile = default   -  person Rajeev Ghosh    schedule 20.03.2021
comment
@ArnauSenserrich, спасибо за предложение. Я пробовал это, но все равно безуспешно   -  person Rajeev Ghosh    schedule 20.03.2021
comment
Istio-ingressgateway - это отдельный прокси-сервер Envoy.   -  person suren    schedule 25.03.2021


Ответы (1)


В Istio можно настроить профили конфигурации. Как я вижу, вы используете профиль default, поэтому я опишу, как вы можете настроить этот профиль конфигурации для создания istio-ingressgateway в пространстве имен test-ns.


Мы можем отобразить настройки профиля по умолчанию, выполнив команду istioctl profile dump default.

Сначала я сохранил эти настройки по умолчанию в файле default_profile_dump.yml:

# istioctl profile dump default > default_profile_dump.yml

Затем я изменил этот файл:
ПРИМЕЧАНИЕ. Я добавил только одну строку: namespace: test-ns.

...
    ingressGateways:
    - enabled: true
      name: istio-ingressgateway
      namespace: test-ns
...

После изменения настроек ingressGateways по умолчанию я применил эти новые настройки:

# istioctl manifest apply -f default_profile_dump.yml 
This will install the Istio 1.9.1 default profile with ["Istio core" "Istiod" "Ingress gateways"] components into the cluster. Proceed? (y/N) y
✔ Istio core installed                                                                                                                                   
✔ Istiod installed                                                                                                                                       
✔ Ingress gateways installed                                                                                                                             
- Pruning removed resources                                                                                                                                Removed HorizontalPodAutoscaler:istio-system:istio-ingressgateway.
  Removed PodDisruptionBudget:istio-system:istio-ingressgateway.
  Removed Deployment:istio-system:istio-ingressgateway.
  Removed Service:istio-system:istio-ingressgateway.
  Removed ServiceAccount:istio-system:istio-ingressgateway-service-account.
  Removed RoleBinding:istio-system:istio-ingressgateway-sds.
  Removed Role:istio-system:istio-ingressgateway-sds.
✔ Installation complete   

     

Наконец, мы можем проверить, где был развернут istio-ingressgateway:

# kubectl get pod -A | grep ingressgateway
test-ns        istio-ingressgateway-7fc7c7c-r92tw         1/1     Running   0          33s

Развертывание istiod осталось неизменным в пространстве имен istio-system:

# kubectl get deploy,pods -n istio-system
NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/istiod   1/1     1            1           51m

NAME                          READY   STATUS    RESTARTS   AGE
pod/istiod-64675984c5-xl97n   1/1     Running   0          51m
person matt_j    schedule 23.03.2021
comment
Спасибо @matt_j. Хорошие предложения. Я попробую это - person Rajeev Ghosh; 25.03.2021
comment
Привет @matt_j, 1 быстрый вопрос. Если входной шлюз находится в пространстве имен istio-system. И VirtualService, и шлюзы создаются в другом пространстве имен. Сканирует ли Ingress-gateway конфигурацию шлюзов и VirtualService всех пространств имен, определенных в кластере, чтобы решить, какие шлюзы / VS выбрать правильный - person Rajeev Ghosh; 16.04.2021