Kubelet Configuration (v1)

Типы ресурсов

CredentialProviderConfig

CredentialProviderConfig є конфігурацією, що містить інформацію про кожного exec credential provider. Kubelet читає цю конфігурацію з диска та активує кожного провайдера відповідно до типу CredentialProvider.

ПолеОпис
apiVersion
string
kubelet.config.k8s.io/v1
kind
string
CredentialProviderConfig
providers [Обовʼязково]
[]CredentialProvider

providers є списком втулків провайдерів облікових даних, які будуть активовані kubelet. Кілька провайдерів можуть відповідати одному образу, в такому випадку облікові дані з усіх провайдерів будуть повернуті kubelet. Якщо кілька провайдерів викликаються для одного образу, результати обʼєднуються. Якщо провайдери повертають ключі авторизації, що збігаються, спочатку буде використано значення від провайдера, що знаходиться раніше у списку.

CredentialProvider

Зʼявляється в:

CredentialProvider представляє exec втулок, який буде викликаний kubelet. Втулок викликається лише тоді, коли образ, що завантажується, відповідає образам, які обробляє втулок (див. matchImages).

ПолеОпис
name [Обовʼязково]
string

name є обовʼязковим імʼям провайдера облікових даних. Назва повинна відповідати імені виконуваного файлу провайдера, яке бачить kubelet. Виконуваний файл повинен бути в директорії bin kubelet (встановленій за допомогою прапорця --image-credential-provider-bin-dir). Має бути унікальним серед всіх провайдерів.

matchImages [Обовʼязково]
[]string

matchImages є обовʼязковим списком рядків, які використовуються для зіставлення з образами, щоб визначити, чи потрібно викликати цього провайдера. Якщо один з рядків відповідає запитаному образу від kubelet, втулок буде викликаний і отримає можливість надати облікові дані. Образи повинні містити домен реєстрації та URL шлях.

Кожен запис у matchImages є шаблоном, який може містити порт і шлях. Глоби можна використовувати в домені, але не в порті чи шляху. Глоби підтримуються як піддомени, наприклад '*.k8s.io' або 'k8s.*.io', та топ-рівневі домени, такі як 'k8s.*'. Підмножки часткових піддоменів, такі як 'app*.k8s.io', також підтримуються. Кожен глоб може відповідати тільки одному сегменту піддомену, тому '*.io' не відповідає '*.k8s.io'.

Зіставлення існує між образом і matchImage, коли всі з нижченаведених умов є істинними:

  • Обидва містять однакову кількість частин домену, і кожна частина має збіг.
  • URL шлях образу має бути префіксом цільового URL шляху образу.
  • Якщо imageMatch містить порт, порт також повинен мати збіг в образі.

Приклади значень matchImages:

  • 123456789.dkr.ecr.us-east-1.amazonaws.com
  • *.azurecr.io
  • gcr.io
  • *.*.registry.io
  • registry.io:8080/path
defaultCacheDuration [Обовʼязково]
meta/v1.Duration

defaultCacheDuration є стандартною тривалістю, впродовж якої втулок кешуватиме облікові дані в памʼяті, якщо тривалість кешу не надана у відповіді втулка. Це поле є обовʼязковим.

apiVersion [Обовʼязково]
string

Обовʼязкова версія вхідного exec CredentialProviderRequest. Повернута CredentialProviderResponse МУСИТЬ використовувати таку ж версію кодування, як і вхідна. Поточні підтримувані значення:

  • credentialprovider.kubelet.k8s.io/v1
args
[]string

Аргументи для передачі команді при її виконанні.

env
[]ExecEnvVar

Env визначає додаткові змінні середовища для передачі процесу. Вони обʼєднуються з середовищем хоста, а також змінними, які client-go використовує для передачі аргументів втулку.

tokenAttributes
ServiceAccountTokenAttributes

tokenAttributes - це конфігурація для токену службового облікового запису, який буде передано втулку. За допомогою цього поля постачальник облікових даних надає згоду на використання токенів облікових записів для витягування образів. Коли це поле встановлено, kubelet згенерує токен службового облікового запису, привʼязаного до podʼа, для якого витягується образ, і передасть його втулку у складі CredentialProviderRequest разом з іншими атрибутами, необхідними для втулка.

Метадані службового облікового запису та атрибути токенів будуть використовуватися як розмірність для кешування облікових даних у kubelet. Ключ кешу генерується шляхом комбінування метаданих службового облікового запису (простір імен, імʼя, UID та ключ анотацій + значення для ключів, визначених у serviceAccountTokenAttribute.requiredServiceAccountAnnotationKeys та serviceAccountTokenAttribute.optionalServiceAccountAnnotationKeys). Метадані podʼа (простір імен, імʼя, UID), які містяться в токені службового облікового запису, не використовуються як розмірність для кешування облікових даних у kubelet. Це означає, що робочі навантаження, які використовують той самий службовий обліковий запис, можуть використовувати ті самі облікові дані для отримання образів. Для втулків, які не бажають такої поведінки, або втулків, які працюють у наскрізному режимі, тобто повертають токен службового облікового запису як є, можна встановити credentialProviderResponse.cacheDuration у 0. Це вимкне кешування облікових даних у kubelet, і втулок буде викликатися під час кожного витягування образу. Це призведе до накладних витрат на генерацію токенів для кожного витягування образу, але це єдиний спосіб гарантувати, що облікові дані не будуть спільно використовуватися різними podʼами (навіть якщо вони використовують один і той самий службовий обліковий запис).

ExecEnvVar

Зʼявляється в:

ExecEnvVar використовується для встановлення змінних середовища при виконанні втулка для облікових даних на основі exec.

ПолеОпис
name [Обовʼязково]
string
Опис не надано.
value [Обовʼязково]
string
Опис не надано.

ServiceAccountTokenAttributes

Зʼявляється в:

ServiceAccountTokenAttributes - це конфігурація токена службового облікового запису, який буде передано втулку.

ПолеОпис
serviceAccountTokenAudience [Обовʼязкове]
string

serviceAccountTokenAudience — цільова аудиторія для спроєктованого токена облікового запису послуги.

cacheType [Обовʼязкове]
ServiceAccountTokenCacheType

cacheType вказує тип ключа кешу, що використовується для кешування облікових даних, повернутих втулком, коли використовується токен службового облікового запису. Найбільш консервативним варіантом є встановлення цього параметра на "Token", що означає, що kubelet буде кешувати повернуті облікові дані на основі кожного токена. Це слід встановити, якщо термін дії повернутого облікового запису обмежений терміном дії токена службового облікового запису. Якщо логіка втулка отримання облікових даних залежить тільки від службового облікового запису, а не від вимог, специфічних для pod, то втулок може встановити це значення на "ServiceAccount". У цьому випадку kubelet буде кешувати повернуті облікові дані на основі кожного службового облікового запису. Використовуйте це, коли повернуті облікові дані дійсні для всіх pod, що використовують той самий службовий обліковий запис.

requireServiceAccount [Обовʼязково]
bool

requireServiceAccount вказує, чи вимагає втулок наявність службового облікового запису. Якщо встановлено у true, kubelet буде викликати втулок лише за наявності службового облікового запису. Якщо встановлено значення false, kubelet буде викликати втулок, навіть якщо він не має службового облікового запису, і не буде включати токен у CredentialProviderRequest у цьому сценарії. Це корисно для втулків, які використовуються для отримання образів для podʼів без службових облікових записів (наприклад, статичних podʼів).

requiredServiceAccountAnnotationKeys
[]string

requiredServiceAccountAnnotationKeys - список ключів анотацій, які цікавлять втулок і які повинні бути присутніми в службовому обліковому записі. Ключі, визначені у цьому списку, буде вилучено з відповідного службового облікового запису та передано втулку як частину запиту CredentialProviderRequest. Якщо будь-який з ключів, визначених у цьому списку, відсутній в службовому обліковому записі, kubelet не викличе втулок і поверне помилку. Це поле є необовʼязковим і може бути порожнім. Втулки можуть використовувати це поле для отримання додаткової інформації, необхідної для отримання облікових даних, або для того, щоб дозволити робочим навантаженням використовувати токени службових облікових записів для витягування образів. Якщо поле не порожнє, requireServiceAccount має мати значення true. Ключі в цьому списку повинні бути унікальними. Цей список повинен бути взаємовиключним з optionalServiceAccountAnnotationKeys.

optionalServiceAccountAnnotationKeys
[]string

optionalServiceAccountAnnotationKeys - список ключів анотацій, які цікавлять втулок і які необовʼязково повинні бути присутніми в службовому обліковому записі. Ключі, визначені у цьому списку, будуть витягнуті з відповідного службового облікового запису і передані втулку як частина запиту CredentialProviderRequest. Втулок відповідає за перевірку існування анотацій та їхніх значень. Це поле є необовʼязковим і може бути порожнім. Втулки можуть використовувати це поле для отримання додаткової інформації, необхідної для отримання облікових даних. Ключі в цьому списку повинні бути унікальними.

ServiceAccountTokenCacheType

(Аліас до string)

Зʼявляється в:

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