Настройка Bridge to Kubernetes

Вы можете настроить локальный процесс Bridge to Kubernetes с помощью двух методов. Вы можете снабдить службы в кластере и предоставить локальную конфигурацию.

Конфигурация Kubernetes

Запрет переадресации определенных портов мостом в Kubernetes

Настройте Bridge to Kubernetes, чтобы игнорировать сопоставление определенных портов в службе Kubernetes с компьютером, добавив заметку bridgetokubernetes/ignore-ports в службу.

apiVersion: v1
kind: Service
metadata:
  annotations:
    bridgetokubernetes/ignore-ports:445,23

Локальная конфигурация с помощью (KubernetesLocalProcessConfig.yaml)

Файл KubernetesLocalProcessConfig.yaml позволяет реплицировать переменные среды и подключенные файлы, доступные для групп pod в кластере. В файле KubernetesLocalProcessConfig.yaml можно задать следующие действия:

  • скачивание тома и указание пути к нему в виде переменной среды;
  • предоставление доступа к службе, работающей в кластере, для процессов, выполняющихся на компьютере разработчика;
  • создание переменной среды с постоянным значением.

Стандартный файл KubernetesLocalProcessConfig.yaml не создается автоматически, поэтому его нужно создать вручную в корневой папке проекта.

Скачивание тома

В разделе env укажите значения name и value для каждого скачиваемого тома. name — это переменная среды, которая будет использоваться на компьютере разработки. value — это имя тома и путь к нему на компьютере разработки. Значение value имеет такой формат: $(volumeMounts:VOLUME_NAME)/PATH/TO/FILES.

Например:

version: 0.1
env:
  - name: ALLOW_LIST_PATH
    value: $(volumeMounts:allow-list)/allow-list

В приведенном выше примере скачивается том allow-list из контейнера, а также указывается расположение и путь для переменной среды ALLOW_LIST_PATH. По умолчанию файлы скачиваются во временный каталог на компьютере разработки по указанному пути. В приведенном выше примере ALLOW_LIST_PATH имеет значение /TEMPORARY_DIR/allow-list.

Примечание.

Том скачивается со всем содержимым независимо от заданного пути. Путь используется только для указания переменной среды, используемой на компьютере разработки. Добавление /allow-list или /path/to/files в конец маркера не влияет на то, где будет сохранен том. Переменная среды используется только для удобства, если приложению требуется ссылка на определенный файл внутри этого тома.

Вы также можете указать расположение для скачивания подключенного тома на компьютере разработчика, чтобы не использовать временный каталог. В разделе volumeMounts укажите значения name и localPath для каждого расположения. name — это имя тома, которое необходимо сопоставить, а localPath — это абсолютный путь на компьютере разработчика. Например:

version: 0.1
volumeMounts:
  - name: default-token-*
    localPath: /var/run/secrets/kubernetes.io/serviceaccount
env:
  - name: KUBERNETES_IN_CLUSTER_CONFIG_OVERRIDE
    value: $(volumeMounts:default-token-*)

В приведенном выше примере запись в env используется для загрузки тома, имя которого соответствует default-token-*, например default-token-1111 или default-token-1234-5678-90abcdef. Если записи соответствуют несколько томов, используется первый соответствующий том. Все файлы скачиваются в папку /var/run/secrets/kubernetes.io/serviceaccount на компьютере разработки с использованием записи из раздела volumeMounts. Для переменной среды KUBERNETES_IN_CLUSTER_CONFIG_OVERRIDE указывается значение /var/run/secrets/kubernetes.io/serviceaccount.

Предоставление доступа к службе

В разделе env укажите значения name и value для каждой службы, которую необходимо сделать доступной на компьютере разработчика. name — это переменная среды, которая будет использоваться на компьютере разработки. value — это имя службы из кластера и путь. Значение для value имеет такой формат: $(services:SERVICE_NAME)/PATH.

Например:

version: 0.1
env:
  - name: MYAPP1_SERVICE_HOST
    value: $(services:myapp1)/api/v1/

В приведенном выше примере служба myapp1 становится доступной для компьютера разработки, а для переменной среды MYAPP1_SERVICE_HOST указывается локальный IP-адрес службы myapp1 с путем /api/v1 (например, 127.1.1.4/api/v1). Доступ к службе myapp1 можно получить с помощью переменной среды myapp1 или myapp1.svc.cluster.local.

Примечание.

При предоставлении доступа к службе на компьютере разработки станут доступны все ее объекты независимо от заданного пути. Путь используется только для указания переменной среды, используемой на компьютере разработки. Можно также сделать доступной службу из определенного доступного пространства имен Kubernetes, используя $(services:SERVICE_NAME.NAMESPACE_NAME). Например:

version: 0.1
env:
  - name: MYAPP2_SERVICE_HOST
    value: $(services:myapp2.mynamespace)

В приведенном выше примере предоставляется доступ к службе myapp2 из пространства имен mynamespace, доступного на компьютере разработки, а также для переменной среды MYAPP2_SERVICE_HOST указывается значение локального IP-адреса службы myapp2 из пространства имен mynamespace.

Создание переменной среды с постоянным значением

В разделе env укажите значения name и value для каждой переменной среды, которую необходимо создать на компьютере разработки. name — это переменная среды, которая будет использоваться на компьютере разработки, а value — ее значение. Например:

version: 0.1
env:
  - name: DEBUG_MODE
    value: "true"

В приведенном выше примере создается переменная среды с именем DEBUG_MODE и значением true.

Добавить зависимость службы

Вы можете указать зависимость службы, такую как база данных или кэш, с помощью поля универсальных зависимостей, аналогично тому, как объявляются службы. Указывайте зависимость в этом поле, если службе, которую вы отлаживаете, необходимо подключаться к ресурсам, которые не запущены в кластере. Объявите зависимость, как показано в следующем примере.

version: 0.1
volumeMounts:
env:
  - name: DB_HOST
    value: $(externalendpoints:server-bridgetest123.database.windows.net:1433)

Укажите DNS-имя узла (server-bridgetest13.database.windows.net в примере) и порт (в примере 1433) для вашей зависимости.

При указании таких зависимостей, как базы данных, модели проверки подлинности перенаправления не будут работать. Например, для Базы данных SQL Azure следует задать для политики подключения значение "Прокси" (а не "Перенаправление" или "По умолчанию").

Пример файла KubernetesLocalProcessConfig.yaml

Ниже приведен пример файла KubernetesLocalProcessConfig.yaml:

version: 0.1
volumeMounts:
  - name: default-token-*
    localPath: /var/run/secrets/kubernetes.io/serviceaccount
env:
  - name: KUBERNETES_IN_CLUSTER_CONFIG_OVERRIDE
    value: $(volumeMounts:default-token-*)
  - name: ALLOW_LIST_PATH
    value: $(volumeMounts:allow-list)/allow-list
  - name: MYAPP1_SERVICE_HOST
    value: $(services:myapp1)/api/v1/
  - name: MYAPP2_SERVICE_HOST
    value: $(services:myapp2.mynamespace)
  - name: DEBUG_MODE 
    value: "true"

Дальнейшие действия

Чтобы приступить к использованию Bridge to Kubernetes для подключения локального компьютера разработки к кластеру, см. статьи Использование Bridge to Kubernetes с Visual Studio Code и Использование Bridge to Kubernetes с Visual Studio.