init
This commit is contained in:
62
README.md
Normal file
62
README.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user