INTEGRITY Документация

Подключитесь через Cloudflare Access с помощью kubectl

Вы можете подключаться к машинам через kubectl с помощью платформы Cloudflare Zero Trust.

В этом пошаговом руководстве описано, как:

Прежде чем начать

Время выполнения:

30 минут


Создать политику Access

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Контроль доступа > Приложения.
  2. Выберите Создать новое приложение.
  3. Выберите Самостоятельный хостинг и конфиденциальность.
  4. Выберите Добавьте общедоступное имя хоста и введите поддомен. Это будет имя хоста, по которому приложение будет доступно пользователям.
  5. Создать новую политику чтобы управлять тем, кто может обращаться к приложению, или выбрать существующие политики.
  6. Выполните оставшиеся шаги по созданию самостоятельно размещённого приложения чтобы опубликовать приложение.

Установка cloudflared

Cloudflare Tunnel создаёт защищённое исходящее соединение между этим компьютером и сетью Cloudflare. Благодаря модели с исключительно исходящими соединениями можно предотвратить любой прямой доступ к этому компьютеру и закрыть все внешне открытые точки входа. В результате не остаётся ни одного открытого порта межсетевого экрана.

Работа Cloudflare Tunnel обеспечивается легковесным демоном от Cloudflare под названием cloudflared. Загрузите и установите cloudflared на машине DigitalOcean, следуя инструкциям, указанным на Загрузки страницу.

Аутентификация cloudflared

Выполните следующую команду, чтобы авторизовать cloudflared в вашей учётной записи Cloudflare.

cloudflared tunnel login

cloudflared откроет окно браузера и предложит вам войти в свой аккаунт Cloudflare. Если вы работаете на компьютере без браузера или окно браузера не открывается, скопируйте URL-адрес из вывода командной строки и откройте его в браузере на любом другом компьютере.

Выберите любое имя хоста из списка. Cloudflare выпустит сертификат в рамках вашего аккаунта. Указывать конкретное имя хоста, через которое будет обслуживаться Tunnel, не требуется.

Создайте Tunnel

Далее создайте туннель с помощью приведённой ниже команды.

cloudflared tunnel create <NAME>

Замена <NAME> с именем для Tunnel. Это имя может быть любым. Один Tunnel также может обслуживать трафик для нескольких имён хостов и нескольких служб в вашей среде, включая сочетание типов подключения, таких как SSH и HTTP.

Команда выведет ID туннеля и создаст соответствующий файл учетных данных. В любой момент вы можете просмотреть список туннелей в своем аккаунте с помощью следующей команды.

cloudflared tunnel list

Настройте Tunnel

Теперь вы можете настроить туннель чтобы обслуживать трафик.

Создайте YAML файл, который cloudflared может достичь. По умолчанию cloudflared будет искать файл в той же папке, где находится cloudflared установлен.

vim ~/.cloudflared/config.yml

Далее настройте туннель: замените пример ID ниже на ID туннеля, созданного на предыдущем шаге. Также замените имя хоста в этом примере на имя хоста приложения, настроенного в Cloudflare Access.

tunnel: 6ff42ae2-765d-4adf-8112-31c55c1551ef
credentials-file: /root/.cloudflared/6ff42ae2-765d-4adf-8112-31c55c1551ef.json

ingress:
  - hostname: azure.widgetcorp.tech
    service: tcp://kubernetes.docker.internal:6443
    originRequest:
      proxyType: socks
  - service: http_status:404
  # Catch-all rule, which responds with 404 if traffic doesn't match any of
  # the earlier rules

Маршрут к туннелю

Теперь можно создать DNS-запись, которая будет направлять трафик к этому туннелю. На один туннель может указывать несколько DNS-записей: трафик будет отправляться настроенной службе, если имя хоста задано с входящее правило.

  1. Войдите в Панель управления Cloudflare и перейдите в DNS-записи странице вашего домена.

    Перейдите в Записи ↗
  2. Выберите Add record. Выберите CNAME в качестве типа записи. Для Название, выберите имя хоста, где нужно создать Tunnel. Оно должно совпадать с именем хоста в политике Access.

  3. Для Цель, введите ID вашего туннеля, а затем .cfargotunnel.com. Например:

  6ff42ae2-765d-4adf-8112-31c55c1551ef.cfargotunnel.com
  1. Выберите Save.

Запустите туннель

Теперь можно запустить туннель, чтобы подключить целевую службу к Cloudflare. Для запуска туннеля используйте следующую команду, заменив <NAME> с именем, созданным для вашего Tunnel.

cloudflared tunnel run <NAME>

Рекомендуем запустить cloudflared как услуга которая настроена на запуск при старте.

Подключитесь с клиентского компьютера

Теперь подключиться с клиентской машины можно с помощью cloudflared.

В этом примере используется ноутбук с macOS. В macOS можно установить cloudflared с помощью следующей команды в Homebrew.

brew install cloudflared

Выполните следующую команду, чтобы создать подключение от устройства к Cloudflare. Можно указать любой доступный порт.

cloudflared access tcp --hostname azure.widgetcorp.tech --url 127.0.0.1:1234

Пока эта служба работает, вы можете выполнить kubectl команда и cloudflared откроет окно браузера и предложит пользователю пройти аутентификацию у вашего поставщика SSO. После успешной аутентификации cloudflared предоставит доступ к соединению с клиентской машиной по локальному URL-адресу, указанному в команде.

kubeconfig пока не поддерживает конфигурации proxy command, хотя сообщество уже предложило соответствующие планы. Тем временем пользователи могут создать псевдоним для API-сервера кластера, чтобы сэкономить время.

alias kubeone="env HTTPS_PROXY=socks5://127.0.0.1:1234 kubectl"