WIP: got the env variables to set in the php pod, need to make them dynamically be added rather than coded directly into lamp.rs

This commit is contained in:
Willem 2025-05-01 16:23:58 -04:00
parent 6653cebb87
commit ac24eb6206
2 changed files with 56 additions and 41 deletions

View File

@ -1,84 +1,82 @@
<?php <?php
ini_set('display_errors', 1); ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL); error_reporting(E_ALL);
$host = getenv('MYSQL_HOST') ?: 'localhost'; // Load dynamic secrets from environment
$db = 'testfill'; $host = getenv('MYSQL_HOST') ?: '';
$user = getenv('MYSQL_USER') ?: 'root'; $user = getenv('MYSQL_USER') ?: 'root';
$pass = getenv('MYSQL_PASSWORD') ?: ''; $pass = getenv('MYSQL_PASSWORD') ?: '';
$db = 'testfill';
$charset = 'utf8mb4'; $charset = 'utf8mb4';
// Setup PDO // Connect to MariaDB
$dsn = "mysql:host=$host;charset=$charset"; $dsn = "mysql:host=$host;charset=$charset";
$options = [ $options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]; ];
try { try {
$pdo = new PDO($dsn, $user, $pass, $options); $pdo = new PDO($dsn, $user, $pass, $options);
$pdo->exec("CREATE DATABASE IF NOT EXISTS `$db`"); $pdo->exec("CREATE DATABASE IF NOT EXISTS `$db`");
$pdo->exec("USE `$db`"); $pdo->exec("USE `$db`");
$pdo->exec(" $pdo->exec("
CREATE TABLE IF NOT EXISTS filler ( CREATE TABLE IF NOT EXISTS filler (
id INT AUTO_INCREMENT PRIMARY KEY, id INT AUTO_INCREMENT PRIMARY KEY,
data LONGBLOB data LONGBLOB
) )
"); ");
} catch (\PDOException $e) { } catch (\PDOException $e) {
die("Database setup failed: " . $e->getMessage()); die("❌ DB connection failed: " . $e->getMessage());
} }
// Disk usage (PVC mount path) // Get database size from information_schema
$mountPath = '/var/lib/mysql'; // Change this if PVC is mounted elsewhere try {
$freeBytes = disk_free_space($mountPath); $stmt = $pdo->query("
$totalBytes = disk_total_space($mountPath); SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS total_size_gb
$freeGB = round($freeBytes / (1024 ** 3), 2); FROM information_schema.tables
$totalGB = round($totalBytes / (1024 ** 3), 2); WHERE table_schema = 'testfill'
$usedGB = round(($totalBytes - $freeBytes) / (1024 ** 3), 2); ");
$dbSize = $stmt->fetch()['total_size_gb'] ?? '0';
} catch (Exception $e) {
$dbSize = 'N/A';
}
$message = ''; $message = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['fill'])) {
// Insert ~1GB of binary data
if ($_SERVER['REQUEST_METHOD'] === 'POST'&& isset($_POST['fill'])) { $iterations = 1024;
$data = str_repeat(random_bytes(1024), 1024); // 1MB
$chunkSize = 1024 * 1024; // 1MB
$iterations = 1024; // 1GB total
$data = str_repeat(random_bytes(1024), 1024); // ~1MB binary blob
$stmt = $pdo->prepare("INSERT INTO filler (data) VALUES (:data)"); $stmt = $pdo->prepare("INSERT INTO filler (data) VALUES (:data)");
for ($i = 0; $i < $iterations; $i++) { for ($i = 0; $i < $iterations; $i++) {
$stmt->execute([':data' => $data]); $stmt->execute([':data' => $data]);
} }
// Recalculate DB size
$stmt = $pdo->query("
SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS total_size_gb
FROM information_schema.tables
WHERE table_schema = 'testfill'
");
$dbSize = $stmt->fetch()['total_size_gb'] ?? '0';
clearstatcache(); $message = "<p style='color: green;'>✅ 1GB inserted into MariaDB successfully.</p>";
$freeBytes = disk_free_space($mountPath);
$freeGB = round($freeBytes / (1024 ** 3), 2);
$usedGB = round(($totalBytes - $freeBytes) / (1024 ** 3), 2);
$message = "<p style='color: green;'>✅ 1GB inserted. Disk usage updated.</p>";
} }
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>Volume Filler</title> <title>MariaDB Filler</title>
</head> </head>
<body> <body>
<h1>Kubernetes PVC Filler</h1> <h1>MariaDB Storage Filler</h1>
<?= $message ?> <?= $message ?>
<ul> <ul>
<li>Total PVC Space: <?= $totalGB ?> GB</li> <li><strong>MariaDB Used Size:</strong> <?= $dbSize ?> GB</li>
<li>Used PVC Space: <?= $usedGB ?> GB</li>
<li>Free PVC Space: <?= $freeGB ?> GB</li>
</ul> </ul>
<form method="post"> <form method="post">
@ -87,4 +85,3 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST'&& isset($_POST['fill'])) {
</body> </body>
</html> </html>

View File

@ -113,7 +113,18 @@ impl<T: Topology + K8sclient + HelmCommand> Interpret<T> for LAMPInterpret {
} }
} }
}, },
]), {
"name": "MYSQL_HOST",
"value": "harmony-lamp-demo-database-mariadb"
},
{
"name": "MYSQL_DATABASE",
"value": "testfill"
},
{
"name": "MYSQL_USER",
"value": "root"
}]),
}; };
info!("Deploying score {deployment_score:#?}"); info!("Deploying score {deployment_score:#?}");
@ -257,6 +268,13 @@ opcache.fast_shutdown=1
sed -i 's/ServerSignature On/ServerSignature Off/' /etc/apache2/conf-enabled/security.conf" sed -i 's/ServerSignature On/ServerSignature Off/' /etc/apache2/conf-enabled/security.conf"
)); ));
// Set env vars
dockerfile.push(RUN::from(
"echo 'PassEnv MYSQL_PASSWORD' >> /etc/apache2/sites-available/000-default.conf \
&& echo 'PassEnv MYSQL_USER' >> /etc/apache2/sites-available/000-default.conf \
&& echo 'PassEnv MYSQL_HOST' >> /etc/apache2/sites-available/000-default.conf"
));
// Create a dedicated user for running Apache // Create a dedicated user for running Apache
dockerfile.push(RUN::from( dockerfile.push(RUN::from(
"groupadd -g 1000 appuser && \ "groupadd -g 1000 appuser && \