INTEGRITY Dokumentace

Použití Cloudflare Tunnels s pluginy pro pověření client-go v Kubernetes

Tento návod vysvětluje, jak k ověřování používat Cloudflare Tunnels s pluginy client-go pro přihlašovací údaje v Kubernetes. Podle těchto kroků můžete bezpečně přistupovat ke svému clusteru Kubernetes přes Cloudflare Tunnel pomocí kubectl nástroj příkazového řádku.

Předpoklady

1. Nastavení Cloudflare Tunnel

  1. Ověřte cloudflared s vaším účtem Cloudflare:

    cloudflared tunnel login
  2. Vytvořte nový tunel:

    cloudflared tunnel create k8s-tunnel
  3. Nakonfigurujte tunel vytvořením konfiguračního souboru s názvem 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

    Nahraďte <TUNNEL_ID> s ID vašeho tunelu a podle potřeby upravte hostname.

  4. Spusťte tunel:

    cloudflared tunnel run k8s-tunnel

2. Nakonfigurujte server Kubernetes API

Ujistěte se, že je váš server Kubernetes API nakonfigurován tak, aby přijímal ověřování od Cloudflare Tunnels. To může zahrnovat nastavení ověřovacího webhooku nebo konfiguraci API serveru tak, aby důvěřoval klientským certifikátům Cloudflare Tunnel.

3. Nastavte client-go credential plugin

  1. Vytvořte skript s názvem cloudflare-k8s-auth.sh následujícím obsahem:

    #!/bin/bash
    
    echo '{
      "apiVersion": "client.authentication.k8s.io/v1beta1",
      "kind": "ExecCredential",
      "status": {
        "token": "'"$(cloudflared access token -app=https://k8s.example.com)"'"
      }
    }'

    Nastavte skript jako spustitelný:

    chmod +x cloudflare-k8s-auth.sh
  2. Aktualizujte ~/.kube/config soubor pro použití credential pluginu:

    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. Použijte kubectl s Cloudflare Tunnel

Nyní můžete použít kubectl příkazy jako obvykle. Modul pověření client-go se o ověření přes Cloudflare Tunnel postará automaticky:

kubectl get pods

Řešení potíží

Pokud narazíte na problémy:

Další informace naleznete v Dokumentace Cloudflare Tunnels a Kubernetes client-go credential plugins documentation.