Перейти к основному содержимому

Опубликовать сервис из кластера Managed Kubernetes в интернет

  1. Проверьте квоты.
  2. Подключитесь к кластеру.
  3. Создайте GatewayClass.
  4. Создайте Gateway.
  5. Создайте HTTPRoute.

1. Проверить квоты

Убедитесь, что в пуле выделена квота минимум на один публичный IP-адрес. Для этого посмотрите потребление квот облачной платформы.

2. Подключиться к кластеру

Чтобы подключиться к кластеру, используйте инструкцию Подключиться к кластеру Managed Kubernetes.

3. Создать GatewayClass

  1. Создайте YAML-файл с манифестом для объекта GatewayClass.

    Пример манифеста GatewayClass:

    ---
    apiVersion: gateway.networking.k8s.io/v1
    kind: GatewayClass
    metadata:
    name: envoy-gateway
    spec:
    controllerName: gateway.envoyproxy.io/gatewayclass-controller
  2. Примените манифест:

    kubectl apply -f <file_name>

    Укажите <file_name> — имя YAML-файла с манифестом для создания объекта GatewayClass. Например, <gatewayclass.yaml>.

4. Создать Gateway

  1. Создайте YAML-файл с манифестом для объекта Gateway.

    Пример манифеста Gateway:

    ---
    apiVersion: gateway.networking.k8s.io/v1
    kind: Gateway
    metadata:
    name: external-gateway
    spec:
    gatewayClassName: envoy-gateway
    listeners:
    - name: http
    protocol: HTTP
    port: 80
  2. Примените манифест:

    kubectl apply -f <file_name>

    Укажите <file_name> — имя YAML-файла с манифестом для создания объекта Gateway. Например, <gateway.yaml>.

Созданный балансировщик нагрузки появится в панели управления: в верхнем меню нажмите Продукты и выберите Облачные серверы → раздел Балансировщики → вкладка Балансировщики.

5. Создать HTTPRoute

  1. Создайте YAML-файл с манифестом для объекта HTTPRoute.

    Пример манифеста HTTPRoute:

    ---
    apiVersion: gateway.networking.k8s.io/v1
    kind: HTTPRoute
    metadata:
    name: test-route
    spec:
    parentRefs:
    - name: external-gateway
    hostnames:
    - "test.com"
    rules:
    - matches:
    - path:
    type: Exact
    value: /testpath
    backendRefs:
    - name: my-app-service
    port: 80

    Здесь:

    • external-gateway — имя объекта Gateway;
    • my-app-service — имя сервиса, который вы публикуете в интернет.
  2. Примените манифест:

    kubectl apply -f <file_name>

    Укажите <file_name> — имя YAML-файла с манифестом для создания объекта HTTPRoute. Например, <httproute.yaml>.