PodCertificateRequest v1alpha1
apiVersion: certificates.k8s.io/v1alpha1
import "k8s.io/api/certificates/v1alpha1"
PodCertificateRequest
PodCertificateRequest кодує pod, що запитує сертифікат від певного підписувача.
Kubelets використовують цей API для реалізації cпроєцьованих томів podCertificate.
apiVersion: certificates.k8s.io/v1alpha1
kind: PodCertificateRequest
metadata (ObjectMeta)
metadata містить метадані обʼєкта.
spec (PodCertificateRequestSpec), обовʼязково
spec містить детальну інформацію про сертифікат, який запитується.
status (PodCertificateRequestStatus)
статус містить виданий сертифікат та стандартний набір станів.
PodCertificateRequestSpec
PodCertificateRequestSpec описує запит на сертифікат. Всі поля є незмінними після створення.
nodeName (string), обовʼязково
nodeName — це імʼя вузла, до якого приписано под.
nodeUID (string), обовʼязково
nodeUID — це UID вузла, до якого приписано под.
pkixPublicKey ([]byte), обовʼязково
pkixPublicKey — це серіалізований за PKIX відкритий ключ, якому підписувач видасть сертифікат.
Ключ повинен бути одним із таких: RSA3072, RSA4096, ECDSAP256, ECDSAP384, ECDSAP521 або ED25519. Зверніть увагу, що цей перелік може бути розширений у майбутньому.
Реалізації підписувача не повинні підтримувати всі типи ключів, що підтримуються kube-apiserver та kubelet. Якщо підписувач не підтримує тип ключа, що використовується для даного PodCertificateRequest, він повинен відхилити запит, встановивши запис status.conditions з типом "Denied" та причиною "UnsupportedKeyType". Він також може запропонувати тип ключа, який він підтримує, у полі повідомлення.
podName (string), обовʼязково
podName is the name of the pod into which the certificate will be mounted.
podUID (string), обовʼязково
podUID — це UID пода, в який буде підключено сертифікат.
proofOfPossession ([]byte), обовʼязково
proofOfPossession доводить, що kubelet, який надсилає запит, володіє приватним ключем, що відповідає pkixPublicKey.
Він створюється шляхом підписання байтів ASCII UID pod за допомогою
pkixPublicKey
.kube-apiserver перевіряє доказ володіння під час створення PodCertificateRequest.
Якщо ключ є ключем RSA, то підпис накладається на байти ASCII UID pod, використовуючи RSASSA-PSS з RFC 8017 (як реалізовано функцією golang crypto/rsa.SignPSS з опціями nil).
Якщо ключ є ключем ECDSA, то підпис відповідає опису в SEC 1, версія 2.0 (як реалізовано функцією бібліотеки golang crypto/ecdsa.SignASN1).
Якщо ключ є ключем ED25519, підпис відповідає опису в Специфікації ED25519 (як реалізовано в бібліотеці golang crypto/ed25519.Sign).
serviceAccountName (string), обовʼязково
serviceAccountName — це імʼя службового облікового запису, під яким працює под.
serviceAccountUID (string), обовʼязково
serviceAccountUID — це UID службового облікового запису, під яким працює под.
signerName (string), обовʼязково
signerName вказує на запитаного підписувача.
Всі імена підписувачів, що починаються з
kubernetes.io
, зарезервовані для використання проєктом Kubernetes. Наразі існує один відомий підписувач, задокументований проєктом Kubernetes,kubernetes.io/kube-apiserver-client-pod
, який видаватиме клієнтські сертифікати, зрозумілі kube-apiserver. Наразі він не реалізований.maxExpirationSeconds (int32)
maxExpirationSeconds — максимальний термін дії сертифіката.
Якщо це поле пропущено, kube-apiserver встановить значення 86400 (24 години). kube-apiserver відхилить значення, менші за 3600 (1 година). Максимально допустиме значення — 7862400 (91 день).
Після цього підписант може видавати сертифікати з будь-яким терміном дії, коротшим за MaxExpirationSeconds, але не коротшим за 3600 секунд (1 година). Це обмеження застосовується kube-apiserver. Підписанти
kubernetes.io
ніколи не видають сертифікати з терміном дії, довшим за 24 години.
PodCertificateRequestStatus
PodCertificateRequestStatus описує стан запиту та містить дані сертифіката, якщо запит видано.
beginRefreshAt (Time)
beginRefreshAt — це час, коли kubelet повинен почати спробувати оновити сертифікат. Це поле встановлюється через субресурс /status і повинно бути встановлено одночасно з certificateChain. Після заповнення це поле є незмінним.
Це поле є лише підказкою. Kubelet може почати оновлення до або після цього часу, якщо це необхідно.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
certificateChain (string)
certificateChain заповнюється сертифікатом, виданим підписувачем. Це поле встановлюється за допомогою субресурсу /status. Після заповнення це поле є незмінним.
Якщо запит на підписання сертифіката відхилено, додається умова типу "Denied" (Відхилено), і це поле залишається порожнім. Якщо підписувач не може видати сертифікат, додається умова типу "Failed" (Не вдалося), і це поле залишається порожнім.
Вимоги до перевірки:
- certificateChain повинен складатися з одного або декількох сертифікатів у форматі PEM.
- Кожен запис повинен бути дійсним сертифікатом ASN.1, обгорнутим у PEM та закодованим у DER, як описано в розділі 4 RFC5280.
Якщо присутній більше ніж один блок, і визначення запитуваного spec.signerName не вказує на інше, перший блок є виданим сертифікатом, а наступні блоки повинні розглядатися як проміжні сертифікати і пред'являтися в TLS-рукостисканнях. При проєціюванні ланцюжка в том пода, kubelet видалить будь-які дані між блоками PEM, а також будь-які заголовки блоків PEM.
conditions ([]Condition)
Patch strategy: злиття за ключем
type
Map: унікальні значення за типом ключа будуть збережені під час злиття
conditions, що застосовуються до запиту.
Типи "Issued", "Denied" та "Failed" мають особливий режим обробки. Може бути присутнім не більше однієї з цих умов, і вони повинні мати статус "True".
Якщо запит відхилено з причиною
Reason=UnsupportedKeyType
, підписувач може запропонувати тип ключа, який буде працювати в полі message.Condition містить детальну інформацію про один аспект поточного стану цього ресурсу API.
conditions.lastTransitionTime (Time), обовʼязково
lastTransitionTime — це останній час, коли стан змінився з одного на інший. Це має бути момент, коли змінився базовий стан. Якщо це невідомо, то можна використовувати час, коли змінилося поле API.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string), обовʼязково
message — це повідомлення, яке може прочитати людина, із детальною інформацією про перехід. Це може бути порожній рядок.
conditions.reason (string), обовʼязково
reason містить програмний ідентифікатор, що вказує причину останнього переходу стану. Виробники конкретних типів станів можуть визначати очікувані значення та значення для цього поля, а також те, чи вважаються ці значення гарантованим API. Значення повинно бути рядком CamelCase. Це поле не може бути порожнім.
conditions.status (string), обовʼязково
status стану, один з True, False, Unknown.
conditions.type (string), обовʼязково
type стану в форматі CamelCase або в foo.example.com/CamelCase.
conditions.observedGeneration (int64)
observedGeneration представляє .metadata.generation, на основі якого було встановлено стан. Наприклад, якщо .metadata.generation наразі дорівнює 12, але .status.conditions[x].observedGeneration дорівнює 9, стан є застарілим стосовно поточного стану екземпляра.
notAfter (Time)
notAfter — це час, коли сертифікат втрачає чинність. Значення повинно бути таким самим, як значення notAfter у кінцевому сертифікаті в certificateChain. Це поле встановлюється за допомогою субресурсу /status. Після заповнення воно є незмінним. Підписувач повинен встановити це поле одночасно з certificateChain.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
notBefore (Time)
notBefore — це час, з якого сертифікат стає дійсним. Значення повинно збігатися із значенням notBefore у кінцевому сертифікаті в certificateChain. Це поле встановлюється за допомогою субресурсу /status. Після заповнення воно є незмінним. Підписувач повинен встановити це поле одночасно із встановленням certificateChain.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
PodCertificateRequestList
PodCertificateRequestList iє колекцією обʼєктів PodCertificateRequest
apiVersion: certificates.k8s.io/v1alpha1
kind: PodCertificateRequestList
metadata (ListMeta)
metadata contains the list metadata.
items ([]PodCertificateRequest), обовʼязково
items — це колекція обʼєктів PodCertificateRequest.
Operations
get
отримати статус вказаного PodCertificateRequest
HTTP запит
GET /apis/certificates.k8s.io/v1alpha1/namespaces/{namespace}/podcertificaterequests/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PodCertificateRequest
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (PodCertificateRequest): OK
401: Unauthorized
get
отримати статус вказаного PodCertificateRequest
HTTP запит
GET /apis/certificates.k8s.io/v1alpha1/namespaces/{namespace}/podcertificaterequests/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя PodCertificateRequest
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (PodCertificateRequest): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу PodCertificateRequest
HTTP запит
GET /apis/certificates.k8s.io/v1alpha1/namespaces/{namespace}/podcertificaterequests
Параметри
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 (PodCertificateRequestList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу PodCertificateRequest
HTTP запит
GET /apis/certificates.k8s.io/v1alpha1/podcertificaterequests
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (PodCertificateRequestList): OK
401: Unauthorized
create
створення PodCertificateRequest
HTTP запит
POST /apis/certificates.k8s.io/v1alpha1/namespaces/{namespace}/podcertificaterequests
Параметри
namespace (в шляху): string, обовʼязково
body: PodCertificateRequest, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PodCertificateRequest): OK
201 (PodCertificateRequest): Created
202 (PodCertificateRequest): Accepted
401: Unauthorized
update
заміна вказаного PodCertificateRequest
HTTP запит
PUT /apis/certificates.k8s.io/v1alpha1/namespaces/{namespace}/podcertificaterequests/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PodCertificateRequest
namespace (в шляху): string, обовʼязково
body: PodCertificateRequest, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PodCertificateRequest): OK
201 (PodCertificateRequest): Created
401: Unauthorized
update
заміна статусу вказаного PodCertificateRequest
HTTP запит
PUT /apis/certificates.k8s.io/v1alpha1/namespaces/{namespace}/podcertificaterequests/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя PodCertificateRequest
namespace (в шляху): string, обовʼязково
body: PodCertificateRequest, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PodCertificateRequest): OK
201 (PodCertificateRequest): Created
401: Unauthorized
patch
часткове оновлення вказаного PodCertificateRequest
HTTP запит
PATCH /apis/certificates.k8s.io/v1alpha1/namespaces/{namespace}/podcertificaterequests/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PodCertificateRequest
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PodCertificateRequest): OK
201 (PodCertificateRequest): Created
401: Unauthorized
patch
часткове оновлення статусу вказаного PodCertificateRequest
HTTP запит
PATCH /apis/certificates.k8s.io/v1alpha1/namespaces/{namespace}/podcertificaterequests/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя PodCertificateRequest
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PodCertificateRequest): OK
201 (PodCertificateRequest): Created
401: Unauthorized
delete
видалення PodCertificateRequest
HTTP запит
DELETE /apis/certificates.k8s.io/v1alpha1/namespaces/{namespace}/podcertificaterequests/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PodCertificateRequest
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
ignoreStoreReadErrorWithClusterBreakingPotential (в запиті): boolean
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції PodCertificateRequest
HTTP запит
DELETE /apis/certificates.k8s.io/v1alpha1/namespaces/{namespace}/podcertificaterequests
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
ignoreStoreReadErrorWithClusterBreakingPotential (в запиті): boolean
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
Цю сторінку було стоврено автоматично.
Якщо у вас є наміри надіслати пропозиції щодо неї, додайте згадку, про те що сторінку створено автоматично в описі вашого повідомлення. Зміни мають відбутись всюди в проєкті Kubernetes.