1. 编写 PHP 留言板应用程序:
创建一个名为 index.php 的 PHP 文件,其中包含一个简单的留言板应用程序。这里使用简单的文本文件来保存留言内容。
<?php
$file = 'messages.txt';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['message'])) {
file_put_contents($file, $_POST['message'] . PHP_EOL, FILE_APPEND);
}
$messages = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) ?: [];
?>
<!DOCTYPE html>
<html>
<head>
<title>PHP Message Board</title>
</head>
<body>
<h1>Message Board</h1>
<form method="post" action="">
<input type="text" name="message" placeholder="Enter your message" required>
<button type="submit">Post</button>
</form>
<ul>
<?php foreach ($messages as $message): ?>
<li><?= htmlspecialchars($message); ?></li>
<?php endforeach; ?>
</ul>
</body>
</html>
2. Dockerize 应用程序:
创建名为 Dockerfile 的文件,用于构建 Docker 镜像。
FROM php:7.4-apache
COPY index.php /var/www/html/
EXPOSE 80
3. 构建 Docker 镜像:
在应用程序目录中执行以下命令构建 Docker 镜像。
docker build -t php-message-board:latest .
4. 部署 Redis:
在 Kubernetes 中创建 Redis 的 Deployment 和 Service。
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-deployment
spec:
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis-container
image: redis:latest
---
apiVersion: v1
kind: Service
metadata:
name: redis-service
spec:
selector:
app: redis
ports:
- protocol: TCP
port: 6379
5. 创建 PHP Deployment 和 Service:
apiVersion: apps/v1
kind: Deployment
metadata:
name: php-message-board-deployment
spec:
replicas: 2
selector:
matchLabels:
app: php-message-board
template:
metadata:
labels:
app: php-message-board
spec:
containers:
- name: php-message-board-container
image: php-message-board:latest
ports:
- containerPort: 80
env:
- name: REDIS_HOST
value: "redis-service"
---
apiVersion: v1
kind: Service
metadata:
name: php-message-board-service
spec:
selector:
app: php-message-board
ports:
- protocol: TCP
port: 80
type: LoadBalancer
在这个示例中,PHP 应用程序通过环境变量 REDIS_HOST 获取 Redis 服务的主机名。
6. 部署到 Kubernetes:
使用 kubectl apply 命令将上述 YAML 文件部署到 Kubernetes 集群。
kubectl apply -f redis-deployment.yaml
kubectl apply -f php-message-board-deployment.yaml
7. 获取外部 IP 地址:
等待 Service 的 EXTERNAL-IP 显示一个外部 IP 地址。
kubectl get services php-message-board-service
8. 访问 PHP 留言板应用程序:
使用浏览器或 curl 访问 PHP 留言板应用程序。
curl http://<EXTERNAL-IP>
这是一个简单的示例,可以通过添加更多功能、改进代码和增加安全措施来完善。此外,实际部署可能需要考虑持久化存储、访问控制、安全策略等方面的更多细节。
转载请注明出处:http://www.pingtaimeng.com/article/detail/9978/Kubernetes