Plugin kubectl
Utiliser ProxyAuthK8S depuis kubectl
Last updated on
Le plugin kubectl proxyauth est le pendant client de ProxyAuthK8S : il gère la connexion
OIDC, stocke les identifiants dans le trousseau du système, et sert de credential plugin
kubectl pour que kubectl parle à n'importe quel cluster exposé.
Installation
Via krew
kubectl krew install proxyauthLe manifeste krew est généré à chaque tag et attaché à la release GitHub. Tant que le plugin n'est pas dans l'index officiel, l'installation se fait depuis l'archive de la release.
Depuis une release
VERSION=v0.1.9
curl -sSL -o kubectl-proxyauth.tar.gz \
"https://github.com/batleforc/proxyauthK8s/releases/download/${VERSION}/kubectl-proxyauth_${VERSION}_linux_amd64.tar.gz"
tar xzf kubectl-proxyauth.tar.gz
install -m 0755 kubectl-proxyauth ~/.local/bin/Le binaire doit s'appeler kubectl-proxyauth et être dans le PATH : c'est ce qui permet à
kubectl de l'exposer comme kubectl proxyauth.
Sur Linux, les identifiants sont stockés dans le trousseau via l'API Secret Service. Il faut
donc un gnome-keyring ou un KWallet en cours d'exécution.
Usage
Se connecter au serveur
kubectl proxyauth login --server-url https://proxyauthk8s.example.com --token <jeton>Le login serveur valide le jeton auprès du serveur puis le stocke dans le trousseau. Sans
--token, le jeton est demandé de façon interactive.
Lister les clusters visibles
kubectl proxyauth get clustersSeuls les clusters dont expose_via_dashboard est activé et dont le groupe dashboard
figure dans les groupes de l'utilisateur apparaissent ici.
Se connecter à un cluster
Pour un cluster dont le provider est OIDC/SSO, la connexion est interactive :
kubectl proxyauth -n default login mon-clusterLe plugin ouvre le navigateur sur le provider OIDC, récupère code/state via un callback
local (http://localhost:18000/ par défaut), échange le code auprès du serveur et stocke
l'id_token du cluster dans le trousseau.
L'URI de redirection utilisée est http://localhost:<port>/auth/callback/<ns>/<cluster> et doit
être enregistrée pour le client OIDC du cluster côté IdP. Le port par défaut est 18000 ;
changez-le avec PROXYAUTH_CALLBACK_PORT si besoin (et enregistrez l'URI correspondante).
Pour un cluster non-SSO (ou pour fournir un jeton directement) :
kubectl proxyauth -n default login mon-cluster --token <jeton>Cela écrit un contexte kubeconfig dont l'exec pointe sur le plugin : à chaque appel,
kubectl lui demande un jeton frais.
Se déconnecter / purger le cache
kubectl proxyauth logout mon-cluster # retire le jeton d'un cluster
kubectl proxyauth logout # déconnecte du serveur (tous ses jetons)
kubectl proxyauth cache clear # purge tous les jetons en cacheVérifier la configuration
kubectl proxyauth config getLe kubeconfig généré
apiVersion: v1
kind: Config
clusters:
- name: mon-cluster
cluster:
server: https://proxyauthk8s.example.com/clusters/default/mon-cluster
users:
- name: mon-cluster
user:
exec:
apiVersion: client.authentication.k8s.io/v1beta1
command: kubectl-proxyauth
args: ["get-token"]
contexts:
- name: mon-cluster
context:
cluster: mon-cluster
user: mon-clusterL'URL du serveur est celle du proxy, pas celle du cluster : c'est ProxyAuthK8S qui authentifie l'appel, applique les règles de sécurité, puis relaie vers l'apiserver.
Résolution de problèmes
| Symptôme | Cause probable |
|---|---|
401 sur toutes les requêtes | Jeton expiré : relancer kubectl proxyauth login |
403 avec un message sur un groupe | L'utilisateur n'est pas dans le proxy_group du cluster |
403 avec un message sur un chemin | Le chemin n'est pas dans security_config.allowed_resources |
429 avec un en-tête Retry-After | Rate limiting, ou bannissement après des échecs d'authentification répétés |
Le cluster n'apparaît pas dans get clusters | expose_via_dashboard est à false (défaut) ou le groupe dashboard ne correspond pas |
Have feedback?
Share on GitHub