PodCertificateRequest v1beta1

PodCertificateRequest кодує pod, що запитує сертифікат від певного підписувача.

apiVersion: certificates.k8s.io/v1beta1

import "k8s.io/api/certificates/v1beta1"

PodCertificateRequest

PodCertificateRequest кодує pod, що запитує сертифікат від певного підписувача.

Kubelets використовують цей API для реалізації cпроєцьованих томів podCertificate.


  • apiVersion: certificates.k8s.io/v1beta1

  • kind: PodCertificateRequest

  • metadata (ObjectMeta)

    metadata містить метадані обʼєкта.

  • spec (PodCertificateRequestSpec), обовʼязково

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

  • status (PodCertificateRequestStatus)

    статус містить виданий сертифікат та стандартний набір станів.

PodCertificateRequestSpec

PodCertificateRequestSpec описує запит на сертифікат. Всі поля є незмінними після створення.


  • nodeName (string), обовʼязково

    nodeName — це імʼя вузла, до якого приписано под.

  • nodeUID (string), обовʼязково

    nodeUID — це UID вузла, до якого приписано под.

  • podName (string), обовʼязково

    podName — це імʼя пода, в який буде підключено сертифікат.

  • podUID (string), обовʼязково

    podUID — це UID пода, в який буде підключено сертифікат.

  • serviceAccountName (string), обовʼязково

    serviceAccountName — це імʼя службового облікового запису, під яким працює под.

  • serviceAccountUID (string), обовʼязково

    serviceAccountUID — це UID службового облікового запису, під яким працює под.

  • signerName (string), обовʼязково

    signerName вказує на запитаного підписувача.

    Всі імена підписувачів, що починаються з kubernetes.io, зарезервовані для використання проєктом Kubernetes. Наразі існує один відомий підписувач, задокументований проєктом Kubernetes, kubernetes.io/kube-apiserver-client-pod, який видаватиме клієнтські сертифікати, зрозумілі kube-apiserver. Наразі він не реалізований.

  • stubPKCS10Request ([]byte), обовʼязково

    PKCS#10 запит на підпис сертифіката (DER-серіалізований), згенерований Kubelet за допомогою приватного ключа субʼєкта.

    Більшість реалізацій підписувачів ігнорують вміст CSR, крім витягання відкритого ключа субʼєкта. API-сервер автоматично перевіряє підпис CSR під час допуску, тому підписувачеві не потрібно повторювати перевірку. CSR, згенеровані kubelet, повністю порожні.

    Відкритий ключ субʼєкта повинен бути одним із наступних типів: RSA3072, RSA4096, ECDSAP256, ECDSAP384, ECDSAP521 або ED25519. Зверніть увагу, що цей список може бути розширений у майбутньому.

    Реалізації підписувачів не обовʼязково підтримують усі типи ключів, підтримувані kube-apiserver та kubelet. Якщо підписувач не підтримує тип ключа, використаний для даного PodCertificateRequest, він повинен відхилити запит, встановивши запис у status.conditions з типом "Denied" та причиною "UnsupportedKeyType". Він також може запропонувати тип ключа, який він підтримує, у полі message.

  • maxExpirationSeconds (int32)

    maxExpirationSeconds — максимальний термін дії сертифіката.

    Якщо це поле пропущено, kube-apiserver встановить значення 86400 (24 години). kube-apiserver відхилить значення, менші за 3600 (1 година). Максимально допустиме значення — 7862400 (91 день).

    Після цього підписант може видавати сертифікати з будь-яким терміном дії, коротшим за MaxExpirationSeconds, але не коротшим за 3600 секунд (1 година). Це обмеження застосовується kube-apiserver. Підписанти kubernetes.io ніколи не видають сертифікати з терміном дії, довшим за 24 години.

  • pkixPublicKey ([]byte)

    PKIX-серіалізований відкритий ключ, на який підписувач видасть сертифікат.

    Відкритий ключ повинен бути одним із наступних типів: RSA3072, RSA4096, ECDSAP256, ECDSAP384, ECDSAP521 або ED25519. Зверніть увагу, що цей список може бути розширений у майбутньому.

    Реалізації підписувачів не обовʼязково підтримують усі типи ключів, підтримувані kube-apiserver та kubelet. Якщо підписувач не підтримує тип ключа, використаний для даного PodCertificateRequest, він повинен відхилити запит, встановивши запис у status.conditions з типом "Denied" та причиною "UnsupportedKeyType". Він також може запропонувати тип ключа, який він підтримує, у полі message.

    Застаріло: це поле замінено на StubPKCS10Request. Якщо встановлено StubPKCS10Request, це поле має бути порожнім. Реалізації підписувача повинні витягувати відкритий ключ із поля StubPKCS10Request.

  • proofOfPossession ([]byte)

    Доказ того, що запитуючий kubelet володіє приватним ключем, що відповідає pkixPublicKey.

    Він формується шляхом підписання ASCII-байтів UID пода за допомогою pkixPublicKey.

    kube-apiserver перевіряє доказ володіння під час створення PodCertificateRequest.

    Якщо ключ є RSA, підпис здійснюється над ASCII-байтами UID пода, використовуючи RSASSA-PSS з RFC 8017 (як реалізовано у функції golang crypto/rsa.SignPSS з nil опціями).

    Якщо ключ є ECDSA, підпис здійснюється відповідно до SEC 1, Version 2.0 (як реалізовано у функції golang crypto/ecdsa.SignASN1)

    Якщо ключ є ED25519, підпис здійснюється відповідно до ED25519 Specification (як реалізовано у бібліотеці golang crypto/ed25519.Sign).

    Застаріло: це поле замінено на StubPKCS10Request. Якщо встановлено StubPKCS10Request, це поле має бути порожнім.

  • unverifiedUserAnnotations (map[string]string)

    unverifiedUserAnnotations дозволяють авторам подів передавати додаткову інформацію до реалізації підписувача. Kubernetes жодним чином не обмежує та не перевіряє ці метадані.

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

    Підписувачі повинні документувати ключі та значення, які вони підтримують. Підписувачі повинні відхиляти запити, що містять ключі, які вони не розпізнають.

PodCertificateRequestStatus

PodCertificateRequestStatus описує стан запиту та містить дані сертифіката, якщо запит видано.


  • beginRefreshAt (Time)

    beginRefreshAt — це час, коли kubelet повинен почати спробувати оновити сертифікат. Це поле встановлюється через субресурс /status і повинно бути встановлено одночасно з certificateChain. Після заповнення це поле є незмінним.

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

    Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.

  • certificateChain (string)

    certificateChain заповнюється сертифікатом, виданим підписувачем. Це поле встановлюється за допомогою субресурсу /status. Після заповнення це поле є незмінним.

    Якщо запит на підписання сертифіката відхилено, додається умова типу "Denied" (Відхилено), і це поле залишається порожнім. Якщо підписувач не може видати сертифікат, додається умова типу "Failed" (Не вдалося), і це поле залишається порожнім.

    Вимоги до перевірки:

    1. certificateChain повинен складатися з одного або декількох сертифікатів у форматі PEM.
    2. Кожен запис повинен бути дійсним сертифікатом 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/v1beta1

  • kind: PodCertificateRequestList

  • metadata (ListMeta)

    metadata contains the list metadata.

  • items ([]PodCertificateRequest), обовʼязково

    items — це колекція обʼєктів PodCertificateRequest.

Operations


get отримати статус вказаного PodCertificateRequest

HTTP запит

GET /apis/certificates.k8s.io/v1beta1/namespaces/{namespace}/podcertificaterequests/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя PodCertificateRequest

  • namespace (в шляху): string, обовʼязково

    namespace

  • pretty (в запиті): string

    pretty

Відповідь

200 (PodCertificateRequest): OK

401: Unauthorized

get отримати статус вказаного PodCertificateRequest

HTTP запит

GET /apis/certificates.k8s.io/v1beta1/namespaces/{namespace}/podcertificaterequests/{name}/status

Параметри

  • name (в шляху): string, обовʼязково

    імʼя PodCertificateRequest

  • namespace (в шляху): string, обовʼязково

    namespace

  • pretty (в запиті): string

    pretty

Відповідь

200 (PodCertificateRequest): OK

401: Unauthorized

list перелік або перегляд обʼєктів типу PodCertificateRequest

HTTP запит

GET /apis/certificates.k8s.io/v1beta1/namespaces/{namespace}/podcertificaterequests

Параметри

Відповідь

200 (PodCertificateRequestList): OK

401: Unauthorized

list перелік або перегляд обʼєктів типу PodCertificateRequest

HTTP запит

GET /apis/certificates.k8s.io/v1beta1/podcertificaterequests

Параметри

Відповідь

200 (PodCertificateRequestList): OK

401: Unauthorized

create створення PodCertificateRequest

HTTP запит

POST /apis/certificates.k8s.io/v1beta1/namespaces/{namespace}/podcertificaterequests

Параметри

Відповідь

200 (PodCertificateRequest): OK

201 (PodCertificateRequest): Created

202 (PodCertificateRequest): Accepted

401: Unauthorized

update заміна вказаного PodCertificateRequest

HTTP запит

PUT /apis/certificates.k8s.io/v1beta1/namespaces/{namespace}/podcertificaterequests/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя PodCertificateRequest

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: PodCertificateRequest, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (PodCertificateRequest): OK

201 (PodCertificateRequest): Created

401: Unauthorized

update заміна статусу вказаного PodCertificateRequest

HTTP запит

PUT /apis/certificates.k8s.io/v1beta1/namespaces/{namespace}/podcertificaterequests/{name}/status

Параметри

  • name (в шляху): string, обовʼязково

    імʼя PodCertificateRequest

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: PodCertificateRequest, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (PodCertificateRequest): OK

201 (PodCertificateRequest): Created

401: Unauthorized

patch часткове оновлення вказаного PodCertificateRequest

HTTP запит

PATCH /apis/certificates.k8s.io/v1beta1/namespaces/{namespace}/podcertificaterequests/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя PodCertificateRequest

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: Patch, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • force (в запиті): boolean

    force

  • pretty (в запиті): string

    pretty

Відповідь

200 (PodCertificateRequest): OK

201 (PodCertificateRequest): Created

401: Unauthorized

patch часткове оновлення статусу вказаного PodCertificateRequest

HTTP запит

PATCH /apis/certificates.k8s.io/v1beta1/namespaces/{namespace}/podcertificaterequests/{name}/status

Параметри

  • name (в шляху): string, обовʼязково

    імʼя PodCertificateRequest

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: Patch, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • force (в запиті): boolean

    force

  • pretty (в запиті): string

    pretty

Відповідь

200 (PodCertificateRequest): OK

201 (PodCertificateRequest): Created

401: Unauthorized

delete видалення PodCertificateRequest

HTTP запит

DELETE /apis/certificates.k8s.io/v1beta1/namespaces/{namespace}/podcertificaterequests/{name}

Параметри

Відповідь

200 (Status): OK

202 (Status): Accepted

401: Unauthorized

deletecollection видалення колекції PodCertificateRequest

HTTP запит

DELETE /apis/certificates.k8s.io/v1beta1/namespaces/{namespace}/podcertificaterequests

Параметри

Відповідь

200 (Status): OK

401: Unauthorized

Востаннє змінено May 15, 2026 at 6:30 PM PST: [uk] Ukrainian translation (all-in-one) (3f52b3b106)