#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