Использование Canonical Kubernetes, установленного из Snap без sudo

Вопрос или проблема

Я установил Canonical Kubernetes из Snap с помощью:

$ sudo snap install k8s --classic

И я могу использовать его так:

$ sudo k8s kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
nginx-5869d7778c-r87sf   1/1     Running   0          14h

Как я могу использовать его без sudo и команды k8s, например:

$ kubectl get pods
Command 'kubectl' not found, did you mean:
  command 'kubectx' from deb kubectx (0.9.5-1ubuntu0.2)
Try: sudo apt install <deb name>

Также я хотел бы подход, который может поддерживать автодополнение bash.


Я думал об использовании переменной окружения KUBECONFIG, но похоже, что kubectl неизвестен моей командной строке, и я также не знаю правильный путь для KUBECONFIG.

Кроме того, я думал добавить своего пользователя в группу, как это можно сделать с microk8s, но не было группы k8s.

Похоже, вы можете определить псевдоним для команды k8s kubectl, как это:

alias kubectl="k8s kubectl"

Я не уверен, как sudo играет здесь роль, но если он нужен, его можно добавить в псевдоним:

alias kubectl="sudo k8s kubectl"

Хорошее место для размещения определений псевдонимов – это ~/.bash_aliases.

Псевдонимы обычно хорошо подходят для некоплексных и нескриптовых команд, которые предназначены для запуска из CLI для получения результата.

Также посмотрите здесь.

Чтобы псевдонимы работали с автодополнением, посмотрите здесь.

Ответ или решение

Чтобы использовать Canonical Kubernetes, установленный через Snap, без применения sudo и без использования команды k8s, важно сначала понять, как Snap управляет приложениями и какие права необходимы для управления Kubernetes.

Теория

Snap — это пакетный менеджер, который обеспечивает упрощенную установку и обновление приложений на системах Linux. Когда вы устанавливаете приложение через Snap, оно, как правило, запускается в контейнеризированной среде с ограниченным доступом, что может требовать использования sudo для выполнения некоторых команд.

Для работы с Kubernetes без sudo, вам нужно убедиться, что ваше окружение настроено так, чтобы предоставлять необходимые привилегии:

  1. Права доступа: Убедитесь, что у вас есть необходимые права для выполнения команд Kubernetes. Это обычно включает доступ к конфигурационному файлу kubeconfig, который определяет как ваша утилита kubectl взаимодействует с кластером.

  2. Установление пути для kubectl: Убедитесь, что бинарные файлы kubectl доступны в вашем пути без необходимости указывать k8s. Это может требовать создания символической ссылки или изменения конфигурации пути.

  3. Автодополнение: Для комфортной работы и повышения продуктивности рекомендуется настроить автодополнение для команд kubectl.

Пример

  1. Конфигурация PATH:

    • Чтобы сделать kubectl доступным без k8s, вам может потребоваться создать символическую ссылку в одном из каталогов, указанных в переменной окружения PATH:
      sudo ln -s /snap/bin/k8s /usr/local/bin/kubectl

      Это создаст символическую ссылку kubectl, которая будет обращаться к /snap/bin/k8s, предоставляя возможность использовать команду напрямую.

  2. Использование переменной KUBECONFIG:

    • Посмотрите, где к Snap-снапу сохраняется файл kubeconfig. Обычно это может быть расположено в домашнем каталоге пользователя или специальной директории Snap:
      export KUBECONFIG=~/snap/k8s/current/.kube/config

      Установив переменную KUBECONFIG, вы указываете kubectl, где искать файл конфигурации, даже если вы перемещаете его в другое место.

  3. Настройка автодополнения:

    • Для активизации автодополнения для kubectl, добавьте следующее в ваш ~/.bashrc или ~/.bash_profile:
      source <(kubectl completion bash)
    • Если вы хотите использовать автодополнение с алиасами, добавьте следующий код:
      alias k=kubectl
      complete -F __start_kubectl k

Применение

В практическом применении, когда вы настроили алиасы и автодополнение, вы сможете использовать kubectl напрямую без необходимости использования sudo каждый раз. Это значительно упростит работу с Kubernetes и повысит вашу продуктивность.

Вот полный пример того, как могут выглядеть ваши алиасы и автодополнения в ~/.bashrc:

# Алиас для kubectl, если используется snapped версия
alias kubectl='k8s kubectl'

# Автодополнение для kubectl
source <(kubectl completion bash)

# Автодополнение для алиаса k
complete -F __start_kubectl kubectl

Эти изменения позволят вам не только запускать команды Kubernetes без sudo, но и легко дополнить их до нужного формата с помощью клавиши Tab.

Это все сделает вашу работу с Kubernetes через Snap более управляемой и быстрой без необходимости постоянно использовать привилегии суперпользователя, минимизируя риск случайного внесения критических изменений в кластер. Тщательная настройка этих инструментов позволит вам сосредоточиться на разработке и поддержке вашего кластера, не отвлекаясь на тонкости управления доступом.

Оцените материал
Добавить комментарий

Капча загружается...