← Cloudflare One / cloudflare-one / tutorials
Используйте Cloudflare Tunnel с подключаемыми модулями учётных данных Kubernetes client-go
В этом руководстве описано, как использовать Cloudflare Tunnels с плагинами учетных данных Kubernetes client-go для аутентификации. Следуя этим шагам, вы сможете безопасно получать доступ к своему кластеру Kubernetes через Cloudflare Tunnel с помощью kubectl инструмент командной строки.
Предварительные требования
- Аккаунт Cloudflare
- Клиент Cloudflare Tunnel (
cloudflared) установленный на вашем компьютере - Доступ к кластеру Kubernetes
kubectlустановлено на вашем компьютере
1. Настройте Cloudflare Tunnel
-
Аутентификация
cloudflaredс вашим аккаунтом Cloudflare:cloudflared tunnel login -
Создайте новый туннель:
cloudflared tunnel create k8s-tunnel -
Настройте свой Tunnel, создав файл конфигурации с именем
config.yml:tunnel: <TUNNEL_ID> credentials-file: /path/to/credentials.json ingress: - hostname: k8s.example.com service: tcp://kubernetes.default.svc.cluster.local:443 - service: http_status:404Замените
<TUNNEL_ID>с ID вашего туннеля и при необходимости измените имя хоста. -
Запустите туннель:
cloudflared tunnel run k8s-tunnel
2. Настройте API-сервер Kubernetes
Убедитесь, что ваш API сервер Kubernetes настроен на прием аутентификации от Cloudflare Tunnels. Для этого может потребоваться настроить вебхук аутентификации или настроить API сервер так, чтобы он доверял клиентским сертификатам Cloudflare Tunnel.
3. Настройте client-go credential plugin
-
Создайте скрипт с именем
cloudflare-k8s-auth.shследующим содержимым:#!/bin/bash echo '{ "apiVersion": "client.authentication.k8s.io/v1beta1", "kind": "ExecCredential", "status": { "token": "'"$(cloudflared access token -app=https://k8s.example.com)"'" } }'Сделайте скрипт исполняемым:
chmod +x cloudflare-k8s-auth.sh -
Обновите ваш
~/.kube/configфайл для использования credential plugin:apiVersion: v1 kind: Config clusters: - cluster: server: https://k8s.example.com name: cloudflare-k8s users: - name: cloudflare-user user: exec: apiVersion: client.authentication.k8s.io/v1beta1 command: /path/to/cloudflare-k8s-auth.sh interactiveMode: Never contexts: - context: cluster: cloudflare-k8s user: cloudflare-user name: cloudflare-k8s-context current-context: cloudflare-k8s-context
4. Используйте kubectl с Cloudflare Tunnel
Теперь вы можете использовать kubectl команды как обычно. Плагин учетных данных client-go автоматически выполнит аутентификацию через Cloudflare Tunnel:
kubectl get podsУстранение неполадок
Если у вас возникнут проблемы:
- Убедитесь
cloudflaredзапущено, и туннель активен - Проверьте, что ваш
~/.kube/configфайл настроен правильно - Убедитесь, что сервер Kubernetes API правильно настроен для приёма аутентификации от Cloudflare Tunnels
- Проверьте журналы Cloudflare Tunnel на наличие сообщений об ошибках
Дополнительные сведения см. в Документация Cloudflare Tunnels и Kubernetes client-go credential plugins documentation ↗.