Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как настроить политики L7 с помощью расширенных сетевых служб контейнеров в кластерах AKS. Продолжайте только после проверки ограничений и рекомендаций, перечисленных на странице обзора политики уровня 7 .
Предпосылки
- Учетная запись Azure с активной подпиской. Если у вас еще нет аккаунта, создайте бесплатную учетную запись, прежде чем начать.
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете запускать справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, подумайте о запуске Azure CLI в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, войдите в Azure CLI с помощью команды az login . Чтобы завершить процесс аутентификации, следуйте шагам, отображаемым в вашем терминале. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Когда вас попросят, установите расширение Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
Минимальная версия Azure CLI, необходимая для действий, описанных в этой статье, — 2.79.0. Чтобы узнать версию, выполните команду az --version. Если вам нужно установить или обновить, см. статью "Установка Azure CLI".
Установка расширения Azure CLI aks-preview
Установите или обновите расширение предварительной версии Azure CLI с помощью az extension add команды или az extension update команды.
Минимально допустимая версия расширения Azure CLI для aks-preview 14.0.0b6
# Install the aks-preview extension
az extension add --name aks-preview
# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview
Регистрация флага компонента AdvancedNetworkingL7PolicyPreview
Зарегистрируйте флаг функции AdvancedNetworkingL7PolicyPreview с помощью команды az feature register.
az feature register --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingL7PolicyPreview"
Проверьте успешную регистрацию, используя команду az feature show. Регистрация занимает несколько минут.
az feature show --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingL7PolicyPreview"
После того как Registered функция будет показана, обновите регистрацию поставщика ресурсов Microsoft.ContainerService с помощью команды az provider register.
Включить расширенные сетевые службы для контейнеров
Для продолжения необходимо иметь кластер AKS с включенной функцией расширенных сетевых служб контейнеров.
Команда az aks create с флагом --enable-acnsрасширенных сетевых служб контейнеров создает новый кластер AKS со всеми функциями расширенных сетевых служб контейнеров. Эти функции охватывают следующие возможности:
Наблюдение за сетью контейнеров. Предоставляет аналитические сведения о сетевом трафике. Дополнительные сведения см. в разделе "Наблюдаемость сети контейнеров".
Безопасность сети контейнеров: Предоставляет функции безопасности, такие как фильтрация полного доменного имени (FQDN). Дополнительные сведения см. в статье "Безопасность сети контейнеров".
Замечание
Кластеры с плоскостью данных Cilium поддерживают наблюдаемость сети контейнеров и безопасность сети контейнеров, начиная с версии Kubernetes 1.29.
Для этой демонстрации параметр --acns-advanced-networkpolicies должен иметь значение "L7", чтобы включить политики L7. При задании этого параметра значение "L7" также включается фильтрация FQDN. Если требуется только включить фильтрацию FQDN, задайте для параметра "FQDN". Чтобы отключить обе функции, можно выполнить инструкции, приведенные в разделе "Отключить безопасность сети контейнеров".
export CLUSTER_NAME="<aks-cluster-name>"
# Create an AKS cluster
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--generate-ssh-keys \
--network-plugin azure \
--network-dataplane cilium \
--enable-acns \
--acns-advanced-networkpolicies L7
Включение продвинутых сетевых служб для контейнеров в существующем кластере
Команда az aks update с флагом --enable-acns"Расширенные сетевые службы контейнеров" обновляет существующий кластер AKS со всеми функциями расширенных сетевых служб контейнеров, которые включают в себя наблюдение за сетями контейнеров и функцию безопасности сети контейнеров.
Замечание
Только кластеры с плоскостью данных Cilium поддерживают функции сетевой безопасности контейнеров в рамках расширенных сетевых служб контейнеров.
Для этой демонстрации параметр --acns-advanced-networkpolicies должен иметь значение "L7", чтобы включить политики L7. При задании этого параметра значение "L7" также включается фильтрация FQDN. Если требуется только включить фильтрацию FQDN, задайте для параметра "FQDN". Чтобы отключить обе функции, можно выполнить инструкции, приведенные в разделе "Отключить безопасность сети контейнеров".
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-advanced-networkpolicies L7
Получение учетных данных кластера
Получите учетные данные кластера с помощью az aks get-credentials команды.
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Настройка приложения http-server в кластере AKS
Примените приведенный ниже YAML к кластеру AKS, чтобы настроить приложение http-server.
apiVersion: apps/v1
kind: Deployment
metadata:
name: http-server
labels:
app: http-server
spec:
replicas: 1
selector:
matchLabels:
app: http-server
template:
metadata:
labels:
app: http-server
spec:
containers:
- name: http-server
image: nginx:latest
ports:
- containerPort: 8080
volumeMounts:
- name: config-volume
mountPath: /etc/nginx/conf.d
volumes:
- name: config-volume
configMap:
name: nginx-config
---
apiVersion: v1
kind: Service
metadata:
name: http-server
spec:
selector:
app: http-server
ports:
- protocol: TCP
port: 80
targetPort: 8080
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
data:
default.conf: |
server {
listen 8080;
location / {
return 200 "Hello from the server root!\n";
}
location /products {
return 200 "Listing products...\n";
}
}
Настройка приложения http-client в кластере AKS
Примените приведенный ниже YAML к кластеру AKS, чтобы настроить приложение http-client.
apiVersion: apps/v1
kind: Deployment
metadata:
name: http-client
labels:
app: http-client
spec:
replicas: 1
selector:
matchLabels:
app: http-client
template:
metadata:
labels:
app: http-client
spec:
containers:
- name: http-client
image: curlimages/curl:latest
command: ["sleep", "infinity"]
Проверить подключение с помощью политики
Затем примените следующую политику уровня 7, чтобы разрешить только GET запросы от приложения http-client к конечной точке /products на http-server.
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: allow-get-products
spec:
description: "Allow only GET requests to /products from http-client to http-server"
endpointSelector:
matchLabels:
app: http-server
ingress:
- fromEndpoints:
- matchLabels:
app: http-client
toPorts:
- ports:
- port: "8080"
protocol: TCP
rules:
http:
- method: "GET"
path: "/products"
Проверка политики
Чтобы проверить выполнение политики, выполните следующие команды из контейнера pod http-client:.
kubectl exec -it <your-http-client-pod-name> -n default -- curl -v http://http-server:80/products
Вы должны ожидать выходные данные, такие как Listing products... при выполнении приведенной выше команды.
kubectl exec -it <your-http-client-pod-name> -n default -- curl -v -XPOST http://http-server:80/products -d "test=data"
Вы должны ожидать выходные данные, такие как Access Denied при выполнении приведенной выше команды.
Наблюдение за метриками L7
Если у вас включена функция наблюдаемости сети контейнеров службы Advanced Container Network Service, вы можете визуализировать трафик в Grafana.
Чтобы упростить анализ этих метрик L7, мы предоставляем предварительно настроенные панели мониторинга Azure Managed Grafana. Их можно найти в папке Dashboards > Azure Managed Prometheus с именами файлов, такими как "Kubernetes/Networking/L7 (Пространство имен)" и "Kubernetes/Networking/L7 (Рабочая нагрузка)".
Метрики должны иметь следующий вид:
Очистите ресурсы
Если вы не планируете использовать это приложение, удалите другие ресурсы, созданные в этой статье, с помощью az group delete команды.
az group delete --name $RESOURCE_GROUP
Дальнейшие шаги
В этой пошаговой инструкции вы узнали, как активировать и применять политики уровня L7 с расширенными сетевыми службами для контейнеров вашего кластера AKS.
- Дополнительные сведения о расширенных сетевых службах контейнеров для Службы Azure Kubernetes (AKS) см. в статье Что такое расширенные сетевые службы контейнеров для Службы Azure Kubernetes (AKS)?.