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 вузла, до якого приписано под.

  • 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 години.

  • 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

Цю сторінку було стоврено автоматично.

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

Змінено December 30, 2025 at 9:49 AM PST: [uk] Ukrainian translation (all-in-one) (976e26f53c)