Azure Kubernetes — настройка Istio как с входным, так и с выходным шлюзом?

#kubernetes #istio #azure-aks

#kubernetes #istio #azure-aks

Вопрос:

Я планирую установить Istionв моем кластере AKS, используя следующую конфигурацию, какие все компоненты будут установлены? будет ли он устанавливать как входные, так и выходные шлюзы?

 istioctl operator init

kubectl create ns istio-system

cat << EOF | kubectl apply -f -
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: istio-control-plane
spec:
  # Use the default profile as the base
  # More details at: https://istio.io/docs/setup/additional-setup/config-profiles/
  profile: default
  # Enable the addons that we will want to use
  addonComponents:
    grafana:
      enabled: true
    prometheus:
      enabled: true
    tracing:
      enabled: true
    kiali:
      enabled: true
  values:
    global:
      # Ensure that the Istio pods are only scheduled to run on Linux nodes
      defaultNodeSelector:
        beta.kubernetes.io/os: linux
    kiali:
      dashboard:
        auth:
          strategy: anonymous
EOF
  

Ответ №1:

Манифест оператора istio в вашем вопросе не будет устанавливать выходной шлюз. Он основан на профиле по умолчанию, который, согласно документации istio, можно проверить с помощью istioctl profile dump :

по умолчанию: включает компоненты в соответствии с настройками IstioOperator API по умолчанию. Этот профиль рекомендуется для производственных развертываний и для основных кластеров в многокластерной сетке. Вы можете отобразить настройки по умолчанию, выполнив команду istioctl profile dump .

Для установки выходного шлюза с помощью IstioOperator выполните следующие действия из документации istio:

Настройка шлюзов

Шлюзы — это особый тип компонента, поскольку может быть определено несколько входных и выходных шлюзов. В IstioOperator API шлюзы определяются как тип списка. Профиль default устанавливает один входной шлюз, называемый istio-ingressgateway .Вы можете проверить значения по умолчанию для этого шлюза:

 istioctl profile dump --config-path components.ingressGateways
istioctl profile dump --config-path values.gateways.istio-ingressgateway
  

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

Начиная с версии 1.7, имя шлюза всегда должно указываться при наложении. Если не указывать какое-либо имя, по умолчанию больше istio-ingressgateway не используется значение или istio-egressgateway .

Новый пользовательский шлюз можно создать, добавив новую запись списка:

 apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    ingressGateways:
      - name: istio-ingressgateway
        enabled: true
      - namespace: user-ingressgateway-ns
        name: ilb-gateway
        enabled: true
        k8s:
          resources:
            requests:
              cpu: 200m
          serviceAnnotations:
            cloud.google.com/load-balancer-type: "internal"
          service:
            ports:
            - port: 8060
              targetPort: 8060
              name: tcp-citadel-grpc-tls
            - port: 5353
              name: tcp-dns
  

Обратите внимание, что значения Helm ( spec.values.gateways.istio-ingressgateway/egressgateway ) являются общими для всех входных / выходных шлюзов. Если они должны быть настроены для каждого шлюза, рекомендуется использовать отдельный CR IstioOperator для создания манифеста для пользовательских шлюзов, отдельно от основной установки Istio:

 apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  profile: empty
  components:
    ingressGateways:
      - name: ilb-gateway
        namespace: user-ingressgateway-ns
        enabled: true
        # Copy settings from istio-ingressgateway as needed.
  values:
    gateways:
      istio-ingressgateway:
        debug: error
  

Более подробную информацию об установке istio на AKS можно найти здесь.

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

1. Спасибо, я смог разобраться.

Ответ №2:

Я использовал следующую конфигурацию для настройки как входных, так и выходных шлюзов.

 cat << EOF | kubectl apply -f -
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: istio-control-plane
spec:
  # Use the default profile as the base
  # More details at: https://istio.io/docs/setup/additional-setup/config-profiles/
  profile: default
  # Enable the addons that we will want to use
  addonComponents:
    grafana:
      enabled: true
    prometheus:
      enabled: true
    tracing:
      enabled: true
    kiali:
      enabled: true
  values:
    global:
      # Ensure that the Istio pods are only scheduled to run on Linux nodes
      defaultNodeSelector:
        beta.kubernetes.io/os: linux
    kiali:
      dashboard:
        auth:
          strategy: anonymous
  components:
    egressGateways:
    - name: istio-egressgateway
      enabled: true
EOF