Spec-Zone.ru › Kubernetes

PodCertificateRequest

PodCertificateRequest описывает запрос пода на получение сертификата от указанного подписанта.

kubelet используют этот API для реализации projected-томов podCertificate

apiVersion: certificates.k8s.io/v1beta1

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

PodCertificateRequest

PodCertificateRequest описывает запрос пода на получение сертификата от указанного подписанта.

kubelet используют этот API для реализации projected-томов podCertificate

Поле Описание
apiVersion
string
APIVersion определяет версионированную схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее значение и могут отклонять нераспознанные значения. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind
string
Kind — строковое значение, представляющее ресурс REST, который описывает этот объект. Серверы могут определить его по конечной точке, на которую клиент отправляет запросы. Обновление невозможно. В CamelCase. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ObjectMeta
metadata содержит метаданные объекта.
spec *
PodCertificateRequestSpec
spec содержит сведения о запрашиваемом сертификате.
status
PodCertificateRequestStatus
status содержит выданный сертификат и стандартный набор условий.

PodCertificateRequestSpec

PodCertificateRequestSpec описывает запрос сертификата. После создания все поля неизменяемы.

Поле Описание
maxExpirationSeconds
integer
maxExpirationSeconds — максимальный срок действия сертификата. Если значение не указано, kube-apiserver установит его равным 86400 (24 часа). kube-apiserver отклонит значения меньше 3600 (1 часа). Максимально допустимое значение — 7862400 (91 день). После этого реализация подписанта может выдать сертификат с любым сроком действия, *меньшим* MaxExpirationSeconds, но не менее 3600 секунд (1 часа). Это ограничение обеспечивает kube-apiserver. Подписанты `kubernetes.io` никогда не выдают сертификаты со сроком действия более 24 часов.
nodeName *
string
nodeName — имя узла, которому назначен под.
nodeUID *
string
nodeUID — UID узла, которому назначен под.
pkixPublicKey
string
Публичный ключ в формате PKIX, которому подписант выдаст сертификат. Ключ должен быть одним из следующих типов: RSA3072, RSA4096, ECDSAP256, ECDSAP384, ECDSAP521 или ED25519. Обратите внимание: в будущем этот список может быть расширен. Реализациям подписантов не обязательно поддерживать все типы ключей, поддерживаемые kube-apiserver и kubelet. Если подписант не поддерживает тип ключа, использованный в данном PodCertificateRequest, он должен отклонить запрос, добавив запись status.conditions с типом "Denied" и причиной "UnsupportedKeyType". В поле message он также может предложить поддерживаемый тип ключа. Устарело: это поле заменено на StubPKCS10Request. Если задано StubPKCS10Request, это поле должно быть пустым. Реализации подписантов должны извлекать публичный ключ из поля StubPKCS10Request.
podName *
string
podName — имя пода, в который будет смонтирован сертификат.
podUID *
string
podUID — UID пода, в который будет смонтирован сертификат.
proofOfPossession
string
Доказательство того, что запрашивающий 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](https://www.secg.org/sec1-v2.pdf) (как реализовано в функции библиотеки golang crypto/ecdsa.SignASN1). Если ключ является ключом ED25519, подпись создаётся способом, описанным в [спецификации ED25519](https://ed25519.cr.yp.to/) (как реализовано в библиотеке golang crypto/ed25519.Sign). Устарело: это поле заменено на StubPKCS10Request. Если задано StubPKCS10Request, это поле должно быть пустым.
serviceAccountName *
string
serviceAccountName — имя учётной записи ServiceAccount, от имени которой работает под.
serviceAccountUID *
string
serviceAccountUID — UID учётной записи ServiceAccount, от имени которой работает под.
signerName *
string
signerName указывает запрашиваемого подписанта. Все имена подписантов, начинающиеся с `kubernetes.io`, зарезервированы для проекта Kubernetes. Сейчас проект Kubernetes документирует одного общепринятого подписанта — `kubernetes.io/kube-apiserver-client-pod`, который будет выдавать клиентские сертификаты, распознаваемые kube-apiserver. В настоящее время он не реализован.
stubPKCS10Request *
string
Запрос на подписание сертификата в формате PKCS#10 (сериализованный DER), созданный kubelet с использованием закрытого ключа субъекта. Большинство реализаций подписантов игнорируют содержимое CSR и извлекают только открытый ключ субъекта. API-сервер автоматически проверяет подпись CSR при допуске, поэтому подписанту не нужно повторять эту проверку. CSR, создаваемые kubelet, полностью пусты. Открытый ключ субъекта должен быть одним из следующих типов: RSA3072, RSA4096, ECDSAP256, ECDSAP384, ECDSAP521 или ED25519. Обратите внимание: в будущем этот список может быть расширен. Реализациям подписантов не обязательно поддерживать все типы ключей, поддерживаемые kube-apiserver и kubelet. Если подписант не поддерживает тип ключа, использованный в данном PodCertificateRequest, он должен отклонить запрос, добавив запись status.conditions с типом "Denied" и причиной "UnsupportedKeyType". В поле message он также может предложить поддерживаемый тип ключа.
unverifiedUserAnnotations
object
unverifiedUserAnnotations позволяют авторам подов передавать дополнительную информацию реализации подписанта. Kubernetes никоим образом не ограничивает и не проверяет эти метаданные. Записи проходят ту же проверку, что и аннотации метаданных объектов, с дополнительным требованием: все ключи должны иметь префикс домена. Ограничений на значения нет, кроме общего ограничения размера всего поля. Подписанты должны документировать поддерживаемые ими ключи и значения. Подписанты должны отклонять запросы, содержащие незнакомые им ключи.

PodCertificateRequestStatus

PodCertificateRequestStatus описывает состояние запроса и содержит данные сертификата, если запрос был удовлетворён.

Поле Описание
beginRefreshAt
Time
beginRefreshAt — время, когда kubelet должен начать попытки обновления сертификата. Это поле задаётся через подресурс /status и должно задаваться одновременно с certificateChain. После заполнения это поле становится неизменяемым. Это поле является лишь подсказкой. При необходимости kubelet может начать обновление до или после указанного времени.
certificateChain
string
certificateChain заполняется подписантом выданным сертификатом. Это поле задаётся через подресурс /status. После заполнения это поле становится неизменяемым. Если запрос на подписание сертификата отклонён, добавляется условие типа "Denied", а это поле остаётся пустым. Если подписант не может выдать сертификат, добавляется условие типа "Failed", а это поле остаётся пустым. Требования к проверке: 1. certificateChain должен состоять из одного или нескольких сертификатов в формате PEM. 2. Каждая запись должна быть допустимым сертификатом ASN.1 в кодировке DER, обёрнутым в PEM, как описано в разделе 4 RFC5280. Если присутствует более одного блока и определение запрошенного spec.signerName не указывает иное, первый блок является выданным сертификатом, а последующие блоки следует считать промежуточными сертификатами и передавать при TLS-рукопожатии. При проецировании цепочки в том пода kubelet удалит все данные между блоками PEM, а также заголовки блоков PEM.
conditions
Condition array
стратегия patch: объединение по ключу type
conditions, применённые к запросу. Для типов "Issued", "Denied" и "Failed" предусмотрена специальная обработка. Может присутствовать не более одного из этих условий, и его статус должен быть "True". Если запрос отклонён с `Reason=UnsupportedKeyType`, подписант может предложить подходящий тип ключа в поле message.
notAfter
Time
notAfter — время истечения срока действия сертификата. Значение должно совпадать со значением notAfter в конечном сертификате из certificateChain. Это поле задаётся через подресурс /status. После заполнения это поле становится неизменяемым. Подписант должен задать это поле одновременно с certificateChain.
notBefore
Time
notBefore — время начала действия сертификата. Значение должно совпадать со значением notBefore в конечном сертификате из certificateChain. Это поле задаётся через подресурс /status. После заполнения это поле становится неизменяемым. Подписант должен задать это поле одновременно с certificateChain.

PodCertificateRequestList

PodCertificateRequestList — это коллекция объектов PodCertificateRequest

Поле Описание
apiVersion
string
APIVersion определяет версионированную схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее значение и могут отклонять нераспознанные значения. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
items *
Массив PodCertificateRequest
items — коллекция объектов PodCertificateRequest
kind
string
Kind — строковое значение, представляющее ресурс REST, который описывает этот объект. Серверы могут определить его по конечной точке, на которую клиент отправляет запросы. Обновление невозможно. В CamelCase. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ListMeta
metadata содержит метаданные списка.

© 2026 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2026 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/kubernetes-api/certificates/pod-certificate-request-v1beta1/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API