← Cloudflare One / cloudflare-one / tutorials
Подключитесь через Cloudflare Access с помощью kubectl
Вы можете подключаться к машинам через kubectl с помощью платформы Cloudflare Zero Trust.
В этом пошаговом руководстве описано, как:
- Создание политики в Cloudflare Access для защиты машины
- Подключите компьютер к сети Cloudflare с помощью kubectl
- Подключитесь с клиентского компьютера
Прежде чем начать
Время выполнения:
30 минут
Создать политику Access
- В Панель управления Cloudflare ↗, перейдите в Zero Trust > Контроль доступа > Приложения.
- Выберите Создать новое приложение.
- Выберите Самостоятельный хостинг и конфиденциальность.
- Выберите Добавьте общедоступное имя хоста и введите поддомен. Это будет имя хоста, по которому приложение будет доступно пользователям.
- Создать новую политику чтобы управлять тем, кто может обращаться к приложению, или выбрать существующие политики.
- Выполните оставшиеся шаги по созданию самостоятельно размещённого приложения чтобы опубликовать приложение.
Установка cloudflared
Cloudflare Tunnel создаёт защищённое исходящее соединение между этим компьютером и сетью Cloudflare. Благодаря модели с исключительно исходящими соединениями можно предотвратить любой прямой доступ к этому компьютеру и закрыть все внешне открытые точки входа. В результате не остаётся ни одного открытого порта межсетевого экрана.
Работа Cloudflare Tunnel обеспечивается легковесным демоном от Cloudflare под названием cloudflared. Загрузите и установите cloudflared на машине DigitalOcean, следуя инструкциям, указанным на Загрузки страницу.
Аутентификация cloudflared
Выполните следующую команду, чтобы авторизовать cloudflared в вашей учётной записи Cloudflare.
cloudflared tunnel logincloudflared откроет окно браузера и предложит вам войти в свой аккаунт 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-записей: трафик будет отправляться настроенной службе, если имя хоста задано с входящее правило.
-
Войдите в Панель управления Cloudflare ↗ и перейдите в DNS-записи странице вашего домена.
Перейдите в Записи ↗ -
Выберите Add record. Выберите
CNAMEв качестве типа записи. Для Название, выберите имя хоста, где нужно создать Tunnel. Оно должно совпадать с именем хоста в политике Access. -
Для Цель, введите ID вашего туннеля, а затем
.cfargotunnel.com. Например:
6ff42ae2-765d-4adf-8112-31c55c1551ef.cfargotunnel.com- Выберите 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"