54 lines
2.4 KiB
YAML
54 lines
2.4 KiB
YAML
# Внутренний удостоверяющий центр контура aero.
|
||
#
|
||
# Зачем отдельный издатель: в репозитории все ClusterIssuer — ACME (Let's Encrypt)
|
||
# с решателем http01 и ingress class nginx. Контур закрытый, публичного DNS и
|
||
# входящего HTTP от ACME-сервера нет, поэтому ACME здесь принципиально нерабочий.
|
||
#
|
||
# Схема стандартная для внутренней PKI, в три шага:
|
||
# 1. selfsigned-issuer — самоподписывающий издатель, нужен только чтобы
|
||
# выпустить корневой сертификат;
|
||
# 2. aero-ca — сам корневой сертификат (isCA: true). Его приватный
|
||
# ключ попадает в secret aero-ca-key-pair в namespace cert-manager;
|
||
# 3. aero-ca-issuer — издатель, который подписывает этим корнем сертификаты
|
||
# для сервисов кластера (istio-gateway, dashboard и далее).
|
||
#
|
||
# Корневой сертификат нужно раздать клиентам (браузеры, curl), иначе они будут
|
||
# ругаться на недоверенный CA. Выгрузить его можно так:
|
||
# kubectl -n cert-manager get secret aero-ca-key-pair -o jsonpath='{.data.tls\.crt}' | base64 -d
|
||
---
|
||
apiVersion: cert-manager.io/v1
|
||
kind: ClusterIssuer
|
||
metadata:
|
||
name: selfsigned-issuer
|
||
spec:
|
||
selfSigned: {}
|
||
---
|
||
apiVersion: cert-manager.io/v1
|
||
kind: Certificate
|
||
metadata:
|
||
name: aero-ca
|
||
# Namespace обязателен и должен совпадать с cert-manager --cluster-resource-namespace
|
||
# (по умолчанию cert-manager): именно там ClusterIssuer ищет свой секрет.
|
||
namespace: cert-manager
|
||
spec:
|
||
isCA: true
|
||
commonName: aero-ca
|
||
secretName: aero-ca-key-pair
|
||
duration: 87600h # 10 лет — корень контура, ротация вручную
|
||
renewBefore: 720h # 30 суток
|
||
privateKey:
|
||
algorithm: ECDSA
|
||
size: 256
|
||
issuerRef:
|
||
name: selfsigned-issuer
|
||
kind: ClusterIssuer
|
||
group: cert-manager.io
|
||
---
|
||
apiVersion: cert-manager.io/v1
|
||
kind: ClusterIssuer
|
||
metadata:
|
||
name: aero-ca-issuer
|
||
spec:
|
||
ca:
|
||
secretName: aero-ca-key-pair
|