Vassiliy Yegorov 60cb08b767
Some checks failed
build, sign and push / build-and-sign (push) Has been cancelled
Update build-sign-push.yaml
2026-03-26 19:00:11 +07:00
2026-03-26 18:58:53 +07:00
2026-03-26 18:58:53 +07:00
2026-03-26 18:58:53 +07:00
2026-03-26 18:58:53 +07:00
2026-03-26 18:58:53 +07:00

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 — из Vault
    • VAULT_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
No description provided
Readme 242 KiB
Languages
Dockerfile 55.9%
Smarty 44.1%