Ця стаття була опублікована більше року тому. Старіші статті можуть містити застарілу інформацію. Перевірте, чи інформація на цій сторінці не втратила актуальності з моменту її публікації.

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
# тут будуть відображатися налаштування користувача

Типові значення

Почнемо з налаштування типових значень для параметрів команд 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"

Псевдоніми

Можливість визначати псевдоніми дозволяє нам заощаджувати дорогоцінні секунди під час введення команд. Я впевнений, що ви, напевно, маєте один визначений для 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. Ви також можете приєднатися до наших зустрічей спільноти, які відбуваються кожну другу середу, і поділитися своїми історіями з нами.