Kubernetes v1.34: Налаштування користувача (kuberc) доступні для тестування в kubectl 1.34

Чи хотіли ви будь-коли, щоб ви могли мати стандартно увімкнене інтерактивне видалення у kubectl? Або, можливо, ви хочете визначити власні псевдоніми, але не обовʼязково генерувати сотні з них вручну? Шукайте далі. SIG-CLI наполегливо працює над додаванням налаштувань користувача до kubectl, і ми раді оголосити, що ця функціональність досягає бета-версії в рамках випуску Kubernetes v1.34.

Як це працює

Повний опис цієї функціональності доступний в нашій офіційній документації, але в цьому дописі ми відповімо на обидва питання з початку цієї статті.

Перед тим, як зануритися в деталі, давайте швидко розглянемо, як виглядає файл налаштувань користувача та де його розмістити. Типово kubectl буде шукати файл kuberc у вашій стандартній теці kubeconfig, яка знаходиться за адресою $HOME/.kube. Альтернативно, ви можете вказати це місце за допомогою параметра --kuberc або змінної середовища KUBERC.

Як і кожен маніфест Kubernetes, файл kuberc почнеться з apiVersion та kind:

apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
# тут будуть відображатися налаштування користувача

Defaults

Почнемо з налаштування стандартних значень для параметрів команд kubectl. Наша мета — завжди використовувати інтерактивне видалення, що означає, що ми хочемо, щоб параметр --interactive для kubectl delete завжди був встановлений на true. Це можна досягти, додавши наступний фрагмент до нашого файлу kuberc:

defaults:
- command: delete
  options:
  - name: interactive
    default: "true"

В цьому прикладі ми представляємо секцію defaults, яка дозволяє користувачам визначати стандартні значення для параметрів kubectl. У цьому випадку ми встановлюємо параметр інтерактивності для kubectl delete на true. Це значення можна перевизначити, якщо користувач явно надає інше значення, наприклад, kubectl delete --interactive=false, в цьому випадку явний параметр має пріоритет.

Ще одне дуже рекомендоване типове значення від SIG-CLI — це використання Server-Side Apply. Щоб це зробити, ви можете додати наступний фрагмент до ваших налаштувань:

# продовження розділу defaults
- command: apply
  options:
  - name: server-side
    default: "true"

Aliases

Можливість визначати аліаси дозволяє нам заощаджувати дорогоцінні секунди під час введення команд. Я впевнений, що ви, напевно, маєте один визначений для kubectl, оскільки введення семи літер безумовно займає більше часу, ніж просто натискання k.

З цієї причини можливість визначати аліаси була обовʼязковою, коли ми вирішили реалізувати налаштування користувача, поряд з установкою стандартних значень. Щоб визначити аліас для будь-якої з вбудованих команд, розширте свій файл kuberc наступним:

aliases:
- name: gns
  command: get
  prependArgs:
   - namespace
  options:
   - name: output
     default: json

Там багато чого відбувається, тому давайте розберемо це по черзі. По-перше, ми вводимо новий розділ: aliases. Тут ми визначаємо новий аліас gns, який відображається на команду get. Далі ми визначаємо аргументи (namespace ресурс), які будуть вставлені відразу після назви команди. Крім того, ми встановлюємо опцію --output=json для цього аліаса. Структура блоку options ідентична тій, що в розділі defaults.

Ви, напевно, помітили, що ми представили механізм для попереднього додавання аргументів, і ви можете запитати, чи є відповідне налаштування для їх додавання в кінці (іншими словами, додавання в кінець команди, після аргументів, наданих користувачем). Це можна досягти за допомогою блоку appendArgs, який представлений нижче:

# продовження розділу aliases
- name: runx
  command: run
  options:
    - name: image
      default: busybox
    - name: namespace
      default: test-ns
  appendArgs:
    - --
    - custom-arg

Тут ми вводимо ще один аліас: runx, який викликає команду kubectl run, передаючи параметри --image і --namespace з попередньо визначеними значеннями, а також додаючи -- і custom-arg в кінці виклику.

Відлагодження

Ми сподіваємося, що налаштування користувача kubectl відкриє нові можливості для наших користувачів. Коли у вас виникають сумніви, не соромтеся запускати kubectl з підвищеною докладністю виводу. При -v=5 ви повинні отримати всю можливу інформацію для відлагодження з цієї функції, що буде важливо при повідомленні про проблеми.

Щоб дізнатися більше, я закликаю вас ознайомитися з нашою офіційною документацією та фактичною пропозицією.

Долучайтесь

Функція налаштувань користувача Kubectl досягла бета-версії, і ми дуже зацікавлені у ваших відгуках. Нам хотілося б почути, що вам подобається в ній і які проблеми ви хотіли б вирішити. Не соромтеся приєднуватися до каналу SIG-CLI slack, або відкривати тікети в репозиторії kubectl. Ви також можете приєднатися до наших зустрічей спільноти, які відбуваються кожну другу середу, і поділитися своїми історіями з нами.