PodCertificateRequest v1alpha1

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

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" (Не вдалося), і це поле залишається порожнім.

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

    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/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, обовʼязково

    namespace

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

    pretty

Відповідь

200 (PodCertificateRequest): OK

401: Unauthorized

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

HTTP запит

GET /apis/certificates.k8s.io/v1alpha1/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/v1alpha1/namespaces/{namespace}/podcertificaterequests

Параметри

Відповідь

200 (PodCertificateRequestList): OK

401: Unauthorized

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

HTTP запит

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

Параметри

Відповідь

200 (PodCertificateRequestList): OK

401: Unauthorized

create створення PodCertificateRequest

HTTP запит

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

Параметри

Відповідь

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, обовʼязково

    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/v1alpha1/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/v1alpha1/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/v1alpha1/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/v1alpha1/namespaces/{namespace}/podcertificaterequests/{name}

Параметри

Відповідь

200 (Status): OK

202 (Status): Accepted

401: Unauthorized

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

HTTP запит

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

Параметри

Відповідь

200 (Status): OK

401: Unauthorized

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

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

Змінено September 10, 2025 at 12:46 AM PST: [uk] sync upstream (90eefd8520)