Kube-ps1

jonmosco jonmosco
Dépôt créer le : 27/11/2017
Release du : 11/03/2026 kube-ps1 v0.9.0 release
Forks: 364 Watcher: 0 3769
Choisir une liste...
FR

kube-ps1: Kubernetes invite pour bash et zsh

GitHub Release CI

Un script qui vous permet d'ajouter le contexte et l'espace de noms de Kubernetes configuré surkubectlà vos chaînes Bash/Zsh$PS1).

Inspiré par plusieurs outils utilisés pour simplifier l'utilisation dekubectl.

prompt demo

Installation

Emballages

Ports MacOS Brew

Gestionnaire de paquets Homebrew:

brew update
brew install kube-ps1

Arche Linux

Paquet AUR disponible àhttps://aur.archlinux.org/packages/kube-ps1/.

Oh mon Zsh

https://github.com/ohmyzsh/ohmyzsh

kube-ps1 est inclus comme un plugin dans le projet oh-my-zsh. Pour l'activer, modifiez votre~/.zshrcet ajouter le plugin & #160;:

plugins=(
  kube-ps1
)
PROMPT='$(kube_ps1)'$PROMPT # or RPROMPT='$(kube_ps1)'

Plugin Zsh zinit

Utilisationzinit

Mise à jour.zshrcavec:

zinit light jonmosco/kube-ps1
PROMPT='$(kube_ps1)'$PROMPT # or RPROMPT='$(kube_ps1)'

Graphique

Installerkube-ps1en zsh, bash ou poisson avec un seul clic.

install-with-fig.svg

Source (clone-git)

  1. Clone ce dépôt
  2. Source le kube-ps1.sh dans votre~/.zshrcou votre~/.bashrc

Zsh

source /path/to/kube-ps1.sh
PROMPT='$(kube_ps1)'$PROMPT # or RPROMPT='$(kube_ps1)'

Bash

source /path/to/kube-ps1.sh
PS1='[\u@\h \W $(kube_ps1)]\$ '

Exigences

L'invite par défaut suppose que vous avezkubectlutilitaire en ligne de commande installé. Les instructions officielles d'installation et les binaires sont disponibles:

Install and Set up kubectl

Si vous utilisez ceci avec OpenShiftocles besoins d'outils installés. Il peut être obtenu des ports de brasserie:

brew install openshift-cli

ou la source peut être téléchargée:

OC Client Tools

Définit le binaire àocavec la variable suivante:

KUBE_PS1_BINARY=oc

Si aucun binaire n'est disponible, l'invite va imprimer ce qui suit:

(<symbol>|BINARY-N/A:N/A)

Utilitaires d'aide

Il ya plusieurs grands outils qui rendent l'utilisation de kubectl très agréable:

  • kubectx and kubenssont parfaits pour commutation rapide entre les clusters et les espaces de noms.

Port de Tmux

J'ai commencé à porter kube-ps1 à tmux en tant que plugin de ligne de statut. Si vous préférez tmux, et comme la fonctionnalité fournie par kube-ps1, kube-tmuxprojet

Structure rapide

La mise en page par défaut est :

(<symbol>|<context>:<namespace>)

Si le contexte actuel n'est pas défini, kube-ps1 retournera ce qui suit :

(<symbol>|N/A:N/A)

Permettre/désactiver

Si vous voulez arrêter d'afficher temporairement le statut de Kubernetes sur votre chaîne de caractères lancerkubeoff. Pour désactiver l'invite pour toutes les sessions shell, lancezkubeoff -g. Vous pouvez l'activer à nouveau dans le shell actuel en exécutantkubeon, et mondial aveckubeon -g.

kubeon     : turn on kube-ps1 status for this shell.  Takes precedence over
             global setting for current session
kubeon -g  : turn on kube-ps1 status globally
kubeoff    : turn off kube-ps1 status for this shell. Takes precedence over
             global setting for current session
kubeoff -g : turn off kube-ps1 status globally

Symbole

Les symboles par défaut sont UTF8 et devraient fonctionner avec la plupart des polices. Si vous voulez utiliser les Kubernetes et OpenShift glyphs, vous devez installer une police patchée qui contient le glyph.Nerd Fontsfournit les deux glyphes. Suivez les instructions d'installation pour installer la police corrigée.

KUBE_PS1_SYMBOL_CUSTOMoptions

Options Symbole Description Il n'y a pas de différence entre les deux. Par défaut (chaîne vide)\u2388) Symbole souvent utilisé pour représenter Kubernetes (Unicode\u2638) ocopenshift-glyphSymbole représentant OpenShift (Unicode)\ue7b7) - ouik8s-glyphSymbole représentant Kubernetes (Unicode)\ue7b7)

Pour définir le symbole à l'un des glyphes personnalisés, ajoutez ce qui suit à votre~/.bashrcou~/.zshrc:

KUBE_PS1_SYMBOL_CUSTOM=img

Pour définir le symbole par défaut, définissez leKUBE_PS1_SYMBOLà une corde vide.

Voici une démonstration des symboles en action: kube-ps1-symbols

Si la police n'est pas correctement installée et que le glyphe n'est pas disponible, elle affichera un ensemble vide de crochets ou similaires:

 echo -n "\ue7b7"
 

Personnalisation

Les paramètres par défaut peuvent être dépassés dans~/.bashrcou~/.zshrcpar réglage les variables suivantes:

Valeur par défaut Il n'y a pas de différence entre les deux. AutresKUBE_PS1_BINARYAutreskubectlPar défaut Kubernetes binaire AutresKUBE_PS1_NS_ENABLEAutrestrueAfficher l'espace de noms. Si défini àfalse, cela va également désactiverKUBE_PS1_DIVIDERAutres AutresKUBE_PS1_PREFIXAutres(caractère d'ouverture rapide AutresKUBE_PS1_SYMBOL_ENABLEAutrestrueAfficher le symbole de l'invite. Si défini àfalse, cela va également désactiverKUBE_PS1_SEPARATORAutres AutresKUBE_PS1_SYMBOL_PADDINGAutresfalseAjoute un espace (padding) après le symbole pour empêcher le grabage des caractères de l'invite. AutresKUBE_PS1_SYMBOL_CUSTOMAutres⎈Modifier le symbole de l'invite par défaut. Unicode\u2388. Les options sontk8s,img,ocAutres AutresKUBE_PS1_SYMBOL_COLORAutresblueModifier la couleur du symbole par défaut. AutresKUBE_PS1_SEPARATORSéparateur entre le symbole et le nom du contexte AutresKUBE_PS1_DIVIDERAutres:Séparateur entre contexte et espace de noms AutresKUBE_PS1_SUFFIXAutres)caractère de fermeture rapide AutresKUBE_PS1_CLUSTER_FUNCTIONAucun défaut, doit être fourni par l'utilisateur. AutresKUBE_PS1_NAMESPACE_FUNCTIONAucun défaut, doit être fourni par l'utilisateur. AutresKUBE_PS1_CTX_COLOR_FUNCTIONAucun défaut, doit être fourni par l'utilisateur. AutresKUBE_PS1_HIDE_IF_NOCONTEXTAutresfalseCacher l'invite kube-ps1 si aucun contexte n'est défini

Pour désactiver une fonctionnalité, définissez-la à une chaîne vide :

KUBE_PS1_SEPARATOR=''

Couleurs

Les couleurs par défaut sont définies avec les variables suivantes :

Valeur par défaut Il n'y a pas de différence entre les deux. AutresKUBE_PS1_PREFIX_COLORAutresnullDéfinir la couleur par défaut du préfixe de l'invite AutresKUBE_PS1_SYMBOL_COLORAutresblueDéfinir la couleur par défaut du symbole Kubernetes AutresKUBE_PS1_CTX_COLORAutresredDéfinir la couleur par défaut du contexte AutresKUBE_PS1_SUFFIX_COLORAutresnullDéfinir la couleur par défaut du suffixe d'invite AutresKUBE_PS1_NS_COLORAutrescyanDéfinir la couleur par défaut de l'espace de noms AutresKUBE_PS1_BG_COLORAutresnullDéfinir la couleur par défaut de l'arrière-plan de l'invite

Bleu a été utilisé pour le symbole par défaut pour correspondre à la couleur Kubernetes aussi étroitement autant que possible. Rouge a été choisi comme le nom de contexte pour se démarquer, et cyan pour le Espace de noms.

Définissez la variable à une chaîne vide si vous ne voulez pas de couleur pour chaque section rapide:

KUBE_PS1_CTX_COLOR=''

Les noms sont utilisables pour les couleurs suivantes:

black, red, green, yellow, blue, magenta, cyan

256 couleurs sont disponibles en spécifiant la valeur numérique comme variable c'est un argument.

Personnaliser l'affichage du nom du groupe et de l'espace de noms

Vous pouvez modifier la façon dont le nom du groupe et l'espace de noms sont affichés en utilisant le KUBE_PS1_CLUSTER_FUNCTIONetKUBE_PS1_NAMESPACE_FUNCTIONvariables respectivement.

Pour les exemples suivants, supposons :

nom du groupe & #160;:sandbox.k8s.example.comespace de noms & #160;:alpha

Si vous utilisez des noms de grappes de style de domaine, votre invite sera assez longue Très vite. Disons que vous voulez seulement afficher la première partie du Nom du groupe (sandbox), vous pouvez le faire en ajoutant ce qui suit:

function get_cluster_short() {
  echo "$1" | cut -d . -f1
}

KUBE_PS1_CLUSTER_FUNCTION=get_cluster_short

Le même motif peut être suivi pour personnaliser l'affichage de l'espace de noms. Disons que vous préféreriez que l'espace de noms soit affiché dans toutes les majuscules (ALPHA), voici une façon de faire:

function get_namespace_upper() {
    echo "$1" | tr '[:lower:]' '[:upper:]'
}

export KUBE_PS1_NAMESPACE_FUNCTION=get_namespace_upper

Dans les deux cas, la variable est définie au nom de la fonction, et vous devez avoir défini la fonction dans votre configuration shell avant que kube ps1 ne soit appelé. La fonction doit accepter un paramètre unique et faire écho à la valeur finale.

Couleurs du contexte dynamique

Vous pouvez définir différentes couleurs pour différents contextes en utilisant le KUBE_PS1_CTX_COLOR_FUNCTIONvariable. Ceci est utile pour le codage des couleurs contextes pour faire ressortir visuellement les environnements de production.

Par exemple, pour rendre les contextes de production rouges et les contextes de développement verts :

function kube_ps1_ctx_color() {
  local context="$1"

  case "$context" in
    *prod*)
      echo "red"
      ;;
    *dev*)
      echo "green"
      ;;
    *staging*|*stg*)
      echo "yellow"
      ;;
    *)
      echo "cyan"  # default color for other contexts
      ;;
  esac
}

export KUBE_PS1_CTX_COLOR_FUNCTION=kube_ps1_ctx_color

La fonction reçoit le nom du contexte comme premier paramètre et doit faire écho le nom de couleur souhaité. Toutes les options de couleur prises en charge parKUBE_PS1_CTX_COLORsont disponibles, y compris les couleurs nommées (noir, rouge, vert, jaune, bleu, magenta, codes cyan, blanc) et 256 couleurs (0-256).

SiKUBE_PS1_CTX_COLOR_FUNCTIONn'est pas défini, kube-ps1 utilisera la valeur de KUBE_PS1_CTX_COLOR(par défaut : rouge).

Rapports de bogue et configuration du shell

En raison des nombreuses façons de personnaliser le shell, veuillez essayer l'invite avec un configuration minimale avant de soumettre un rapport de bogue.

Ceci peut être fait comme suit pour chaque coque avant de charger kube-ps1:

C'est vrai

bash --norc

- Oui

zsh -f
or
zsh --no-rcs

Pour le symbole invite, une police patchée contenant les glyphes doit être installée. .Nerd Fonts Downloadsfournit patché polices contenant les glyphes. Veuillez consulter leur documentation pour cela, support est hors de portée pour ce projet.

Contributeurs

Merci à tous les membres de la communauté pour leur contribution à kube-ps1!

kube-ps1

Contributeurs GitHub

jonmosco
jonmosco
214 contributions
bradym
bradym
3 contributions
ahmetb
ahmetb
2 contributions
jonathanmdr
jonathanmdr
2 contributions
luisdavim
luisdavim
2 contributions
adamcstephens
adamcstephens
1 contributions
chriskepticode
chriskepticode
1 contributions
drubin
drubin
1 contributions
hyperupcall
hyperupcall
1 contributions
ibayramli
ibayramli
1 contributions
jamesmcdonald
jamesmcdonald
1 contributions
rootsongjc
rootsongjc
1 contributions
pabrahamsson
pabrahamsson
1 contributions
reneluria
reneluria
1 contributions
pansachin
pansachin
1 contributions
sistason
sistason
1 contributions
astraw99
astraw99
1 contributions
Artmorse
Artmorse
1 contributions
zyf0330
zyf0330
1 contributions