Настройка интеграции с Istio#
Для работы EVTA с Istio возможно указание параметров в конфигурационном файле vars.yml.
В аннотации развертывания (поле annotations файла vars.yml) необходимо добавить:
sidecar.istio.io/inject: 'true'
Блок настроек файла vars.yml, относящихся к Istio:
istio: # настройки манифестов Istio
# destinationRule: # параметры для манифеста DestinationRule Istio
# outlierDetection:
# consecutive5xxErrors: 3
# interval: 30s
# baseEjectionTime: 1m
# maxEjectionPercent: 10
peerAuthentication:
create: false
# name: peer-auth-0
# mtls_mode: PERMISSIVE # UNSET (default) | DISABLE | PERMISSIVE | STRICT
ingress:
deployment:
create: false # создавать ли Deployment для istio ingressgateway
name: evta # Суффикс названия деплоймента и сервиса входного граничного прокси. К этому названию автоматически будет добавлен префикс "ingressgateway-"
# resources:
# limits:
# cpu: 0.1
# memory: 128M
# requests:
# cpu: 0.1
# memory: 64M
podAntiAffinity:
enabled: true # Если значение установлено в true, то антитенантность будет применена к подам ingressgateway
readinessProbe: {}
# initialDelaySeconds: 1
# timeoutSeconds: 1
# periodSeconds: 2
# successThreshold: 1
# failureThreshold: 30
annotations:
sidecar.istio.io/inject: 'false'
# # Дополнительные аннотации для граничного прокси. Здесь можно описать импорт сертификатов из vault/secman
# vault.hashicorp.com/agent-inject-secret-ca.pem: 'true'
# vault.hashicorp.com/secret-volume-path-ca.pem: /vault/ingress
# vault.hashicorp.com/namespace: DEV_DZO
# vault.hashicorp.com/role: role-ga-secman-eda
# vault.hashicorp.com/secret-volume-path-key.pem: /vault/ingress
# vault.hashicorp.com/agent-inject: 'true'
# vault.hashicorp.com/agent-inject-secret-key.pem: 'true'
# vault.hashicorp.com/agent-init-first: 'true'
# vault.hashicorp.com/agent-limits-cpu: 100m
# vault.hashicorp.com/agent-requests-cpu: 100m
# vault.hashicorp.com/secret-volume-path-crt.pem: /vault/ingress
# vault.hashicorp.com/agent-inject-secret-crt.pem: 'true'
# vault.hashicorp.com/agent-inject-template-key.pem: |
# {%- raw %}
# {{- with secret "PKI/issue/role-ga-secman-eda"
# "common_name=evta.eda.solution.sbt" "format=pem" "ttl=20h"
# "private_key_format=pkcs8" -}}
# {{ .Data.private_key }}
# {{- end }}
# {%- endraw %}
# vault.hashicorp.com/agent-inject-template-ca.pem: |
# {%- raw %}
# {{- with secret "PKI/issue/role-ga-secman-eda"
# "common_name=evta.eda.solution.sbt" "format=pem" "ttl=20h"
# "private_key_format=pkcs8" -}}
# {{- range $idx, $cert := .Data.ca_chain }}
# {{ $cert }}
# {{- end }}
# {{- end }}
# {%- endraw %}
# vault.hashicorp.com/agent-inject-template-crt.pem: |
# {%- raw %}
# {{- with secret "PKI/issue/role-ga-secman-eda"
# "common_name=evta.eda.solution.sbt" "format=pem" "ttl=20h"
# "private_key_format=pkcs8" -}}
# {{ .Data.certificate }}
# {{- end }}
# {%- endraw %}
labels: {}
# secman-injector: enabled # лейбл для активации интеграции с secman vault agent injector
# istioDiscoveryService: istiod # название discovery сервиса панели истио к которой подключен ваш неймспейс
# istioControlPlane: control-plane-01 # название неймспейса контрольной панели истио к которой подключен ваш неймспейс
# proxyImage: image # ссылка на образ граничного прокси (IGEG)
service: # параметры сервиса Ingress
create: false # создавать ли манифест сервиса
# name: evta-ingressgateway-svc # имя сервиса Ingress (по умолчанию имя генерируется автоматически)
# port:
# name: https-8082
# number: 8082
# protocol: TCP
# selector: # Селектор для интеграции с уже существующим подом ingressgateway
# istio: ingressgateway-tribe-sy-synes-nt
# app: ingressgateway-tribe-sy-synes-nt
# route, ссылающийся на имя описанного в ingress service порт, по которому будет производиться маршрутизация внутри ingress.
route:
create: false # создавать ли манифест Route
# host: test1-https-ingress.apps.stands-vdc01.solution.sbt
# annotations: {}
# tls:
# termination: passthrough
# service:
# port: https-8082
# name: evta-ingressgateway-svc
# gateway, в котором указывается параметр содержащий ingress url, который указан в route, и порт из service ingress'a, в который будет заворачиваться трафик.
gateway:
create: false # создавать ли манифест Gateway
# name: evta-ingressgateway-gw # имя манифеста (по умолчанию имя генерируется автоматически)
# hosts: test1-https-ingress.apps.stands-vdc01.solution.sbt
# port:
# name: https
# number: 8082
# protocol: HTTPS
# tls:
# caCertificates: /etc/istio/egressgateway0-ca-certs/ca-chain.cert.pem
# cipherSuites:
# - ECDHE-RSA-AES256-GCM-SHA384
# - ECDHE-ECDSA-AES128-GCM-SHA256
# - ECDHE-RSA-AES128-GCM-SHA256
# - AES256-GCM-SHA384
# - AES128-GCM-SHA256
# minProtocolVersion: TLSV1_2
# mode: MUTUAL
# privateKey: /etc/istio/egressgateway0-certs/tls.key
# serverCertificate: /etc/istio/egressgateway0-certs/tls.crt
# virtualService
virtualService:
create: false # создавать ли манифест VirtualService
# hosts: 'test1-https-ingress.apps.stands-vdc01.solution.sbt'
# http:
# # example for rest
# - prefix: /publish
# port: 8080
# - prefix: /subscribe
# port: 8081
# # example for grpc
# - prefix: /ru.sbt.synapse.fpss.adapter.grpc.api.PublishService
# port: 8080
# - prefix: /ru.sbt.synapse.fpss.adapter.grpc.api.SubscribeService
# port: 8081
# массив serviceEntry, которые нужно создать
# serviceEntry:
# - host: my_hostname
# addresses: { IP_ADDRESS }/32
# resolution: NONE
# port:
# name: tcp-kafka
# number: 9092
# protocol: TCP
# # annotations: # раскомментировать, если нужно, чтобы serviceEntry осталась после helm uninstall
# # "helm.sh/resource-policy": keep
# - host: secman-dzo.solution.sbt
# resolution: DNS
# port:
# name: tcp-vault
# number: 8443
# protocol: TCP
# - host: ext.audit2-http-proxy.apps.stands-vdc01.solution.sbt
# resolution: DNS
# port:
# name: https-audit
# number: 443
# protocol: HTTPS
egress:
deployment:
create: false # создавать ли Deployment для istio egressgateway
name: evta # Суффикс названия деплоймента и сервиса выходного граничного прокси. К этому названию автоматически будет добавлен префикс "egressgateway-"
# resources:
# limits:
# cpu: 0.1
# memory: 128M
# requests:
# cpu: 0.1
# memory: 64M
podAntiAffinity:
enabled: true # Если значение установлено в true, то антитенантность будет применена к подам egressgateway
readinessProbe: {}
# initialDelaySeconds: 1
# timeoutSeconds: 1
# periodSeconds: 2
# successThreshold: 1
# failureThreshold: 30
annotations:
sidecar.istio.io/inject: 'false'
# # Дополнительные аннотации для граничного прокси. Здесь можно описать импорт сертификатов из vault/secman
# vault.hashicorp.com/agent-inject-template-cert.pem: |
# {%- raw %}
# {{- with secret "A/DEV/SY/EVTD/KV/example-audit-cert" -}}
# {{ index .Data "cert" }}
# {{- end }}
# {%- endraw %}
# vault.hashicorp.com/agent-inject-secret-ca.pem: 'true'
# vault.hashicorp.com/secret-volume-path-ca.pem: /vault
# vault.hashicorp.com/namespace: DEV_DZO
# vault.hashicorp.com/role: role-ga-secman-eda
# vault.hashicorp.com/agent-inject-secret-cert.pem: 'true'
# vault.hashicorp.com/secret-volume-path-key.pem: /vault
# vault.hashicorp.com/agent-inject: 'true'
# vault.hashicorp.com/secret-volume-path-cert.pem: /vault
# vault.hashicorp.com/agent-inject-secret-key.pem: 'true'
# vault.hashicorp.com/agent-init-first: 'true'
# vault.hashicorp.com/agent-limits-cpu: 200m
# vault.hashicorp.com/agent-requests-cpu: 200m
# vault.hashicorp.com/agent-inject-template-key.pem: |
# {%- raw %}
# {{- with secret "A/DEV/SY/EVTD/KV/example-audit-cert" -}}
# {{ index .Data "key" }}
# {{- end }}
# {%- endraw %}
# vault.hashicorp.com/agent-inject-template-ca.pem: |
# {%- raw %}
# {{- with secret "A/DEV/SY/EVTD/KV/example-audit-cert" -}}
# {{ index .Data "ca" }}
# {{- end }}
# {%- endraw %}
labels: {}
# secman-injector: enabled # лейбл для активации интеграции с secman vault agent injector
# istioDiscoveryService: istiod # название discovery сервиса панели истио к которой подключен ваш неймспейс
# istioControlPlane: control-plane-01 # название неймспейса контрольной панели истио к которой подключен ваш неймспейс
# proxyImage: image # ссылка на образ граничного прокси (IGEG)
service: # параметры сервиса Egress
name: evta-egressgateway-svc # имя сервиса Egress (по умолчанию имя генерируется автоматически)
create: false # создавать ли манифест сервиса
# internalPort: 9443 # внутренний порт Egress
# internalPortName: http-9443
# internalPortProtocol: http
# selector: # содержимое поля spec.selector в манифесте. По умолчанию выбирается создаваемый выше egressgateway
# app: egressgateway-tribe-sy-synes-nt
# istio: egressgateway-tribe-sy-synes-nt
gateway: # параметры манифеста Gateway для Istio Egress
create: false # создавать ли манифест
# name: evta-egressgateway-gw # имя манифеста (по умолчанию имя генерируется автоматически)
# selector: # содержимое поля spec.selector в манифесте. По умолчанию выбирается создаваемый выше egressgateway
# istio: egressgateway-tribe-sy-synes-nt
destinationRule: # Конфигурация destination rule к сервису egressgateway
create: false
# name: evta-egressgateway-dr # имя манифеста (по умолчанию имя генерируется автоматически)
# outlierDetection:
# consecutive5xxErrors: 3
# interval: 30s
# baseEjectionTime: 1m
# maxEjectionPercent: 10
# # При создании istio манифестов для проксирования трафика kafka из прикладного приложения к bootstrap серверу нужно обращаться на хост следующего формата:
# # {название_сервиса_egressgateway}.{имя_неймспейса}.svc.cluster.local:{gwPort_для_кафки_указываемый_ниже}
kafka: [] # параметры для направления kafka трафика через istio egressgateway. Можно указать список bootstrap серверов кафки
# - hosts: bootstrap.server1.host:9093,bootstrap.server2.host:9093 # хост и порт bootstrap серверов кафки. Если кластер, можно указать несколько. Разделитель ","
# gwPort: 10092 # порт сервиса egressgateway по которому будет доступна кафка изнутри неймспейса
# gwTls:
# mode: ISTIO_MUTUAL # Валидные значения: "PASSTHROUGH", "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", "ISTIO_MUTUAL", "OPTIONAL_MUTUAL"
# destinationRule: # параметры для манифеста DestinationRule Istio для кафки
# create: true # создавать ли манифест
# outlierDetection:
# consecutive5xxErrors: 5
# interval: 5m
# baseEjectionTime: 5m
# maxEjectionPercent: 50
# tls:
# mode: MUTUAL
# clientCertificate: /path/to/egress/certificates/ca-chain.cert.pem
# privateKey: /path/to/egress/certificates/tls.crt
# caCertificates: /path/to/egress/certificates/tls.key
# virtualService: # параметры для манифеста VirtualService для кафки
# create: true # создавать ли манифест
# serviceEntry: # параметры для манифеста ServiceEntry для кафки
# create: true # создавать ли манифест
vault: # параметры для интеграции с HashiCorp Vault
# host: vault.url # хост сервиса HashiCorp Vault
# port: 8443 # порт сервиса HashiCorp Vault
# externalPort: 8443 # порт сервиса HashiCorp Vault для обращения из приклада
# # Порты и протоколы ниже используются в манифестах VirtualService, Gateway, Gateway Service
# # Поддерживаемые gwSvc протоколы - "SCTP", "TCP", "UDP"
# gwPort: 9447 # порт на egressGateway
# gwProtocol: TLS # протокол на egressGateway
# gwSvcProtocol: TCP # протокол на service egressGateway
# gwTls:
# mode: ISTIO_MUTUAL # Валидные значения: "PASSTHROUGH", "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", "ISTIO_MUTUAL", "OPTIONAL_MUTUAL"
destinationRule: # параметры для манифеста DestinationRule Istio
create: false # создавать ли манифест
# name: evta-vault-dr # имя манифеста (по умолчанию имя генерируется автоматически)
# tls:
# mode: MUTUAL
# caCertificates: /vault/ca.pem
# clientCertificate: /vault/cert.pem
# privateKey: /vault/key.pem
# outlierDetection:
# consecutive5xxErrors: 3
# interval: 30s
# baseEjectionTime: 1m
# maxEjectionPercent: 10
virtualService: # параметры для манифеста VirtualService
create: false # создавать ли манифест VirtualService
# name: evta-vault-vs # имя манифеста (по умолчанию имя генерируется автоматически)
# protocol: tls # протокол для создания virtual service. Валидные значения: http, tls, tcp
audit: # параметры для интеграции с сервисом Аудита
# host: audit.url # хост сервиса Аудита
# port: 80 # порт сервиса Аудита для обращения из pod'а
# externalPort: 443 # порт сервиса Аудита
# # Порты и протоколы ниже используются в манифестах VirtualService, Gateway, Gateway Service
# # Поддерживаемые gwSvc протоколы - "SCTP", "TCP", "UDP"
# gwPort: 9446 # порт на egressGateway
# gwProtocol: HTTP # протокол на egressGateway
# gwSvcProtocol: TCP # протокол на service egressGateway
# gwTls:
# mode: ISTIO_MUTUAL # Валидные значения: "PASSTHROUGH", "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", "ISTIO_MUTUAL", "OPTIONAL_MUTUAL"
destinationRule: # параметры для манифеста DestinationRule Istio
create: false # создавать ли манифест
# name: audit-dr # имя манифеста (по умолчанию имя генерируется автоматически)
# tls:
# mode: MUTUAL
# caCertificates: /path/to/egress/certificates/ca-chain.cert.pem
# clientCertificate: /path/to/egress/certificates/tls.crt
# privateKey: /path/to/egress/certificates/tls.key
# outlierDetection:
# consecutive5xxErrors: 3
# interval: 30s
# baseEjectionTime: 1m
# maxEjectionPercent: 10
virtualService: # параметры для манифеста VirtualService
create: false # создавать ли манифест VirtualService
# name: audit-vs # имя манифеста (по умолчанию имя генерируется автоматически)
# protocol: http # протокол для создания virtual service. Валидные значения: http, tls, tcp
telemetry: # параметры для интеграции с сервисом телеметрии
# host: telemetry.url # хост сервиса телеметрии
# port: 4317 # порт сервиса телеметрии для обращения из pod'а
# externalPort: 4317 # порт сервиса телеметрии
# # Порты и протоколы ниже используются в манифестах VirtualService, Gateway, Gateway Service
# # Поддерживаемые gwSvc протоколы - "SCTP", "TCP", "UDP"
# gwPort: 9478 # порт на egressGateway
# gwProtocol: HTTPS # протокол на egressGateway
# gwSvcProtocol: TCP # протокол на service egressGateway
# gwTls:
# mode: ISTIO_MUTUAL
destinationRule: # параметры для манифеста DestinationRule Istio
create: false # создавать ли манифест
# tls:
# mode: MUTUAL
# clientCertificate: /vault/evta-pki-cert-telemetry.pem
# privateKey: /vault/evta-pki-key-telemetry.pem
# caCertificates: /vault/evta-pki-truststore-telemetry.pem
# outlierDetection:
# consecutive5xxErrors: 3
# interval: 30s
# baseEjectionTime: 1m
# maxEjectionPercent: 10
virtualService: # параметры для манифеста VirtualService
create: false # создавать ли манифест VirtualService
# name: telemetry-vs # имя манифеста (по умолчанию имя генерируется автоматически)
# protocol: http # протокол виртуального сервиса
Получение сертификатов из Vault#
В блоке параметров для работы с Istio некоторые значения являются сертификатами, находящимися в egress/ingress контейнерах. Данные сертификаты могут быть получены из Vault.
Для этого в развертывании указанных контейнеров необходимо добавить аннотации для работы с Vault:
Аннотация |
Описание |
Значение |
|---|---|---|
|
Используемая для аутентификации роль |
Роль |
|
Используемое пространство имен, которое будет использоваться при запросе секретов из Vault |
Namespace |
|
Включение инъекции Vault Agent Sidecar |
|
|
Должны ли быть получены секреты до старта самого контейнера приложения |
|
|
Включать ли контейнер init для предварительного заполнения тома общей памяти секретами перед запуском контейнеров |
|
|
Сохранять ли регистр секретных имен при создании секретных файлов |
|
|
Настраивает ограничения на использование CPU в контейнерах Vault Agent |
По умолчанию 500m, пустая строка отключает ограничения |
|
Настраивает ограничения на запрос CPU в контейнерах Vault Agent |
По умолчанию 250m, пустая строка отключает ограничения |
|
Настраивает ограничения на использование памяти в контейнерах Vault Agent |
По умолчанию 128Mi, пустая строка отключает ограничения |
|
Настраивает ограничения на запрос памяти в контейнерах Vault Agent |
По умолчанию 64Mi, пустая строка отключает ограничения |
|
Секрет, полученный из хранилища, будет добавлен в контейнер с указанным именем файла. Если используется agent-inject-template, то для того, чтобы полученный секрет был записан в файл, необходимо указать данную аннотацию с любым значением (будет переписано шаблоном) |
|
|
Секрет будет добавлен в контейнер с указанным именем файла в указанную директорию, если имя файла не указано, будет установлено значение по умолчанию для всех отображаемых секретов в модуле |
В какую директорию будет записан полученный секрет |
|
Секрет, полученный после выполнения шаблона, будет добавлен в контейнер с указанным именем файла |
Шаблон для получения секрета |
Пример аннотаций для выгрузки KV секрета:#
annotations:
vault.hashicorp.com/agent-inject-secret-test.yml: 'true'
vault.hashicorp.com/secret-volume-path-test.yml: /vault/test
vault.hashicorp.com/namespace: namespace
vault.hashicorp.com/role: role
vault.hashicorp.com/agent-inject: 'true'
vault.hashicorp.com/agent-init-first: 'true'
После запуска в контейнере в директории /vault/test появится файл test.yml. В файле будут содержаться ключи и значения секрета PATH/TO/KV/test.
Предположим, что в секрете содержатся следующие значения: key1 -> value1 и key2 -> value2, тогда содержимое файла будет:
sh-4.4$ cat /vault/test/test.yml
key: value1
keystore: value2
Если необходимо получить конкретное значение:
annotations:
vault.hashicorp.com/agent-inject-secret-test.yml: 'true'
vault.hashicorp.com/secret-volume-path-test.yml: /vault/test
vault.hashicorp.com/agent-inject-template-test.yml: |
{%- raw %}
{{- with secret "PATH/TO/KV/test" -}}
{{ index .Data "key1" }}
{{- end }}
{%- endraw %}
vault.hashicorp.com/namespace: namespace
vault.hashicorp.com/role: role
vault.hashicorp.com/agent-inject: 'true'
vault.hashicorp.com/agent-init-first: 'true'
После запуска в контейнере в директории /vault/test появится файл test.yml. В файле будет содержаться значения key1 секрета PATH/TO/KV/test:
sh-4.4$ cat /vault/test/test.yml
value1
Пример аннотаций для выпуска сертификата через Vault:#
annotations:
vault.hashicorp.com/agent-inject-secret-ca.cert: 'true'
vault.hashicorp.com/secret-volume-path-ca.cert: /vault/test
vault.hashicorp.com/agent-inject-template-ca.cert: >
{{- with secret "PKI/issue/role" "common_name=test" -}}
{{ .Data.issuing_ca }}
{{- end }}
vault.hashicorp.com/agent-inject-secret-server.key: 'true'
vault.hashicorp.com/secret-volume-path-server.key: /vault/test
vault.hashicorp.com/agent-inject-template-server.key: >
{{- with secret "PKI/issue/role" "common_name=test" -}}
{{ .Data.private_key }}
{{- end }}
vault.hashicorp.com/namespace: namespace
vault.hashicorp.com/role: role
vault.hashicorp.com/agent-inject: 'true'
vault.hashicorp.com/agent-init-first: 'true'
vault.hashicorp.com/agent-inject-secret-server.cert: 'true'
vault.hashicorp.com/secret-volume-path-server.cert: /vault/test
vault.hashicorp.com/agent-inject-template-server.cert: >
{{- with secret "PKI/issue/role" "common_name=test" -}}
{{ .Data.certificate }}
{{- end }}
После запуска в контейнере в директории /vault/test появится три файла: server.cert, server.key, ca.cert.
Пример аннотаций для получения сертификата через Vault:#
annotations:
vault.hashicorp.com/agent-inject-secret-ca.cert: 'true'
vault.hashicorp.com/secret-volume-path-ca.cert: /vault/test
vault.hashicorp.com/agent-inject-template-ca.cert: >
{{- with secret "PATH/TO/KV/cert" -}}
{{ base64Decode (index .Data "ca.cert") }}
{{- end }}
vault.hashicorp.com/agent-inject-secret-server.key: 'true'
vault.hashicorp.com/secret-volume-path-server.key: /vault/test
vault.hashicorp.com/agent-inject-template-server.key: >
{{- with secret "PATH/TO/KV/cert" -}}
{{ base64Decode (index .Data "server.key") }}
{{- end }}
vault.hashicorp.com/namespace: namespace
vault.hashicorp.com/role: role
vault.hashicorp.com/agent-inject: 'true'
vault.hashicorp.com/agent-init-first: 'true'
vault.hashicorp.com/agent-inject-secret-server.cert: 'true'
vault.hashicorp.com/secret-volume-path-server.cert: /vault/test
vault.hashicorp.com/agent-inject-template-server.cert: >
{{- with secret "PATH/TO/KV/cert" -}}
{{ base64Decode (index .Data "server.cert") }}
{{- end }}
После запуска в контейнере в директории /vault/test появится три файла: server.cert, server.key, ca.cert.
Настройка egress/ingress для работы с Vault#
Ниже приведены примеры шаблонов, которые необходимы для настройки работы контейнеров, использующих egress/ingress с Vault:
Service:
apiVersion: v1
kind: Service
metadata:
name: egressgateway-svc
labels:
egress: {{.Values.istio.egress.projectName}}
spec:
ports:
- name: http-{{ .Values.istio.egress.egressPort }}
port: {{ .Values.istio.egress.egressPort }}
protocol: TCP
- name: tls-8550
protocol: TCP
port: 8550
targetPort: 8550
{{- range .Values.istio.egress.services_ports }}
- name: tcp-{{.}}
protocol: TCP
port: {{.}}
targetPort: {{.}}
{{- end }}
selector:
app: egressgateway-{{ .Values.istio.egress.projectName }}
istio: egressgateway-{{ .Values.istio.egress.projectName }}
Gateway:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: egress-secman-gw
labels:
egress: {{.Values.istio.egress.projectName}}
spec:
selector:
istio: egressgateway-{{ .Values.istio.egress.projectName }}
servers:
- hosts:
- {{ .Values.istio.egress.secmanHost }}
port:
name: tls-8550
number: 8550
protocol: TLS
tls:
mode: PASSTHROUGH
VirtualService:
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
namespace: {{ .Values.istio.egress.projectName }}
name: egress-secman-vs
labels:
egress: {{.Values.istio.egress.projectName}}
spec:
exportTo:
- .
gateways:
- egress-secman-gw
- mesh
hosts:
- {{ .Values.istio.egress.secmanHost }}
tls:
- match:
- gateways:
- mesh
port: 443
sniHosts:
- {{ .Values.istio.egress.secmanHost }}
route:
- destination:
host: egressgateway-svc.{{ .Values.istio.egress.projectName }}.svc.cluster.local
port:
number: 8550
- match:
- gateways:
- egress-secman-gw
port: 8550
sniHosts:
- {{ .Values.istio.egress.secmanHost }}
route:
- destination:
host: {{ .Values.istio.egress.secmanHost }}
port:
number: 443
ServiceEntry:
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
name: egress-secman-se
namespace: {{ .Values.istio.egress.projectName }}
labels:
egress: {{.Values.istio.egress.projectName}}
spec:
exportTo:
- .
hosts:
- {{ .Values.istio.egress.secmanHost }}
location: MESH_EXTERNAL
ports:
- name: tls-443
number: 443
protocol: TLS
resolution: DNS
PeerAuthentication:
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: egress-pa
namespace: {{ .Values.istio.egress.projectName }}
labels:
egress: {{.Values.istio.egress.projectName}}
spec:
portLevelMtls:
'8550':
mode: DISABLE
selector:
matchLabels:
app: egressgateway-{{ .Values.istio.egress.projectName }}
DestinationRule:
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: egress-secman-dr
namespace: {{ .Values.istio.egress.projectName }}
labels:
egress: {{ .Values.istio.egress.projectName }}
spec:
exportTo:
- .
host: egressgateway-svc.{{ .Values.istio.egress.projectName }}.svc.cluster.local
trafficPolicy:
portLevelSettings:
- port:
number: 8550
tls:
mode: DISABLE