Files
cosign-images/README.md
2026-03-26 18:58:53 +07:00

63 lines
2.1 KiB
Markdown
Raw 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.
# Custom Nginx + Image Signing + Kyverno Policy
## Описание
Демонстрация полного цикла: сборка кастомного nginx-образа, подпись через HashiCorp Vault, деплой в Kubernetes через Helm и валидация подписи Kyverno.
---
## Шаги запуска
### 1. Подготовка Vault
- Настройте Transit Engine и сгенерируйте ключ `container-sign` в Vault.
- Примените политику из `vault_approle_policy.hcl`:
```sh
vault policy write container-sign vault_approle_policy.hcl
```
- Создайте appRole и получите RoleID/SecretID:
```sh
sh vault_approle_setup.sh
```
- Сохраните RoleID и SecretID для переменных CI/CD.
### 2. Настройка GitLab CI/CD
- В настройках проекта добавьте переменные:
- `VAULT_ROLE_ID` — из Vault
- `VAULT_SECRET_ID` — из Vault
- Убедитесь, что `.gitlab-ci.yml` корректно настроен под ваш реестр и адрес Vault.
### 3. Сборка и подпись образа
- Запустите pipeline в GitLab.
- Образ будет собран, отправлен в реестр и подписан через cosign с использованием Vault.
### 4. Деплой в Kubernetes
- Перейдите в директорию helm-чарта:
```sh
cd helm/nginx
helm install nginx .
```
- Проверьте, что деплой прошёл успешно.
### 5. Настройка Kyverno
- Получите публичный ключ из Vault:
```sh
vault read -field=public_key transit/keys/container-sign
```
- Вставьте ключ в `kyverno-image-signature-policy.yaml` вместо `<VAULT_PUBLIC_KEY>`.
- Примените политику:
```sh
kubectl apply -f kyverno-image-signature-policy.yaml
```
---
## Итог
- Только подписанные образы будут запускаться в кластере.
- Весь процесс автоматизирован через CI/CD и Vault.