Spec-Zone.ru › Kubernetes

CertificateSigningRequest

Объекты CertificateSigningRequest предоставляют механизм получения сертификатов x509: для этого отправляется запрос на подпись сертификата, который асинхронно утверждается и обрабатывается для выдачи сертификата.

Кubelet используют этот API для получения:

  1. клиентских сертификатов для аутентификации в kube-apiserver (с signerName "kubernetes.io/kube-apiserver-client-kubelet").
  2. сертификатов для TLS-конечных точек, к которым kube-apiserver может безопасно подключаться (с signerName "kubernetes.io/kubelet-serving").

Этот API можно использовать для запроса клиентских сертификатов для аутентификации в kube-apiserver (с signerName "kubernetes.io/kube-apiserver-client") или для получения сертификатов от пользовательских подписывающих сторон, не относящихся к Kubernetes.

apiVersion: certificates.k8s.io/v1

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

CertificateSigningRequest

Объекты CertificateSigningRequest предоставляют механизм получения сертификатов x509: для этого отправляется запрос на подпись сертификата, который асинхронно утверждается и обрабатывается для выдачи сертификата.

Кubelet используют этот API для получения:

  1. клиентских сертификатов для аутентификации в kube-apiserver (с signerName "kubernetes.io/kube-apiserver-client-kubelet").
  2. сертификатов для TLS-конечных точек, к которым kube-apiserver может безопасно подключаться (с signerName "kubernetes.io/kubelet-serving").

Этот API можно использовать для запроса клиентских сертификатов для аутентификации в kube-apiserver (с signerName "kubernetes.io/kube-apiserver-client") или для получения сертификатов от пользовательских подписывающих сторон, не относящихся к Kubernetes.

Поле Описание
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
spec *
CertificateSigningRequestSpec
spec содержит запрос на сертификат и не может быть изменено после создания. При создании можно задать только поля request, signerName, expirationSeconds и usages. Остальные поля вычисляются Kubernetes и не могут быть изменены пользователями.
status
CertificateSigningRequestStatus
status содержит сведения о том, утверждён или отклонён запрос, а также сертификат, выданный подписывающей стороной, либо условие сбоя, указывающее на ошибку подписывающей стороны.

CertificateSigningRequestSpec

CertificateSigningRequestSpec содержит запрос на сертификат.

Поле Описание
expirationSeconds
integer
expirationSeconds — запрошенная длительность действия выданного сертификата. Подписывающая сторона сертификата может выдать сертификат с другой длительностью действия, поэтому клиент должен проверить разницу между полями notBefore и notAfter в выданном сертификате, чтобы определить фактическую длительность. Реализации встроенных компонентов для известных подписывающих сторон Kubernetes версии v1.22 и выше будут учитывать это поле, если запрошенная длительность не превышает максимальную длительность, которую они готовы предоставить согласно флагу CLI --cluster-signing-duration диспетчера контроллеров Kubernetes. Подписывающие стороны сертификатов могут не учитывать это поле по разным причинам: 1. Старая подписывающая сторона, которой неизвестно это поле (например, встроенные реализации до версии v1.22). 2. Настроенное максимальное значение подписывающей стороны меньше запрошенной длительности. 3. Настроенное минимальное значение подписывающей стороны больше запрошенной длительности. Минимальное допустимое значение expirationSeconds — 600, то есть 10 минут.
extra
object
extra содержит дополнительные атрибуты пользователя, создавшего CertificateSigningRequest. Заполняется сервером API при создании и не может быть изменено.
groups
string array
groups содержит сведения о членстве в группах пользователя, создавшего CertificateSigningRequest. Заполняется сервером API при создании и не может быть изменено.
request *
string
request содержит запрос на подпись сертификата x509, закодированный в блоке PEM "CERTIFICATE REQUEST". При сериализации в JSON или YAML данные дополнительно кодируются в base64.
signerName *
string
signerName указывает запрошенную подписывающую сторону и представляет собой квалифицированное имя. Запросы list/watch для CertificateSigningRequests можно фильтровать по этому полю с помощью fieldSelector "spec.signerName=NAME". Известные подписывающие стороны Kubernetes: 1. "kubernetes.io/kube-apiserver-client": выдаёт клиентские сертификаты, которые можно использовать для аутентификации в kube-apiserver. Запросы для этой подписывающей стороны никогда не утверждаются автоматически диспетчером контроллеров kube-controller-manager; их может обрабатывать контроллер "csrsigning" в kube-controller-manager. 2. "kubernetes.io/kube-apiserver-client-kubelet": выдаёт клиентские сертификаты, которые kubelet используют для аутентификации в kube-apiserver. Запросы для этой подписывающей стороны могут автоматически утверждаться контроллером "csrapproving" в kube-controller-manager и обрабатываться контроллером "csrsigning" в kube-controller-manager. 3. "kubernetes.io/kubelet-serving" выдаёт сертификаты для конечных точек, которые kubelet используют для обслуживания TLS и к которым kube-apiserver может безопасно подключаться. Запросы для этой подписывающей стороны никогда не утверждаются автоматически диспетчером контроллеров kube-controller-manager; их может обрабатывать контроллер "csrsigning" в kube-controller-manager. Подробнее: https://k8s.io/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers Также можно указывать пользовательские signerNames. Подписывающая сторона определяет: 1. Распространение доверия: способы распространения доверия (пакетов сертификатов CA). 2. Допустимые субъекты и поведение при запросе недопустимого субъекта. 3. Обязательные, допустимые или запрещённые расширения x509 в запросе (в том числе разрешены ли subjectAltNames, какие их типы и какие ограничения применяются к допустимым значениям), а также поведение при запросе запрещённого расширения. 4. Обязательные, допустимые или запрещённые назначения ключа и расширенные назначения ключа. 5. Срок действия/время жизни сертификата: определяется ли он подписывающей стороной или может настраиваться администратором. 6. Разрешены ли запросы на сертификаты CA.
uid
string
uid содержит uid пользователя, создавшего CertificateSigningRequest. Заполняется сервером API при создании и не может быть изменено.
usages
string array
usages задаёт набор назначений ключа, запрашиваемых в выданном сертификате. В запросах на клиентские сертификаты TLS обычно указываются: "digital signature", "key encipherment", "client auth". В запросах на сертификаты для обслуживания TLS обычно указываются: "key encipherment", "digital signature", "server auth". Допустимые значения: "signing", "digital signature", "content commitment", "key encipherment", "key agreement", "data encipherment", "cert sign", "crl sign", "encipher only", "decipher only", "any", "server auth", "client auth", "code signing", "email protection", "s/mime", "ipsec end system", "ipsec tunnel", "ipsec user", "timestamping", "ocsp signing", "microsoft sgc", "netscape sgc"
username
string
username содержит имя пользователя, создавшего CertificateSigningRequest. Заполняется сервером API при создании и не может быть изменено.

CertificateSigningRequestStatus

CertificateSigningRequestStatus содержит условия, указывающие на утверждённое, отклонённое или неудачное состояние запроса, а также выданный сертификат.

Поле Описание
certificate
string
certificate заполняется подписывающей стороной выданным сертификатом после появления условия Approved. Это поле задаётся через подресурс /status. После заполнения оно не может быть изменено. Если запрос на подпись сертификата отклонён, добавляется условие типа "Denied", а поле остаётся пустым. Если подписывающая сторона не может выдать сертификат, добавляется условие типа "Failed", а поле остаётся пустым. Требования к проверке: 1. certificate должен содержать один или несколько блоков PEM. 2. Все блоки PEM должны иметь метку "CERTIFICATE", не содержать заголовков, а закодированные данные должны представлять собой структуру сертификата ASN.1 в кодировке BER, описанную в разделе 4 RFC5280. 3. Перед блоками PEM "CERTIFICATE" или после них может располагаться содержимое, не являющееся PEM; оно не проверяется, что позволяет добавлять пояснительный текст, описанный в разделе 5.2 RFC7468. Если присутствует несколько блоков PEM и определение запрошенного spec.signerName не указывает иное, первый блок является выданным сертификатом, а последующие блоки следует считать промежуточными сертификатами и передавать при TLS-рукопожатиях. Сертификат кодируется в формате PEM. При сериализации в JSON или YAML данные дополнительно кодируются в base64, поэтому имеют вид: base64( -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- )
conditions
CertificateSigningRequestCondition array
conditions, применённые к запросу. Известные условия: "Approved", "Denied" и "Failed".

CertificateSigningRequestList

CertificateSigningRequestList — это коллекция объектов CertificateSigningRequest

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

CertificateSigningRequestCondition

CertificateSigningRequestCondition описывает условие объекта CertificateSigningRequest

Поле Описание
lastTransitionTime
Time
lastTransitionTime — время последнего перехода условия из одного состояния в другое. Если значение не задано, при добавлении нового типа условия или изменении состояния существующего условия сервер устанавливает текущее время.
lastUpdateTime
Time
lastUpdateTime — время последнего обновления этого условия
message
string
message содержит понятное человеку сообщение с подробностями о состоянии запроса
reason
string
reason указывает краткую причину состояния запроса
status *
string
status — состояние условия: True, False или Unknown. Условия Approved, Denied и Failed не могут иметь значение "False" или "Unknown".
type *
string
type — тип условия. Известные условия: "Approved", "Denied" и "Failed". Условие "Approved" добавляется через подресурс /approval и указывает, что запрос утверждён и должен быть обработан подписывающей стороной. Условие "Denied" добавляется через подресурс /approval и указывает, что запрос отклонён и не должен обрабатываться подписывающей стороной. Условие "Failed" добавляется через подресурс /status и указывает, что подписывающей стороне не удалось выдать сертификат. Условия Approved и Denied взаимоисключающие. После добавления условия Approved, Denied или Failed удалить его нельзя. Допускается только одно условие каждого типа.

© 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/certificate-signing-request-v1/

Spec-Zone.ru

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