Опубликовать сервис из кластера Managed Kubernetes в интернет
- Проверьте квоты.
- Подключитесь к кластеру.
- Создайте GatewayClass.
- Создайте Gateway.
- Создайте HTTPRoute.
1. Проверить квоты
Убедитесь, что в пуле выделена квота минимум на один публичный IP-адрес. Для этого посмотрите потребление квот облачной платформы.
2. Подключиться к кластеру
Чтобы подключиться к кластеру, используйте инструкцию Подключиться к кластеру Managed Kubernetes.
3. Создать GatewayClass
-
Создайте YAML-файл с манифестом для объекта GatewayClass.
Пример манифеста GatewayClass:
---apiVersion: gateway.networking.k8s.io/v1kind: GatewayClassmetadata:name: envoy-gatewayspec:controllerName: gateway.envoyproxy.io/gatewayclass-controller -
Примените манифест:
kubectl apply -f <file_name>Укажите
<file_name>— имя YAML-файла с манифестом для создания объекта GatewayClass. Например,<gatewayclass.yaml>.
4. Создать Gateway
-
Создайте YAML-файл с манифестом для объекта Gateway.
Пример манифеста Gateway:
---apiVersion: gateway.networking.k8s.io/v1kind: Gatewaymetadata:name: external-gatewayspec:gatewayClassName: envoy-gatewaylisteners:- name: httpprotocol: HTTPport: 80 -
Примените манифест:
kubectl apply -f <file_name>Укажите
<file_name>— имя YAML-файла с манифестом для создания объекта Gateway. Например,<gateway.yaml>.
Созданный балансировщик нагрузки появится в панели управления: в верхнем меню нажмите Продукты и выберите Облачные серверы → раздел Балансировщики → вкладка Балансировщики.
5. Создать HTTPRoute
-
Создайте YAML-файл с манифестом для объекта HTTPRoute.
Пример манифеста HTTPRoute:
---apiVersion: gateway.networking.k8s.io/v1kind: HTTPRoutemetadata:name: test-routespec:parentRefs:- name: external-gatewayhostnames:- "test.com"rules:- matches:- path:type: Exactvalue: /testpathbackendRefs:- name: my-app-serviceport: 80Здесь:
external-gateway— имя объекта Gateway;my-app-service— имя сервиса, который вы публикуете в интернет.
-
Примените манифест:
kubectl apply -f <file_name>Укажите
<file_name>— имя YAML-файла с манифестом для создания объекта HTTPRoute. Например,<httproute.yaml>.