Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Предварительные версии функций AKS доступны на условиях самообслуживания и добровольного выбора. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS сопровождаются частичной поддержкой клиентов на основе принципа лучших усилий. Как таковые, эти функции не предназначены для использования в производстве. Для получения дополнительной информации ознакомьтесь со следующими статьями поддержки:
Дополнение для сетевой архитектуры Istio поддерживает как собственный API управления трафиком Istio, так и API шлюза Kubernetes для управления входящим трафиком. Вы можете использовать модель автоматического развертывания API шлюза Istio или модель ручного развертывания. В этой статье описывается настройка управления входящим трафиком для надстройки сетки Istio с использованием API шлюза Kubernetes и модели автоматического развертывания.
Ограничения и рекомендации
- Использование API шлюза Kubernetes для управления исходящим трафиком с дополнением к служебной сетке Istio поддерживается только в модели ручного развертывания.
- Настройки ConfigMap для
Gatewayресурсов должны соответствовать списку разрешённых настроек ресурсов. Поля, не находящиеся в списке разрешённых, запрещены и блокируются через вебхуки, управляемые надстройками. Дополнительные сведения см. в политике поддержки надстроек сетки служб Istio.
Предпосылки
- Включите API управляемого шлюза в кластере AKS.
- Установите надстройку сетевого службы Istio версии
asm-1-26или более поздней. Следуйте инструкциям по установке , если у вас еще нет установленной надстройки сетки службы Istio или руководства по обновлению , если вы используете более низкую дополнительную редакцию.
Настройка переменных среды
Задайте следующие переменные среды для использования в этой статье:
| Variable | Description |
|---|---|
RESOURCE_GROUP |
Имя группы ресурсов, содержащей кластер AKS. |
CLUSTER_NAME |
Имя кластера AKS. |
LOCATION |
Регион Azure, в котором развернут кластер AKS. |
KEY_VAULT_NAME |
Имя ресурса Azure Key Vault, который будет создан для хранения секретов TLS. Если у вас есть существующий ресурс, используйте это имя. |
Разверните примерное приложение
Разверните пример
httpbinприложения вdefaultпространстве имен с помощьюkubectl applyкоманды.kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.26/samples/httpbin/httpbin.yaml
Создание шлюза Kubernetes и HTTPRoute
В примере манифеста создается внешняя служба подсистемы балансировки нагрузки ingress, доступная извне кластера. Вы можете добавить заметки для создания внутренней подсистемы балансировки нагрузки и настройки других параметров подсистемы балансировки нагрузки.
Разверните конфигурацию API шлюза в пространстве имен
defaultс параметромgatewayClassName, установленным наistio, иHTTPRoute, которая маршрутизирует трафик к службеhttpbin, с помощью следующего манифеста:kubectl apply -f - <<EOF apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: httpbin-gateway spec: gatewayClassName: istio listeners: - name: http port: 80 protocol: HTTP allowedRoutes: namespaces: from: Same --- apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: http namespace: default spec: parentRefs: - name: httpbin-gateway hostnames: ["httpbin.example.com"] rules: - matches: - path: type: PathPrefix value: /get backendRefs: - name: httpbin port: 8000 EOFЗамечание
Если вы выполняете мино́рное обновление ревизии и имеете две ревизии надстроек сетевой инфраструктуры служб Istio, установленные в кластере одновременно, то плоскость управления для более высокой минорной ревизии по умолчанию берёт на себя управление
Gateways. Вы можете добавитьistio.io/revметку вGateway, чтобы контролировать, какой версии контрольной плоскости она принадлежит. Если вы добавите метку ревизии, убедитесь в её обновлении в соответствии с соответствующей ревизией плоскости управления перед откатом или завершением операции обновления.
Проверка создания ресурса
Убедитесь, что
Deployment,Service,HorizontalPodAutoscaler, иPodDisruptionBudgetресурсы были созданы с помощью следующихkubectl getкоманд.kubectl get deployment httpbin-gateway-istio kubectl get service httpbin-gateway-istio kubectl get hpa httpbin-gateway-istio kubectl get pdb httpbin-gateway-istioПример выходных данных:
# Deployment resource NAME READY UP-TO-DATE AVAILABLE AGE httpbin-gateway-istio 2/2 2 2 31m # Service resource NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE httpbin-gateway-istio LoadBalancer 10.0.65.45 <external-ip> 15021:32053/TCP,80:31587/TCP 33m # HPA resource NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE httpbin-gateway-istio Deployment/httpbin-gateway-istio cpu: 3%/80% 2 5 3 34m # PDB resource NAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE httpbin-gateway-istio 1 N/A 2 36m
Отправка запроса в пример приложения
Попробуйте отправить
curlзапрос приложениюhttpbin. Сначала задайтеINGRESS_HOSTпеременную среды:kubectl wait --for=condition=programmed gateways.gateway.networking.k8s.io httpbin-gateway export INGRESS_HOST=$(kubectl get gateways.gateway.networking.k8s.io httpbin-gateway -ojsonpath='{.status.addresses[0].value}')Попробуйте отправить HTTP-запрос на
httpbin.curl -s -I -HHost:httpbin.example.com "http://$INGRESS_HOST/get"В выходных данных вы должны увидеть ответ
HTTP 200.
Обеспечение безопасности входящего трафика Istio с помощью API шлюза Kubernetes
Надстройка сетевой службы Istio поддерживает синхронизацию секретов из Azure Key Vault для защиты входящего трафика, основанного на API шлюза, с использованием завершения TLS или передачи SNI без изменений. В следующих разделах вы синхронизируете секреты из Azure Key Vault с кластером AKS с помощью поставщика Azure Key Vault для надстройки драйвера хранилища контейнеров хранилища секретов (CSI) и завершаете TLS в шлюзе входящего трафика.
Создание сертификатов и ключей клиента или сервера
Создайте корневой сертификат и закрытый ключ для подписывания сертификатов для примеров служб:
mkdir httpbin_certs openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=example Inc./CN=example.com' -keyout httpbin_certs/example.com.key -out httpbin_certs/example.com.crtСоздание сертификата и закрытого ключа для
httpbin.example.com:openssl req -out httpbin_certs/httpbin.example.com.csr -newkey rsa:2048 -nodes -keyout httpbin_certs/httpbin.example.com.key -subj "/CN=httpbin.example.com/O=httpbin organization" openssl x509 -req -sha256 -days 365 -CA httpbin_certs/example.com.crt -CAkey httpbin_certs/example.com.key -set_serial 0 -in httpbin_certs/httpbin.example.com.csr -out httpbin_certs/httpbin.example.com.crt
Настройка Azure Key Vault и создание секретов
Создайте экземпляр Azure Key Vault для предоставления входных данных сертификата и ключа надстройке сетевой службы Istio, используя команду
az keyvault create. Если у вас уже есть экземпляр Azure Key Vault, можно пропустить этот шаг.az keyvault create --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP --location $LOCATIONВключите поставщика Azure Key Vault для надстройки драйвера хранилища секретов (CSI) в вашем кластере
az aks enable-addonsс помощью команды.az aks enable-addons --addons azure-keyvault-secrets-provider --resource-group $RESOURCE_GROUP --name $CLUSTER_NAMEЕсли в хранилище ключей используется управление доступом на основе ролей Azure (RBAC) для модели разрешений, следуйте инструкциям в статье Предоставление доступа к ключам, сертификатам и секретам Azure с помощью управления доступом на основе ролей Azure, чтобы назначить роль Пользователь секретов хранилища ключей Key Vault для управляемого удостоверения, назначенного пользователем для надстройки. Кроме того, если хранилище ключей использует модель разрешений политики доступа к хранилищу, авторизуйте управляемое удостоверение надстройки, назначаемое пользователем, для доступа к ресурсу Azure Key Vault с помощью политики доступа с помощью
az keyvault set-policyкоманды.OBJECT_ID=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query 'addonProfiles.azureKeyvaultSecretsProvider.identity.objectId' -o tsv | tr -d '\r') CLIENT_ID=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query 'addonProfiles.azureKeyvaultSecretsProvider.identity.clientId') TENANT_ID=$(az keyvault show --resource-group $RESOURCE_GROUP --name $KEY_VAULT_NAME --query 'properties.tenantId') az keyvault set-policy --name $KEY_VAULT_NAME --object-id $OBJECT_ID --secret-permissions get listСоздайте секреты в Azure Key Vault с помощью сертификатов и ключей с помощью следующих
az keyvault secret setкоманд:az keyvault secret set --vault-name $KEY_VAULT_NAME --name test-httpbin-key --file httpbin_certs/httpbin.example.com.key az keyvault secret set --vault-name $KEY_VAULT_NAME --name test-httpbin-crt --file httpbin_certs/httpbin.example.com.crt
Развертывание SecretProviderClass и пример pod
Разверните SecretProviderClass, чтобы предоставить Azure Key Vault определенные параметры драйверу CSI, используя следующий манифест. В этом примере
test-httpbin-keyиtest-httpbin-crtимена секретных объектов в Azure Key Vault.cat <<EOF | kubectl apply -f - apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: httpbin-credential-spc spec: provider: azure secretObjects: - secretName: httpbin-credential type: kubernetes.io/tls data: - objectName: test-httpbin-key key: tls.key - objectName: test-httpbin-crt key: tls.crt parameters: useVMManagedIdentity: "true" userAssignedIdentityID: $CLIENT_ID keyvaultName: $KEY_VAULT_NAME cloudName: "" objects: | array: - | objectName: test-httpbin-key objectType: secret objectAlias: "test-httpbin-key" - | objectName: test-httpbin-crt objectType: secret objectAlias: "test-httpbin-crt" tenantId: $TENANT_ID EOFЗамечание
Кроме того, чтобы ссылаться на тип объекта сертификата непосредственно из Azure Key Vault, используйте следующий манифест для развертывания SecretProviderClass. В этом примере
test-httpbin-cert-pxf— имя объекта сертификата в Azure Key Vault.cat <<EOF | kubectl apply -f - apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: httpbin-credential-spc spec: provider: azure secretObjects: - secretName: httpbin-credential type: kubernetes.io/tls data: - objectName: test-httpbin-key key: tls.key - objectName: test-httpbin-crt key: tls.crt parameters: useVMManagedIdentity: "true" userAssignedIdentityID: $CLIENT_ID keyvaultName: $KEY_VAULT_NAME cloudName: "" objects: | array: - | objectName: test-httpbin-cert-pfx #certificate object name from keyvault objectType: secret objectAlias: "test-httpbin-key" - | objectName: test-httpbin-cert-pfx #certificate object name from keyvault objectType: cert objectAlias: "test-httpbin-crt" tenantId: $TENANT_ID EOFРазверните пример pod с помощью следующего манифеста. Для надстройки драйвера Хранилища ключей Azure для хранилища секретов (CSI) требуется модуль pod для ссылки на ресурс SecretProviderClass, чтобы обеспечить синхронизацию секретов из Azure Key Vault в кластер.
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: secrets-store-sync-httpbin spec: containers: - name: busybox image: mcr.microsoft.com/oss/busybox/busybox:1.33.1 command: - "/bin/sleep" - "10" volumeMounts: - name: secrets-store01-inline mountPath: "/mnt/secrets-store" readOnly: true volumes: - name: secrets-store01-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "httpbin-credential-spc" EOF
Убедитесь в создании секрета TLS
Убедитесь, что секрет
httpbin-credentialбыл создан вdefaultпространстве имен, как определено в ресурсе SecretProviderClass, с помощью командыkubectl describe secret.kubectl describe secret/httpbin-credentialПример выходных данных:
Name: httpbin-credential Namespace: default Labels: secrets-store.csi.k8s.io/managed=true Annotations: <none> Type: kubernetes.io/tls Data ==== tls.crt: 1180 bytes tls.key: 1675 bytes
Развертывание шлюза TLS
Создайте шлюз Kubernetes, который ссылается на
httpbin-credentialсекрет в конфигурации TLS, используя следующий манифест:cat <<EOF | kubectl apply -f - apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: httpbin-gateway spec: gatewayClassName: istio listeners: - name: https hostname: "httpbin.example.com" port: 443 protocol: HTTPS tls: mode: Terminate certificateRefs: - name: httpbin-credential allowedRoutes: namespaces: from: Selector selector: matchLabels: kubernetes.io/metadata.name: default EOFЗамечание
В определении шлюза значение
tls.certificateRefs.nameдолжно совпадать со значениемsecretNameв ресурсе SecretProviderClass.Создайте соответствующее правило
HTTPRouteдля настройки маршрутизации входящего трафика в службуhttpbinчерез HTTPS с помощью следующего манифеста:cat <<EOF | kubectl apply -f - apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: httpbin spec: parentRefs: - name: httpbin-gateway hostnames: ["httpbin.example.com"] rules: - matches: - path: type: PathPrefix value: /status - path: type: PathPrefix value: /delay backendRefs: - name: httpbin port: 8000 EOFПолучите внешний IP-адрес шлюза входящего трафика и безопасный порт с помощью следующих команд:
kubectl wait --for=condition=programmed gateways.gateway.networking.k8s.io httpbin-gateway export INGRESS_HOST=$(kubectl get gateways.gateway.networking.k8s.io httpbin-gateway -o jsonpath='{.status.addresses[0].value}') export SECURE_INGRESS_PORT=$(kubectl get gateways.gateway.networking.k8s.io httpbin-gateway -o jsonpath='{.spec.listeners[?(@.name=="https")].port}')Отправьте HTTPS-запрос для доступа к
httpbinслужбе:curl -v -HHost:httpbin.example.com --resolve "httpbin.example.com:$SECURE_INGRESS_PORT:$INGRESS_HOST" \ --cacert httpbin_certs/example.com.crt "https://httpbin.example.com:$SECURE_INGRESS_PORT/status/418"Выходные данные должны показать
httpbin, что служба возвращает код 418 Я - чайник.Замечание
Чтобы настроить входящий трафик HTTPS к службе HTTPS, обновите режим TLS в определении шлюза до
Passthrough. Эта конфигурация указывает шлюзу передавать трафик входящего трафика как есть без прекращения TLS.
Настройки примечаний
Под spec.infrastructure.annotations можно добавить заметки для настройки параметров балансировщика нагрузки для Gateway. Например, чтобы создать внутренний балансировщик нагрузки, подключенный к определенной подсети, можно создать Gateway с помощью следующих аннотаций.
spec:
# ... existing spec content ...
infrastructure:
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "my-subnet"
Настройки ConfigMap
Дополнение для сервис-сети Istio поддерживает настройки ресурсов , созданных для Gateways, в том числе:
- Услуга
- Развертывание
- Горизонтальный автоскейлер Pod (HPA)
- Бюджет нарушения подов (PDB)
Параметры по умолчанию для этих ресурсов задаются в istio-gateway-class-defaults ConfigMap в aks-istio-system пространстве имен. Этот ConfigMap должен иметь метку gateway.istio.io/defaults-for-class, установленную на istio, чтобы настройки вступили в действие для всех Gateways с spec.gatewayClassName: istio. Конфигурация istio-gateway-class-defaults ConfigMap может занять до пяти минут.
kubectl get configmap istio-gateway-class-defaults -n aks-istio-system -o yaml
...
data:
horizontalPodAutoscaler: |
spec:
minReplicas: 2
maxReplicas: 5
podDisruptionBudget: |
spec:
minAvailable: 1
...
Эти параметры можно изменить для всех Istio Gateways на GatewayClass уровне, обновив istio-gateway-class-defaults ConfigMap или установив их для отдельных Gateway ресурсов. Для обоих уровней GatewayClass и GatewayConfigMaps необходимо добавить поля в список разрешённых для данного ресурса. Если существуют настройки как для GatewayClass, так и для отдельных Gateway, то конфигурация уровня Gateway имеет приоритет.
Поля списка разрешений для настройки развертывания
| Путь к полю | Description |
|---|---|
metadata.labels |
Метки развертывания |
metadata.annotations |
Заметки о развертывании |
spec.replicas |
Число реплик развертывания |
spec.template.metadata.labels |
Метки Pod |
spec.template.metadata.annotations |
Аннотации pod |
spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms |
Привязанность узлов |
spec.template.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution |
Привязанность узлов |
spec.template.spec.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution |
Сходство podов |
spec.template.spec.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution |
Сходство podов |
spec.template.spec.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution |
Защита от сходства pod |
spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution |
Защита от сходства pod |
spec.template.spec.containers.resizePolicy |
Использование ресурсов контейнера |
spec.template.spec.containers.resources.limits |
Использование ресурсов контейнера |
spec.template.spec.containers.resources.requests |
Использование ресурсов контейнера |
spec.template.spec.containers.stdin |
Отладка контейнера |
spec.template.spec.containers.stdinOnce |
Отладка контейнера |
spec.template.spec.nodeSelector |
Планирование Pod |
spec.template.spec.nodeName |
Планирование Pod |
spec.template.spec.tolerations |
Планирование Pod |
spec.template.spec.topologySpreadConstraints |
Планирование Pod |
Поля списка разрешенных настроек службы
| Путь к полю | Description |
|---|---|
metadata.labels |
Метки службы |
metadata.annotations |
Заметки службы |
spec.type |
тип услуги; |
spec.loadBalancerSourceRanges |
Параметры подсистемы балансировки нагрузки службы |
spec.loadBalancerClass |
Параметры подсистемы балансировки нагрузки службы |
spec.externalTrafficPolicy |
Политика трафика службы |
spec.internalTrafficPolicy |
Политика трафика службы |
Допустимые поля для настройки HorizontalPodAutoscaler (HPA)
| Путь к полю | Description |
|---|---|
metadata.labels |
Метки HPA |
metadata.annotations |
Аннотации HPA |
spec.behavior.scaleUp.stabilizationWindowSeconds |
Характеристика увеличения масштабов HPA |
spec.behavior.scaleUp.selectPolicy |
Характеристика увеличения масштабов HPA |
spec.behavior.scaleUp.policies |
Характеристика увеличения масштабов HPA |
spec.behavior.scaleDown.stabilizationWindowSeconds |
Поведение уменьшения масштаба HPA |
spec.behavior.scaleDown.selectPolicy |
Поведение уменьшения масштаба HPA |
spec.behavior.scaleDown.policies |
Поведение уменьшения масштаба HPA |
spec.metrics |
Метрики масштабирования ресурсов HPA |
spec.minReplicas |
Минимальное число реплик HPA. Не должно быть ниже 2. |
spec.maxReplicas |
Максимальное число реплик HPA |
Настройка полей списка разрешений PodDisruptionBudget (PDB)
| Путь к полю | Description |
|---|---|
metadata.labels |
Метки PDB |
metadata.annotations |
Аннотации PDB |
spec.minAvailable |
Минимальная доступность PDB |
spec.unhealthyPodEvictionPolicy |
Политика вытеснения PDB |
Замечание
Изменение минимальной доступности и политики вытеснения может привести к потенциальным ошибкам во время операций обновления и удаления кластера или узла. Следуйте инструкциям по устранению неполадок PDB , чтобы устранить ошибки UpgradeFailed из-за PDB сбоев вытеснения.
Настройка параметров уровня GatewayClass
Обновите ConfigMap уровня
GatewayClassв пространстве именaks-istio-systemс помощью командыkubectl edit configmap.kubectl edit cm istio-gateway-class-defaults -n aks-istio-systemПри необходимости измените параметры ресурса в
dataразделе. Например, чтобы обновить минимальное/максимальное количество реплик в HPA и добавить метку к объектуDeployment, измените ConfigMap следующим образом:... data: deployment: | metadata: labels: test.azureservicemesh.io/deployment-config: "updated" horizontalPodAutoscaler: | spec: minReplicas: 3 maxReplicas: 6 podDisruptionBudget: | spec: minAvailable: 1 ...Замечание
Разрешён только один ConfigMap для каждого
GatewayClass.Теперь вы должны увидеть, что
HPA, связанный сhttpbin-gateway, который вы создали ранее, обновится с новыми минимальными и максимальными значениями.HPAПроверьте параметры с помощьюkubectl get hpaкоманды.kubectl get hpa httpbin-gateway-istioПример выходных данных:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE httpbin-gateway-istio Deployment/httpbin-gateway-istio cpu: 3%/80% 3 6 3 36mУбедитесь, что
Deploymentобновлен с новой меткой с помощью командыkubectl get deployment.kubectl get deployment httpbin-gateway-istio -ojsonpath='{.metadata.labels.test\.azureservicemesh\.io\/deployment-config}'Пример выходных данных:
updated
Настройка параметров для определенного шлюза
Создайте ConfigMap с настройками ресурсов для шлюза с помощью следующего
httpbinманифеста:kubectl apply -f - <<EOF apiVersion: v1 kind: ConfigMap metadata: name: gw-options data: horizontalPodAutoscaler: | spec: minReplicas: 2 maxReplicas: 4 deployment: | metadata: labels: test.azureservicemesh.io/deployment-config: "updated-per-gateway" EOFОбновите
httpbinGateway, чтобы ссылаться на ConfigMap.spec: # ... existing spec content ... infrastructure: parametersRef: group: "" kind: ConfigMap name: gw-optionsПримените обновление с помощью
kubectl applyкоманды.kubectl apply -f httpbin-gateway-updated.yamlУбедитесь, что
HPAобновлен с новыми значениями min/max с помощью командыkubectl get hpa. Если вы также настроили ConfigMapGatewayClassуровня, параметрыGatewayуровня должны иметь приоритет.kubectl get hpa httpbin-gateway-istioПример выходных данных:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE httpbin-gateway-istio Deployment/httpbin-gateway-istio cpu: 3%/80% 2 4 2 4h14mПроверьте
Deploymentметки, чтобы убедиться, чтоtest.azureservicemesh.io/deployment-configобновлено до нового значения с помощью командыkubectl get deployment.kubectl get deployment httpbin-gateway-istio -ojsonpath='{.metadata.labels.test\.azureservicemesh\.io\/deployment-config}'Пример выходных данных:
updated-per-gateway
Очистите ресурсы
Если ресурсы, созданные в этой статье, больше не нужны, их можно удалить, чтобы избежать каких-либо расходов.
Удалите ресурсы шлюза и HTTPRoute с помощью следующих
kubectl deleteкоманд:kubectl delete gateways.gateway.networking.k8s.io httpbin-gateway kubectl delete httproute httpbinЕсли вы создали ConfigMap для настройки ресурсов шлюза, удалите его с помощью
kubectl delete configmapкоманды.kubectl delete configmap gw-optionsЕсли вы создали SecretProviderClass и секрет, используемый для завершения TLS, удалите ресурсы с помощью следующих
kubectl deleteкоманд:kubectl delete secret httpbin-credential kubectl delete pod secrets-store-sync-httpbin kubectl delete secretproviderclass httpbin-credential-spc