60cb08b767f6f425b45a895dcd6befd5eccf4de3
Some checks failed
build, sign and push / build-and-sign (push) Has been cancelled
Custom Nginx + Image Signing + Kyverno Policy
Описание
Демонстрация полного цикла: сборка кастомного nginx-образа, подпись через HashiCorp Vault, деплой в Kubernetes через Helm и валидация подписи Kyverno.
Шаги запуска
1. Подготовка Vault
- Настройте Transit Engine и сгенерируйте ключ
container-signв Vault. - Примените политику из
vault_approle_policy.hcl:vault policy write container-sign vault_approle_policy.hcl - Создайте appRole и получите RoleID/SecretID:
sh vault_approle_setup.sh - Сохраните RoleID и SecretID для переменных CI/CD.
2. Настройка GitLab CI/CD
- В настройках проекта добавьте переменные:
VAULT_ROLE_ID— из VaultVAULT_SECRET_ID— из Vault
- Убедитесь, что
.gitlab-ci.ymlкорректно настроен под ваш реестр и адрес Vault.
3. Сборка и подпись образа
- Запустите pipeline в GitLab.
- Образ будет собран, отправлен в реестр и подписан через cosign с использованием Vault.
4. Деплой в Kubernetes
- Перейдите в директорию helm-чарта:
cd helm/nginx helm install nginx . - Проверьте, что деплой прошёл успешно.
5. Настройка Kyverno
- Получите публичный ключ из Vault:
vault read -field=public_key transit/keys/container-sign - Вставьте ключ в
kyverno-image-signature-policy.yamlвместо<VAULT_PUBLIC_KEY>. - Примените политику:
kubectl apply -f kyverno-image-signature-policy.yaml
Итог
- Только подписанные образы будут запускаться в кластере.
- Весь процесс автоматизирован через CI/CD и Vault.
Description
Languages
Dockerfile
55.9%
Smarty
44.1%