Files
K3S/addons/cert-manager/README.md
Sergey Antropoff 38aaadbfb1 docs: sync addon docs with explicit external/internal service modes
Обновлена документация под новые аддоны (gitlab, redis, mongodb, kafka, kafka-ui, rabbitmq) и новую модель явного выбора зависимостей. Добавлены и унифицированы описания переключателей *_database_mode и *_redis_mode, обновлена таблица зависимостей аддонов, примеры конфигурации и список vault-секретов.
2026-04-29 23:21:04 +03:00

129 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# cert-manager
Автоматически выдаёт и обновляет TLS сертификаты в кластере. Поддерживает самоподписанные сертификаты (для homelab) и Let's Encrypt (для публичных доменов). Сертификаты обновляются автоматически за 30 дней до истечения.
## Быстрый старт
```yaml
# group_vars/all/addons.yml
addon_cert_manager: true
cert_manager_issuer: "letsencrypt" # none | selfsigned | letsencrypt
cert_manager_acme_email: "admin@example.com"
```
```bash
make addon-cert-manager
```
## Параметры
| Переменная | Умолч. | Описание |
|---|---|---|
| `cert_manager_issuer` | `letsencrypt` | Тип ClusterIssuer |
| `cert_manager_acme_email` | `admin@example.com` | Email для Let's Encrypt |
| `cert_manager_default_issuer_name` | `letsencrypt-prod` | Имя ClusterIssuer для аннотаций |
## Режимы ClusterIssuer
### selfsigned — внутренний CA (homelab/dev)
Создаются: `selfsigned-issuer`, `cluster-ca`, `cluster-ca-issuer`.
```yaml
cert_manager_issuer: "selfsigned"
```
Аннотация на Ingress:
```yaml
annotations:
cert-manager.io/cluster-issuer: "cluster-ca-issuer"
```
### letsencrypt — публичные домены
Создаются оба исуера: `letsencrypt-staging` и `letsencrypt-prod`.
```yaml
cert_manager_issuer: "letsencrypt"
cert_manager_acme_email: "admin@example.com"
```
Аннотация на Ingress:
```yaml
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
```
Для тестирования используй `letsencrypt-staging` — без лимитов rate limit.
## Использование в Ingress
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
ingressClassName: nginx
tls:
- hosts:
- myapp.example.com
secretName: myapp-tls
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-app
port:
number: 80
```
## Ручной Certificate ресурс
```yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-app-tls
namespace: my-app
spec:
secretName: my-app-tls-secret
duration: 2160h # 90 дней
renewBefore: 360h # обновить за 15 дней
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- myapp.example.com
- www.myapp.example.com
```
## Диагностика
```bash
# Статус Certificate
kubectl get certificate -A
kubectl describe certificate my-app-tls -n my-app
# Статус CertificateRequest
kubectl get certificaterequest -A
# Логи cert-manager
kubectl logs -n cert-manager deployment/cert-manager -f
# Проверить что сертификат Let's Encrypt получен:
kubectl get secret my-app-tls -n my-app -o jsonpath='{.data.tls\.crt}' | \
base64 -d | openssl x509 -noout -dates
```
## Официальные ресурсы
- Официальный сайт: [https://cert-manager.io/](https://cert-manager.io/)
- Официальная документация: [https://cert-manager.io/docs/](https://cert-manager.io/docs/)
- Версии Helm chart / ПО: [https://artifacthub.io/packages/helm/cert-manager/cert-manager](https://artifacthub.io/packages/helm/cert-manager/cert-manager)