Це багатосторінковий друкований вигляд цього розділу. Натисність щоб друкувати.
Ресурси автентифікації
1 - ServiceAccount
ServiceAccount повʼязує разом:
- імʼя, зрозуміле користувачам і, можливо, периферійним системам, для ідентифікації;
- головну діючу особу, яка може бути автентифікована і авторизована;
- набір секретів.
apiVersion: v1
import "k8s.io/api/core/v1"
ServiceAccount
ServiceAccount повʼязує разом
- імʼя, зрозуміле користувачам і, можливо, периферійним системам, для ідентифікації;
- головну діючу особу, яка може бути автентифікована і авторизована;
- набір секретів.
apiVersion: v1
kind: ServiceAccount
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
automountServiceAccountToken (boolean)
automountServiceAccountToken вказує, чи повинні Podʼи, які працюють від імені цього службового облікового запису, автоматично мати змонтований API токен. Може бути перевизначено на рівні Podʼа.
imagePullSecrets ([]LocalObjectReference)
Atomic: буде замінено під час злиття
imagePullSecrets — це список посилань на Sercretʼи в тому ж просторі імен для використання при завантаженні будь-яких образів у Podʼах, які використовують цей службовий обліковий запис. ImagePullSecrets відрізняються від Secrets тим, що Secrets можуть бути змонтовані в Pod, а ImagePullSecrets доступні лише для kubelet. Докладніше: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
secrets ([]ObjectReference)
Patch strategy: обʼєднання за ключем
name
Map: унікальні значення ключа name будуть збережені під час злиття
secrets — це список секретів у тому ж просторі імен, які Podʼи, що використовують цей службовий обліковий запис, можуть використовувати. Podʼи обмежуються цим списком лише у випадку, якщо цей службовий обліковий запис має анотацію "kubernetes.io/enforce-mountable-secrets" зі значенням "true". Це поле не слід використовувати для пошуку автоматично створених секретів токенів службових облікових записів для використання поза межами Podʼів. Натомість токени можна запитувати безпосередньо за допомогою API TokenRequest або секрети токенів службових облікових записів можна створювати вручну. Докладніше: https://kubernetes.io/docs/concepts/configuration/secret
ServiceAccountList
ServiceAccountList — це список обʼєктів ServiceAccount.
apiVersion: v1
kind: ServiceAccountList
metadata (ListMeta)
Стандартні метадані списку. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items ([]ServiceAccount), обовʼязково
Список обʼєктів ServiceAccount. Докладніше: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
Операції
get
отримати вказаний ServiceAccount
HTTP запит
GET /api/v1/namespaces/{namespace}/serviceaccounts/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ServiceAccount
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (ServiceAccount): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ServiceAccount
HTTP запит
GET /api/v1/namespaces/{namespace}/serviceaccounts
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ServiceAccountList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ServiceAccount
HTTP запит
GET /api/v1/serviceaccounts
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ServiceAccountList): OK
401: Unauthorized
create
створення ServiceAccount
HTTP запит
POST /api/v1/namespaces/{namespace}/serviceaccounts
Параметри
namespace (в шляху): string, обовʼязково
body: ServiceAccount, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ServiceAccount): OK
201 (ServiceAccount): Created
202 (ServiceAccount): Accepted
401: Unauthorized
update
заміна вказаного ServiceAccount
HTTP запит
PUT /api/v1/namespaces/{namespace}/serviceaccounts/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ServiceAccount
namespace (в шляху): string, обовʼязково
body: ServiceAccount, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ServiceAccount): OK
201 (ServiceAccount): Created
401: Unauthorized
patch
часткове оновлення вказаного ServiceAccount
HTTP запит
PATCH /api/v1/namespaces/{namespace}/serviceaccounts/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ServiceAccount
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ServiceAccount): OK
201 (ServiceAccount): Created
401: Unauthorized
delete
видалення ServiceAccount
HTTP запит
DELETE /api/v1/namespaces/{namespace}/serviceaccounts/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ServiceAccount
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (ServiceAccount): OK
202 (ServiceAccount): Accepted
401: Unauthorized
deletecollection
видалення колекції ServiceAccount
HTTP запит
DELETE /api/v1/namespaces/{namespace}/serviceaccounts
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
2 - TokenRequest
apiVersion: authentication.k8s.io/v1
import "k8s.io/api/authentication/v1"
TokenRequest
TokenRequest запитує токен для вказаного службового облікового запису.
apiVersion: authentication.k8s.io/v1
kind: TokenRequest
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (TokenRequestSpec), обовʼязково
Spec містить інформацію про запит, що оцінюється.
status (TokenRequestStatus)
Status заповнюється сервером і вказує, чи може токен бути автентифікований.
TokenRequestSpec
TokenRequestSpec містить параметри запиту токена, надані клієнтом.
audiences ([]string), обовʼязково
Atomic: буде замінено під час злиття
Audiences — це цільові аудиторії токена. Отримувач токена повинен ідентифікувати себе за допомогою ідентифікатора зі списку аудиторій токена, інакше він повинен відхилити токен. Токен, виданий для кількох аудиторій, може бути використаний для автентифікації з будь-якою з вказаних аудиторій, що передбачає високий ступінь довіри між цільовими аудиторіями.
boundObjectRef (BoundObjectReference)
BoundObjectRef — це посилання на обʼєкт, до якого буде привʼязано токен. Токен буде дійсний лише до тих пір, поки існує привʼязаний обʼєкт. ПРИМІТКА: Точка доступу TokenReview сервера API перевірить BoundObjectRef, але інші аудиторії можуть цього не робити. Тримайте ExpirationSeconds маленьким, якщо ви хочете швидке відкликання.
BoundObjectReference — це посилання на обʼєкт, до якого привʼязано токен.
boundObjectRef.apiVersion (string)
Версія API посилання.
boundObjectRef.kind (string)
Тип посилання. Дійсними типами є 'Pod' та 'Secret'.
boundObjectRef.name (string)
Імʼя посилання.
boundObjectRef.uid (string)
UID посилання.
expirationSeconds (int64)
ExpirationSeconds — це запитувана тривалість дії запиту. Видавець токенів може повернути токен з іншою тривалістю дії, тому клієнт повинен перевірити поле 'expiration' у відповіді.
TokenRequestStatus
TokenRequestStatus — це результат запиту на отримання токена.
expirationTimestamp (Time), обовʼязково
ExpirationTimestamp — це час закінчення дії виданого токена.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
token (string), обовʼязково
Token — це непрозорий токен на предʼявника.
Операції
create
створення токена ServiceAccount
HTTP запит
POST /api/v1/namespaces/{namespace}/serviceaccounts/{name}/token
Параметри
name (в шляху): string, обовʼязково
name of the TokenRequest
namespace (в шляху): string, обовʼязково
body: TokenRequest, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповіді
200 (TokenRequest): OK
201 (TokenRequest): Created
202 (TokenRequest): Accepted
401: Unauthorized
3 - TokenReview
apiVersion: authentication.k8s.io/v1
import "k8s.io/api/authentication/v1"
TokenReview
TokenReview намагається автентифікувати токен вже відомому користувачу. Примітка: запити TokenReview можуть кешуватися dnekrjv автентифікації вебхука в kube-apiserver.
apiVersion: authentication.k8s.io/v1
kind: TokenReview
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (TokenReviewSpec), обовʼязково
Spec містить інформацію про запит, що оцінюється
status (TokenReviewStatus)
Status заповнюється сервером і вказує, чи можна автентифікувати запит.
TokenReviewSpec
TokenReviewSpec є описом запиту автентифікації токена.
audiences ([]string)
Atomic: буде замінено під час злиття
Audiences — це список ідентифікаторів, які сервер ресурсів, представлений токеном, розпізнає як. Автентифікатори токенів, що володіють інформацією про аудиторію, перевірять, що токен був призначений принаймні для однієї з аудиторій у цьому списку. Якщо аудиторії не надані, типово використовується аудиторія Kubernetes apiserver.
token (string)
Token — це непрозорий токен на предʼявника.
TokenReviewStatus
TokenReviewStatus — це результат запиту автентифікації токена.
audiences ([]string)
Atomic: буде замінено під час злиття
Audiences — це ідентифікатори аудиторії, обрані автентифікатором, які сумісні як з TokenReview, так і з токеном. Ідентифікатор є будь-яким ідентифікатором у перетині аудиторій TokenReviewSpec та аудиторій токена. Клієнт TokenReview API, який встановлює поле spec.audiences, повинен перевірити, що сумісний ідентифікатор аудиторії повертається в полі status.audiences, щоб переконатися, що сервер TokenReview враховує аудиторію. Якщо TokenReview повертає порожнє поле status.audience, де status.authenticated є "true", токен дійсний для аудиторії Kubernetes API server.
authenticated (boolean)
Authenticated вказує, що токен був повʼязаний з відомим користувачем.
error (string)
Error вказує, що токен не вдалося перевірити
user (UserInfo)
User — це UserInfo, повʼязаний із наданим токеном.
UserInfo містить інформацію про користувача, необхідну для реалізації інтерфейсу user.Info.
user.extra (map[string][]string)
Будь-яка додаткова інформація, надана автентифікатором.
user.groups ([]string)
Atomic: буде замінено під час злиття
Назви груп, до яких належить цей користувач.
user.uid (string)
Унікальне значення, яке ідентифікує цього користувача з плином часу. Якщо цього користувача видаляють і додають іншого користувача з тим же імʼям, вони матимуть різні UID.
user.username (string)
Імʼя, яке унікально ідентифікує цього користувача серед усіх активних користувачів.
Операції
create
створення TokenReview
HTTP запит
POST /apis/authentication.k8s.io/v1/tokenreviews
Параметри запиту
body: TokenReview, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (TokenReview): OK
201 (TokenReview): Created
202 (TokenReview): Accepted
401: Unauthorized
4 - CertificateSigningRequest
apiVersion: certificates.k8s.io/v1
import "k8s.io/api/certificates/v1"
CertificateSigningRequest
Обʼєкти CertificateSigningRequest надають механізм для отримання сертифікатів x509 шляхом подання запиту на підписання сертифіката та його асинхронного схвалення і видачі.
Kubelets використовують цей API для отримання:
- клієнтських сертифікатів для автентифікації до kube-apiserver (з використанням signerName "kubernetes.io/kube-apiserver-client-kubelet").
- серверних сертифікатів для TLS-точок доступу, до яких kube-apiserver може підключатися безпечно (з використанням signerName "kubernetes.io/kubelet-serving").
Цей API може бути використаний для запиту клієнтських сертифікатів для автентифікації до kube-apiserver (з використанням signerName "kubernetes.io/kube-apiserver-client") або для отримання сертифікатів від нестандартних підписувачів, що не належать до Kubernetes.
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata (ObjectMeta)
spec (CertificateSigningRequestSpec), обовʼязково
spec містить запит на сертифікат і є незмінним після створення. Тільки поля request, signerName, expirationSeconds та usages можуть бути встановлені під час створення. Інші поля визначаються Kubernetes і не можуть бути змінені користувачами.
status (CertificateSigningRequestStatus)
status містить інформацію про те, чи запит схвалено або відхилено, а також сертифікат, виданий підписувачем, або умови збою, які вказують на збій підписувача.
CertificateSigningRequestSpec
CertificateSigningRequestSpec містить запит на сертифікат.
request ([]byte), обовʼязково
Atomic: буде замінено під час злиття
request містить x509 запит на підписання сертифіката, закодований у блоці PEM "CERTIFICATE REQUEST". При серіалізації у форматі JSON або YAML дані додатково кодуються в base64.
signerName (string), обовʼязково
signerName вказує на запитуваного підписувача і є кваліфікованим імʼям.
Запити List/watch для CertificateSigningRequests можуть фільтруватися за цим полем з використанням fieldSelector "spec.signerName=NAME".
Добре відомі підписувачі Kubernetes:
- "kubernetes.io/kube-apiserver-client": видає клієнтські сертифікати, які можна використовувати для автентифікації до kube-apiserver. Запити для цього підписувача ніколи не затверджуються автоматично kube-controller-manager, можуть бути видані контролером "csrsigning" у kube-controller-manager.
- "kubernetes.io/kube-apiserver-client-kubelet": видає клієнтські сертифікати, які kubelets використовують для автентифікації до kube-apiserver. Запити для цього підписувача можуть бути автоматично затверджені контролером "csrapproving" у kube-controller-manager і можуть бути видані контролером "csrsigning" у kube-controller-manager.
- "kubernetes.io/kubelet-serving": видає серверні сертифікати, які kubelets використовують для обслуговування TLS-точок доступу, до яких kube-apiserver може підключатися безпечно. Запити для цього підписувача ніколи не затверджуються автоматично kube-controller-manager і можуть бути видані контролером "csrsigning" у kube-controller-manager.
Докладніше: https://k8s.io/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers
Можуть також бути вказані нестандартні signerNames. Підписувач визначає:
- Розповсюдження довіри: як розповсюджуються довірчі пакети (CA bundles).
- Дозволені субʼєкти: та поведінка, коли запитується недозволений субʼєкт.
- Обовʼязкові, дозволені або заборонені розширення x509 у запиті (включаючи те, чи дозволені subjectAltNames, які типи, обмеження на дозволені значення) та поведінка при запиті недозволеного розширення.
- Обовʼязкові, дозволені або заборонені ключові використання / розширені ключові використання.
- Термін дії сертифіката: чи він фіксований підписувачем, налаштовується адміністратором.
- Чи дозволені запити на сертифікати CA.
expirationSeconds (int32)
expirationSeconds — це запитувана тривалість дії виданого сертифіката. Підписувач сертифіката може видати сертифікат з іншою тривалістю дії, тому клієнт повинен перевірити різницю між полями notBefore і notAfter у виданому сертифікаті, щоб визначити фактичну тривалість.
Реалізації v1.22+ вбудованих підписувачів Kubernetes дотримуватимуться цього поля, якщо запитувана тривалість не перевищує максимальну тривалість, яку вони дозволяють відповідно до прапорця CLI
--cluster-signing-duration
для контролера Kubernetes.Підписувачі сертифікатів можуть не дотримуватися цього поля з різних причин:
- Старий підписувач, який не знає про це поле (наприклад, вбудовані реалізації до v1.22)
- Підписувач, чия налаштована максимальна тривалість коротша за запитувану тривалість
- Підписувач, чия налаштована мінімальна тривалість довша за запитувану тривалість
Мінімальне дійсне значення для expirationSeconds — 600, тобто 10 хвилин.
extra (map[string][]string)
extra містить додаткові атрибути користувача, який створив CertificateSigningRequest. Заповнюється API-сервером при створенні та є незмінним.
groups ([]string)
Atomic: буде замінено під час злиття
groups містить членство в групах користувача, який створив CertificateSigningRequest. Заповнюється API-сервером при створенні та є незмінним.
uid (string)
uid містить uid користувача, який створив CertificateSigningRequest. Заповнюється API-сервером при створенні та є незмінним.
usages ([]string)
Atomic: буде замінено під час злиття
usages вказує набір запитуваних використань ключів у виданому сертифікаті.
Запити на TLS клієнтські сертифікати зазвичай запитують: "digital signature", "key encipherment", "client auth".
Запити на TLS серверні сертифікати зазвичай запитують: "key encipherment", "digital signature", "server auth".
Дійсні значення: "signing", "digital signature", "content commitment", "key encipherment", "key agreement", "data encipherment", "cert sign", "crl sign", "encipher only", "decipher only", "any", "server auth", "client auth", "code signing", "email protection", "s/mime", "ipsec end system", "ipsec tunnel", "ipsec user", "timestamping", "ocsp signing", "microsoft sgc", "netscape sgc"
username (string)
username містить імʼя користувача, який створив CertificateSigningRequest. Заповнюється API-сервером при створенні та є незмінним.
CertificateSigningRequestStatus
CertificateSigningRequestStatus містить умови, що використовуються для позначення статусу запиту (схвалено/відхилено/не вдалося), та виданий сертифікат.
certificate ([]byte)
Atomic: буде замінено під час злиття
certificate заповнюється виданим сертифікатом підписувача після наявності умови "Approved". Це поле встановлюється через субресурс /status. Після заповнення це поле є незмінним.
Якщо запит на підписання сертифіката відхилено, додається умова типу "Denied", і це поле залишається порожнім. Якщо підписувач не може видати сертифікат, додається умова типу "Failed", і це поле залишається порожнім.
Вимоги до валідації:
- certificate повинно містити один або більше PEM блоків.
- Усі PEM блоки повинні мати мітку "CERTIFICATE", не містити заголовків, а закодовані дані повинні бути структурою сертифіката BER-кодованого ASN.1, як описано в розділі 4 RFC5280.
- Не-PEM вміст може зʼявлятися до або після блоків PEM "CERTIFICATE" і не перевіряється, щоб дозволити пояснювальний текст, як описано в розділі 5.2 RFC7468.
Якщо в наявності більше одного блоку PEM, і визначення запитуваного spec.signerName не вказує інше, перший блок є виданим сертифікатом, а наступні блоки слід розглядати як проміжні сертифікати та представлятись під час TLS-handshake.
Сертифікат закодований у форматі PEM.
При серіалізації у форматі JSON або YAML дані додатково кодуються в base64, тому вони складаються з:
base64( -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- )
conditions ([]CertificateSigningRequestCondition)
Map: унікальні значення за ключем типу зберігатимуться під час злиття
conditions, застосовані до запиту. Відомі стани: "Approved", "Denied" та "Failed".
CertificateSigningRequestCondition описує стан обʼєкта CertificateSigningRequest
conditions.status (string), обовʼязково
статус стану, одне з True, False, Unknown. Стани "Approved", "Denied" та "Failed" не можуть бути "False" або "Unknown".
conditions.type (string), обовʼязково
тип стану. Відомі стани: "Approved", "Denied" та "Failed".
Стан "Approved" додається через субресурс /approval, що вказує на те, що запит було схвалено і сертифікат повинен бути виданий підписувачем.
Стан "Denied" додається через субресурс /approval, що вказує на те, що запит було відхилено і сертифікат не повинен бути виданий підписувачем.
Стан "Failed" додається через субресурс /status, що вказує на те, що підписувачу не вдалося видати сертифікат.
Стан "Approved" та "Denied" є взаємозаперечними. Стани "Approved", "Denied" та "Failed" не можуть бути видалені після додавання.
Дозволено лише один стан певного типу.
conditions.lastTransitionTime (Time)
lastTransitionTime - це час останньої зміни стану з одного статусу до іншого. Якщо не встановлено, коли додається новий тип стану або змінюється статус поточного стану, сервер стандартно встановлює цей час на поточний.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.lastUpdateTime (Time)
lastUpdateTime — це час останнього оновлення цього стану.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
message містить зрозуміле для людини повідомлення з деталями про стан запиту.
conditions.reason (string)
reason вказує коротку причину стану запиту.
CertificateSigningRequestList
CertificateSigningRequestList — це колекція обʼєктів CertificateSigningRequest.
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequestList
metadata (ListMeta)
items ([]CertificateSigningRequest), обовʼязково
items — це колекція обʼєктів CertificateSigningRequest.
Операції
get
отримати вказаний CertificateSigningRequest
HTTP запит
GET /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}
Параметри
name (в шляху): string, обовʼязково
name of the CertificateSigningRequest
pretty (в запиті): string
Відповідь
200 (CertificateSigningRequest): OK
401: Unauthorized
get
отримати схвалення вказаного CertificateSigningRequest
HTTP запит
GET /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/approval
Параметри
name (в шляху): string, обовʼязково
name of the CertificateSigningRequest
pretty (в запиті): string
Відповідь
200 (CertificateSigningRequest): OK
401: Unauthorized
get
отримати статус вказаного CertificateSigningRequest
HTTP запит
GET /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/status
Параметри
name (в шляху): string, обовʼязково
name of the CertificateSigningRequest
pretty (в запиті): string
Відповідь
200 (CertificateSigningRequest): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу CertificateSigningRequest
HTTP запит
GET /apis/certificates.k8s.io/v1/certificatesigningrequests
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (CertificateSigningRequestList): OK
401: Unauthorized
create
створення CertificateSigningRequest
HTTP запит
POST /apis/certificates.k8s.io/v1/certificatesigningrequests
Параметри
body: CertificateSigningRequest, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (CertificateSigningRequest): OK
201 (CertificateSigningRequest): Created
202 (CertificateSigningRequest): Accepted
401: Unauthorized
update
заміна вказаного CertificateSigningRequest
HTTP запит
PUT /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}
Параметри
name (в шляху): string, обовʼязково
name of the CertificateSigningRequest
body: CertificateSigningRequest, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (CertificateSigningRequest): OK
201 (CertificateSigningRequest): Created
401: Unauthorized
update
заміна підтвердження вказаного CertificateSigningRequest
HTTP запит
PUT /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/approval
Параметри
name (в шляху): string, обовʼязково
name of the CertificateSigningRequest
body: CertificateSigningRequest, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (CertificateSigningRequest): OK
201 (CertificateSigningRequest): Created
401: Unauthorized
update
заміна статусу вказаного CertificateSigningRequest
HTTP запит
PUT /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/status
Параметри
name (в шляху): string, обовʼязково
name of the CertificateSigningRequest
body: CertificateSigningRequest, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (CertificateSigningRequest): OK
201 (CertificateSigningRequest): Created
401: Unauthorized
patch
часткове оновлення вказаного CertificateSigningRequest
HTTP запит
PATCH /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}
Параметри
name (в шляху): string, обовʼязково
name of the CertificateSigningRequest
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (CertificateSigningRequest): OK
201 (CertificateSigningRequest): Created
401: Unauthorized
patch
часткове оновлення затвердження вказаного CertificateSigningRequest
HTTP запит
PATCH /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/approval
Параметри
name (в шляху): string, обовʼязково
name of the CertificateSigningRequest
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (CertificateSigningRequest): OK
201 (CertificateSigningRequest): Created
401: Unauthorized
patch
часткове оновлення статусу вказаного CertificateSigningRequest
HTTP запит
PATCH /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/status
Параметри
name (в шляху): string, обовʼязково
name of the CertificateSigningRequest
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (CertificateSigningRequest): OK
201 (CertificateSigningRequest): Created
401: Unauthorized
delete
видалення CertificateSigningRequest
HTTP запит
DELETE /apis/certificates.k8s.io/v1/certificatesigningrequests/{name}
Параметри
name (в шляху): string, обовʼязково
name of the CertificateSigningRequest
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції CertificateSigningRequest
HTTP запит
DELETE /apis/certificates.k8s.io/v1/certificatesigningrequests
Параметри
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
5 - ClusterTrustBundle v1alpha1
apiVersion: certificates.k8s.io/v1alpha1
import "k8s.io/api/certificates/v1alpha1"
ClusterTrustBundle
ClusterTrustBundle — це кластерний контейнер для довірчих якорів X.509 (кореневих сертифікатів).
Обʼєкти ClusterTrustBundle вважаються доступними для читання будь-яким автентифікованим користувачем у кластері, оскільки їх можна монтувати в Pod за допомогою проєкції clusterTrustBundle
. Усі службові облікові записи типово мають доступ на читання ClusterTrustBundles. Користувачі, які мають доступ лише на рівні простору імен у кластері, можуть читати ClusterTrustBundles, використовуючи serviceaccount, до якого вони мають доступ.
Він може бути опціонально повʼязаний з певним підписувачем, у такому випадку він містить один дійсний набір довірчих якорів для цього підписувача. Підписувачі можуть мати кілька повʼязаних ClusterTrustBundles; кожен з них є незалежним набором довірчих якорів для цього підписувача. Контроль доступу використовується для забезпечення того, що лише користувачі з правами підписувача можуть створювати або змінювати відповідний набір.
apiVersion: certificates.k8s.io/v1alpha1
kind: ClusterTrustBundle
metadata (ObjectMeta)
metadata містить метадані обʼєкта.
spec (ClusterTrustBundleSpec), обовʼязково
spec містить підписувача (якщо є) та довірчі якорі.
ClusterTrustBundleSpec
ClusterTrustBundleSpec містить інформацію про підписувача та довірчі якорі.
trustBundle (string), обовʼязково
trustBundle містить окремі довірчі якорі X.509 для цього набору, у вигляді PEM-пакета PEM-обгорток, DER-форматованих сертифікатів X.509.
Дані повинні складатися лише з PEM-блоків сертифікатів, які розпізнаються як дійсні сертифікати X.509. Кожен сертифікат повинен містити розширення базових обмежень з встановленою позначкою CA. Сервер API відхилить обʼєкти, що містять дублюючі сертифікати або використовують заголовки блоків PEM.
Користувачі ClusterTrustBundle, включаючи Kubelet, вільні переупорядковувати та видаляти дублікати блоків сертифікатів у цьому файлі за власною логікою, а також видаляти заголовки блоків PEM та міжблокові дані.
signerName (string)
signerName вказує повʼязаного підписувача, якщо такий є.
Щоб створити або оновити ClusterTrustBundle з встановленим signerName, вам потрібно мати наступні дозволи на рівні кластера: group=certificates.k8s.io resource=signers resourceName=<імʼя підписувача> verb=attest.
Якщо signerName не порожній, тоді обʼєкт ClusterTrustBundle повинен мати імʼя, що починається з імені підписувача як префікс (перекладаючи косі на двокрапки). Наприклад, для імені підписувача
example.com/foo
, допустимі імена обʼєктів ClusterTrustBundle включаютьexample.com:foo:abc
таexample.com:foo:v1
.Якщо signerName порожній, тоді імʼя обʼєкта ClusterTrustBundle не повинно мати такого префікса.
Запити на список/перегляд ClusterTrustBundle можуть фільтрувати за цим полем, використовуючи селектор поля
spec.signerName=NAME
.
ClusterTrustBundleList
ClusterTrustBundleList — це колекція обʼєктів ClusterTrustBundle.
apiVersion: certificates.k8s.io/v1alpha1
kind: ClusterTrustBundleList
metadata (ListMeta)
metadata містить метадані списку.
items ([]ClusterTrustBundle), обовʼязково
items — це колекція обʼєктів ClusterTrustBundle.
Операції
get
отримати вказаний ClusterTrustBundle
HTTP запит
GET /apis/certificates.k8s.io/v1alpha1/clustertrustbundles/{name}
Параметри
name (в шляху): string, обовʼязково
name of the ClusterTrustBundle
pretty (в запиті): string
Відповідь
200 (ClusterTrustBundle): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ClusterTrustBundle
HTTP запит
GET /apis/certificates.k8s.io/v1alpha1/clustertrustbundles
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ClusterTrustBundleList): OK
401: Unauthorized
create
створення ClusterTrustBundle
HTTP запит
POST /apis/certificates.k8s.io/v1alpha1/clustertrustbundles
Параметри
body: ClusterTrustBundle, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ClusterTrustBundle): OK
201 (ClusterTrustBundle): Created
202 (ClusterTrustBundle): Accepted
401: Unauthorized
update
заміна вказаного ClusterTrustBundle
HTTP запит
PUT /apis/certificates.k8s.io/v1alpha1/clustertrustbundles/{name}
Параметри
name (в шляху): string, обовʼязково
name of the ClusterTrustBundle
body: ClusterTrustBundle, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ClusterTrustBundle): OK
201 (ClusterTrustBundle): Created
401: Unauthorized
patch
часткове оновлення вказаного ClusterTrustBundle
HTTP запит
PATCH /apis/certificates.k8s.io/v1alpha1/clustertrustbundles/{name}
Параметри
name (в шляху): string, обовʼязково
name of the ClusterTrustBundle
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ClusterTrustBundle): OK
201 (ClusterTrustBundle): Created
401: Unauthorized
delete
видалення ClusterTrustBundle
HTTP запит
DELETE /apis/certificates.k8s.io/v1alpha1/clustertrustbundles/{name}
Параметри
name (в шляху): string, обовʼязково
name of the ClusterTrustBundle
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції ClusterTrustBundle
HTTP запит
DELETE /apis/certificates.k8s.io/v1alpha1/clustertrustbundles
Параметри
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
6 - SelfSubjectReview
apiVersion: authentication.k8s.io/v1
import "k8s.io/api/authentication/v1"
SelfSubjectReview
SelfSubjectReview містить інформацію про користувача, яку має kube-apiserver про користувача, що робить цей запит. При використанні імперсоніфікації, користувачі отримають інформацію про користувача, якого вони імітують. Якщо використовується імперсоніфікація або автентифікація заголовка запиту, будь-які додаткові ключі будуть ігноруватися і повертатися у нижньому регістрі.
apiVersion: authentication.k8s.io/v1
kind: SelfSubjectReview
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
status (SelfSubjectReviewStatus)
Статус заповнюється сервером атрибутами користувача.
SelfSubjectReviewStatus
SelfSubjectReviewStatus заповнюється kube-apiserver і відсилається користувачу.
userInfo (UserInfo)
Атрибути користувача, який робить цей запит.
UserInfo містить інформацію про користувача, необхідну для реалізації інтерфейсу user.Info.
userInfo.extra (map[string][]string)
Будь-яка додаткова інформація, надана автентифікатором.
userInfo.groups ([]string)
Atomic: буде замінено під час злиття
Назви груп, до яких належить цей користувач.
userInfo.uid (string)
Унікальне значення, що ідентифікує цього користувача з плином часу. Якщо цей користувач буде видалений і інший користувач з таким самим іменем буде доданий, вони матимуть різні UID.
userInfo.username (string)
Імʼя, яке унікально ідентифікує цього користувача серед усіх активних користувачів.
Операції
create
створення SelfSubjectReview
HTTP запит
POST /apis/authentication.k8s.io/v1/selfsubjectreviews
Параметри
body: SelfSubjectReview, обовʼязково
dryRun (в запиті): string ---dryRun
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (SelfSubjectReview): OK
201 (SelfSubjectReview): Created
202 (SelfSubjectReview): Accepted
401: Unauthorized