Настройка Bridge to Kubernetes
Заметка
Bridge to Kubernetes будет окончательно прекращён 30 апреля 2025 года. Дополнительные сведения о прекращении поддержки продукта и вариантах с открытым исходным кодом см. в обсуждении GitHub , вопрос.
Вы можете настроить локальный процесс Bridge to Kubernetes с помощью двух методов. Вы можете аннотировать службы в вашем кластере и/или предоставить локальную конфигурацию.
Конфигурация Kubernetes
Файл конфигурации Kubernetes (kubeconfig) по умолчанию хранится в ~/.kube/config
, но его можно задать с помощью переменной среды KUBECONFIG.
Если вы используете Visual Studio, вы можете изменить профиль запуска Bridge to Kubernetes в интегрированной среде разработки с помощью пользовательского интерфейса профилей запуска отладки в свойствах отладки. См. Редактирование профиля запуска.
После этого можно открыть следующий экран, который позволяет изменить некоторые из наиболее распространенных свойств конфигурации.
Запретить Bridge to 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укажите имя и значение для каждого тома, который вы хотите скачать. Имя — это переменная среды, которая будет использоваться на вашем компьютере для разработки. Значение — это имя тома и путь на компьютере для разработки. Значение значения принимает форму $(volumeMounts:VOLUME_NAME)/PATH/TO/FILES.
Например:
version: 0.1
env:
- name: ALLOW_LIST_PATH
value: $(volumeMounts:allow-list)/allow-list
В приведенном выше примере загружается том списка разрешений из контейнера и задает это расположение, а также путь к переменной среды ALLOW_LIST_PATH. Поведение по умолчанию заключается в скачивании файлов в путь, указанный в временном каталоге на компьютере разработки. В приведенном выше примере ALLOW_LIST_PATH имеет значение /TEMPORARY_DIR/allow-list
.
Заметка
Скачивание тома будет загружать все содержимое этого тома независимо от заданного пути. Путь используется только для задания переменной среды для использования на компьютере разработки. Добавление /allow-list или /path/to/files в конец маркера фактически не влияет на место сохранения тома. Переменная среды является просто удобством, если приложению требуется ссылка на определенный файл внутри этого тома.
Вы также можете указать расположение для скачивания тома на компьютере разработки вместо временного каталога. В разделе volumeMountsукажите имя и локальный путь для каждого конкретного расположения. Имя — это имя тома, которое нужно сопоставить, и 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укажите имя и значение для каждой службы, которую необходимо сделать доступной на компьютере разработки. Имя — это переменная среды, которая будет использоваться на вашем компьютере для разработки. Значение — это имя службы из вашего кластера и путь. Значение для значение принимает форму $(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укажите имя и значение для каждой переменной среды, которую вы хотите создать на компьютере разработки. Имя — это переменная среды, используемая на вашем компьютере для разработки, а — это её значение. Например:
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.