---
title: 'Опубликовать сервис из кластера Managed Kubernetes в интернет'
sidebar_label: 'Опубликовать сервис в интернет'
sidebar_position: 3
description: 'Как опубликовать сервис в интернет при использовании Envoy Gateway'
---

import Formbricks from '@theme/MDXComponents/Formbricks'

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

1. [Проверьте квоты](#check-quotas).
2. [Подключитесь к кластеру](#connect-to-cluster).
3. [Создайте GatewayClass](#create-gatewayclass).
4. [Создайте Gateway](#create-gateway).
5. [Создайте HTTPRoute](#create-httproute).

## 1. Проверить квоты \{#check-quotas}

Убедитесь, что в пуле выделена [квота](/access-control/projects/quotas.mdx) минимум на один публичный IP-адрес. Для этого [посмотрите потребление квот облачной платформы](/access-control/projects/quotas.mdx#view-consumption).

## 2. Подключиться к кластеру \{#connect-to-cluster}

Чтобы подключиться к кластеру, используйте инструкцию [Подключиться к кластеру Managed Kubernetes](/managed-kubernetes/clusters/connect-to-cluster.mdx).

## 3. Создать GatewayClass \{#create-gatewayclass}

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

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

   ```yaml
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: GatewayClass
   metadata:
       name: envoy-gateway
   spec:
       controllerName: gateway.envoyproxy.io/gatewayclass-controller
   ```

2. Примените манифест:

   ```bash
   kubectl apply -f <file_name>
   ```

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

## 4. Создать Gateway \{#create-gateway}

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

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

   ```yaml
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: Gateway
   metadata:
       name: external-gateway
   spec:
       gatewayClassName: envoy-gateway
       listeners:
           - name: http
             protocol: HTTP
             port: 80
   ```

2. Примените манифест:

   ```bash
   kubectl apply -f <file_name>
   ```

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

Созданный балансировщик нагрузки появится в [панели управления](https://my.selectel.ru/vpc/default/lbaas/load-balancers/): в верхнем меню нажмите **Продукты** и выберите **Облачные серверы** → раздел **Балансировщики** → вкладка **Балансировщики**.

## 5. Создать HTTPRoute \{#create-httproute}

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

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

   ```yaml
   ---
   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. Примените манифест:

   ```bash
   kubectl apply -f <file_name>
   ```

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

<Formbricks />
