feat(Production): Complete production deployment infrastructure

- Add comprehensive health check system with multiple endpoints
- Add Prometheus metrics endpoint
- Add production logging configurations (5 strategies)
- Add complete deployment documentation suite:
  * QUICKSTART.md - 30-minute deployment guide
  * DEPLOYMENT_CHECKLIST.md - Printable verification checklist
  * DEPLOYMENT_WORKFLOW.md - Complete deployment lifecycle
  * PRODUCTION_DEPLOYMENT.md - Comprehensive technical reference
  * production-logging.md - Logging configuration guide
  * ANSIBLE_DEPLOYMENT.md - Infrastructure as Code automation
  * README.md - Navigation hub
  * DEPLOYMENT_SUMMARY.md - Executive summary
- Add deployment scripts and automation
- Add DEPLOYMENT_PLAN.md - Concrete plan for immediate deployment
- Update README with production-ready features

All production infrastructure is now complete and ready for deployment.
This commit is contained in:
2025-10-25 19:18:37 +02:00
parent caa85db796
commit fc3d7e6357
83016 changed files with 378904 additions and 20919 deletions

View File

@@ -4,26 +4,30 @@ declare(strict_types=1);
namespace App\Domain\Vault\Migrations;
use App\Framework\Database\ConnectionInterface;
use App\Framework\Database\Migration\Migration;
use App\Framework\Database\Migration\MigrationVersion;
use App\Framework\Database\Schema\Blueprint;
use App\Framework\Database\Schema\Schema;
/**
* Create Vault tables for secure secrets storage
*/
final class CreateVaultTables extends Migration
final class CreateVaultTables implements Migration
{
public function up(Schema $schema): void
public function up(ConnectionInterface $connection): void
{
$schema = new Schema($connection);
// Main Vault Secrets Table
$schema->create('vault_secrets', function (Blueprint $table) {
$table->char('id', 36)->primary();
$schema->createIfNotExists('vault_secrets', function (Blueprint $table) {
$table->string('id', 36)->primary();
$table->string('secret_key', 255)->unique();
$table->text('encrypted_value');
$table->string('encryption_nonce', 255);
$table->integer('encryption_version')->default(1);
$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->useCurrent()->onUpdateCurrent();
$table->timestamp('updated_at')->nullable();
$table->string('created_by', 255)->nullable();
$table->string('updated_by', 255)->nullable();
$table->integer('access_count')->default(0);
@@ -31,10 +35,15 @@ final class CreateVaultTables extends Migration
$table->index('secret_key');
$table->index('updated_at');
// Table options
$table->engine('InnoDB');
$table->charset('utf8mb4');
$table->collation('utf8mb4_unicode_ci');
});
// Vault Audit Log
$schema->create('vault_audit_log', function (Blueprint $table) {
$schema->createIfNotExists('vault_audit_log', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('secret_key', 255);
$table->enum('action', ['read', 'write', 'delete', 'rotate', 'export']);
@@ -49,10 +58,15 @@ final class CreateVaultTables extends Migration
$table->index('action');
$table->index('timestamp');
$table->index('user_id');
// Table options
$table->engine('InnoDB');
$table->charset('utf8mb4');
$table->collation('utf8mb4_unicode_ci');
});
// Encryption Key Versions
$schema->create('vault_encryption_keys', function (Blueprint $table) {
$schema->createIfNotExists('vault_encryption_keys', function (Blueprint $table) {
$table->increments('id');
$table->integer('version')->unique();
$table->string('key_hash', 255);
@@ -63,13 +77,32 @@ final class CreateVaultTables extends Migration
$table->index('version');
$table->index('is_active');
// Table options
$table->engine('InnoDB');
$table->charset('utf8mb4');
$table->collation('utf8mb4_unicode_ci');
});
$schema->execute();
}
public function down(Schema $schema): void
public function down(ConnectionInterface $connection): void
{
$schema = new Schema($connection);
$schema->dropIfExists('vault_encryption_keys');
$schema->dropIfExists('vault_audit_log');
$schema->dropIfExists('vault_secrets');
$schema->execute();
}
public function getVersion(): MigrationVersion
{
return MigrationVersion::fromTimestamp("2025_10_05_090000");
}
public function getDescription(): string
{
return "Create Vault tables for secure secrets storage";
}
}