diff --git a/content/fr/docs/reference/kubectl/quick-reference.md b/content/fr/docs/reference/kubectl/quick-reference.md new file mode 100644 index 0000000000000..d131778bc8803 --- /dev/null +++ b/content/fr/docs/reference/kubectl/quick-reference.md @@ -0,0 +1,504 @@ +--- +title: Aide-mémoire de kubectl +content_type: concept +weight: 10 # highlight it +card: + name: tasks + weight: 10 +--- + + + +Cette page contient une liste des commandes et options fréquemment utilisées de `kubectl`. +{{< note >}} +Ces instructions concernent Kubernetes v{{< skew currentVersion >}}. Pour vérifier la version, utilisez la commande `kubectl version`. +{{< /note >}} + + +## Autocomplétion de Kubectl + +### BASH + +```bash +source <(kubectl completion bash) # set up autocomplete in bash into the current shell, bash-completion package should be installed first. +echo "source <(kubectl completion bash)" >> ~/.bashrc # add autocomplete permanently to your bash shell. +``` + +Vous pouvez également utiliser un alias pour kubectl qui fonctionne aussi avec l'autocomplétion. + +```bash +alias k=kubectl +complete -o default -F __start_kubectl k +``` + +### ZSH + +```bash +source <(kubectl completion zsh) # set up autocomplete in zsh into the current shell +echo '[[ $commands[kubectl] ]] && source <(kubectl completion zsh)' >> ~/.zshrc # add autocomplete permanently to your zsh shell +``` + +### FISH + +{{< note >}} +Requires kubectl version 1.23 or above. +{{< /note >}} + +```bash +echo 'kubectl completion fish | source' > ~/.config/fish/completions/kubectl.fish && source ~/.config/fish/completions/kubectl.fish +``` + +### Remarque concernant `--all-namespaces` + +L'utilisation de `--all-namespaces` (tous les espaces de nommage) est assez fréquente, alors sachez qu'il existe un raccourci pour cela : + +```kubectl -A``` + +## Contexte et configuration de Kubectl + +Définissez quel cluster Kubernetes doit être utilisé avec `kubectl`, et modifiez les paramètres de configuration. Pour plus de détails sur le fichier de configuration, consultez la documentation [Configurer l'accès à plusieurs clusters](/fr/docs/tasks/access-application-cluster/configure-access-multiple-clusters/). + +```bash +kubectl config view # Show Merged kubeconfig settings. + +# use multiple kubeconfig files at the same time and view merged config +KUBECONFIG=~/.kube/config:~/.kube/kubconfig2 + +kubectl config view + +# Show merged kubeconfig settings and raw certificate data and exposed secrets +kubectl config view --raw + +# get the password for the e2e user +kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}' + +# get the certificate for the e2e user +kubectl config view --raw -o jsonpath='{.users[?(.name == "e2e")].user.client-certificate-data}' | base64 -d + +kubectl config view -o jsonpath='{.users[].name}' # display the first user +kubectl config view -o jsonpath='{.users[*].name}' # get a list of users +kubectl config get-contexts # display list of contexts +kubectl config get-contexts -o name # get all context names +kubectl config current-context # display the current-context +kubectl config use-context my-cluster-name # set the default context to my-cluster-name + +kubectl config set-cluster my-cluster-name # set a cluster entry in the kubeconfig + +# configure the URL to a proxy server to use for requests made by this client in the kubeconfig +kubectl config set-cluster my-cluster-name --proxy-url=my-proxy-url + +# add a new user to your kubeconf that supports basic auth +kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword + +# permanently save the namespace for all subsequent kubectl commands in that context. +kubectl config set-context --current --namespace=ggckad-s2 + +# set a context utilizing a specific username and namespace. +kubectl config set-context gce --user=cluster-admin --namespace=foo \ + && kubectl config use-context gce + +kubectl config unset users.foo # delete user foo + +# short alias to set/show context/namespace (only works for bash and bash-compatible shells, current context to be set before using kn to set namespace) +alias kx='f() { [ "$1" ] && kubectl config use-context $1 || kubectl config current-context ; } ; f' +alias kn='f() { [ "$1" ] && kubectl config set-context --current --namespace $1 || kubectl config view --minify | grep namespace | cut -d" " -f6 ; } ; f' +``` + +## Kubectl apply + +`apply` gère les applications à travers des fichiers définissant les ressources Kubernetes. Il crée et met à jour les ressources dans un cluster en exécutant `kubectl apply`. C'est la méthode recommandée pour gérer les applications Kubernetes en production. Consultez [Kubectl Book](https://kubectl.docs.kubernetes.io). + + +## Création d'objets + +Les manifestes Kubernetes peuvent être définis en YAML ou en JSON. Les extensions de fichier `.yaml`, `.yml`, et `.json` peuvent être utilisées. + +```bash +kubectl apply -f ./my-manifest.yaml # create resource(s) +kubectl apply -f ./my1.yaml -f ./my2.yaml # create from multiple files +kubectl apply -f ./dir # create resource(s) in all manifest files in dir +kubectl apply -f https://example.com/manifest.yaml # create resource(s) from url (Note: this is an example domain and does not contain a valid manifest) +kubectl create deployment nginx --image=nginx # start a single instance of nginx + +# créer un Job qui imprime « Hello World » (bonjour le monde) +kubectl create job hello --image=busybox:1.28 -- echo "Hello World" + +# create a CronJob that prints "Hello World" every minute +kubectl create cronjob hello --image=busybox:1.28 --schedule="*/1 * * * *" -- echo "Hello World" + +kubectl explain pods # get the documentation for pod manifests + +# Create multiple YAML objects from stdin +kubectl apply -f - < pod.yaml + # Generate spec for running pod nginx and write it into a file called pod.yaml +kubectl attach my-pod -i # Attach to Running Container +kubectl port-forward my-pod 5000:6000 # Listen on port 5000 on the local machine and forward to port 6000 on my-pod +kubectl exec my-pod -- ls / # Run command in existing pod (1 container case) +kubectl exec --stdin --tty my-pod -- /bin/sh # Interactive shell access to a running pod (1 container case) +kubectl exec my-pod -c my-container -- ls / # Run command in existing pod (multi-container case) +kubectl debug my-pod -it --image=busybox:1.28 # Create an interactive debugging session within existing pod and immediately attach to it +kubectl debug node/my-node -it --image=busybox:1.28 # Create an interactive debugging session on a node and immediately attach to it +kubectl top pod # Show metrics for all pods in the default namespace +kubectl top pod POD_NAME --containers # Show metrics for a given pod and its containers +kubectl top pod POD_NAME --sort-by=cpu # Show metrics for a given pod and sort it by 'cpu' or 'memory' +``` +## Copie de fichiers et de répertoires vers et depuis des conteneurs + +```bash +kubectl cp /tmp/foo_dir my-pod:/tmp/bar_dir # Copy /tmp/foo_dir local directory to /tmp/bar_dir in a remote pod in the current namespace +kubectl cp /tmp/foo my-pod:/tmp/bar -c my-container # Copy /tmp/foo local file to /tmp/bar in a remote pod in a specific container +kubectl cp /tmp/foo my-namespace/my-pod:/tmp/bar # Copy /tmp/foo local file to /tmp/bar in a remote pod in namespace my-namespace +kubectl cp my-namespace/my-pod:/tmp/foo /tmp/bar # Copy /tmp/foo from a remote pod to /tmp/bar locally +``` +{{< note >}} +`kubectl cp` nécessite que le binaire 'tar' soit présent dans l'image de votre conteneur. Si 'tar' n'est pas disponible, `kubectl cp` échouera. +Pour les cas d'utilisation plus avancés, comme les liens symboliques, widlcard ou la préservation des modes d'accès aux fichiers, envisagez d'utiliser `kubectl exec` +{{< /note >}} + +```bash +tar cf - /tmp/foo | kubectl exec -i -n my-namespace my-pod -- tar xf - -C /tmp/bar # Copy /tmp/foo local file to /tmp/bar in a remote pod in namespace my-namespace +kubectl exec -n my-namespace my-pod -- tar cf - /tmp/foo | tar xf - -C /tmp/bar # Copy /tmp/foo from a remote pod to /tmp/bar locally +``` + + +## Interaction avec les Deployments et les Services +```bash +kubectl logs deploy/my-deployment # dump Pod logs for a Deployment (single-container case) +kubectl logs deploy/my-deployment -c my-container # dump Pod logs for a Deployment (multi-container case) + +kubectl port-forward svc/my-service 5000 # listen on local port 5000 and forward to port 5000 on Service backend +kubectl port-forward svc/my-service 5000:my-service-port # listen on local port 5000 and forward to Service target port with name + +kubectl port-forward deploy/my-deployment 5000:6000 # listen on local port 5000 and forward to port 6000 on a Pod created by +kubectl exec deploy/my-deployment -- ls # run command in first Pod and first container in Deployment (single- or multi-container cases) +``` + +## Interaction avec les Nodes et le cluster + +```bash +kubectl cordon my-node # Mark my-node as unschedulable +kubectl drain my-node # Drain my-node in preparation for maintenance +kubectl uncordon my-node # Mark my-node as schedulable +kubectl top node # Show metrics for all nodes +kubectl top node my-node # Show metrics for a given node +kubectl cluster-info # Display addresses of the master and services +kubectl cluster-info dump # Dump current cluster state to stdout +kubectl cluster-info dump --output-directory=/path/to/cluster-state # Dump current cluster state to /path/to/cluster-state + +# View existing taints on which exist on current nodes. +kubectl get nodes -o='custom-columns=NodeName:.metadata.name,TaintKey:.spec.taints[*].key,TaintValue:.spec.taints[*].value,TaintEffect:.spec.taints[*].effect' + +# If a taint with that key and effect already exists, its value is replaced as specified. +kubectl taint nodes foo dedicated=special-user:NoSchedule +``` + +### Les types de ressources + +Listez tous les types de ressources pris en charge, ainsi que leurs noms abrégés, leurs [API group](https://kubernetes.io/fr/docs/concepts/overview/kubernetes-api/), s'ils sont [namespaced](https://kubernetes.io/fr/docs/concepts/overview/working-with-objects/namespaces/), et leur [kind](https://kubernetes.io/fr/docs/concepts/overview/working-with-objects/): + +```bash +kubectl api-resources +``` + +Autres opérations pour explorer les ressources API: + +```bash +kubectl api-resources --namespaced=true # All namespaced resources +kubectl api-resources --namespaced=false # All non-namespaced resources +kubectl api-resources -o name # All resources with simple output (only the resource name) +kubectl api-resources -o wide # All resources with expanded (aka "wide") output +kubectl api-resources --verbs=list,get # All resources that support the "list" and "get" request verbs +kubectl api-resources --api-group=extensions # All resources in the "extensions" API group +``` + +### Formatage de la sortie + +Pour afficher les détails dans votre terminal avec un format spécifique, ajoutez l'option `-o` (ou `--output`) à une commande kubectl prise en charge. + +Format de sortie | Description +--------------| ----------- +`-o=custom-columns=` | Affiche une table en utilisant une liste de colonnes personnalisées séparées par des virgules +`-o=custom-columns-file=` | Affiche une table en utilisant le modèle de colonnes personnalisées dans le fichier `` +`-o=go-template=