// users.php
function getUser($id) {
// Query user data from the database
// ...
return $user;
}
function createUser($data) {
// Create a new user
// ...
return $userId;
}
1. Create a Laravel project:
$ composer create-project --prefer-dist laravel/laravel user-service
2. Define a UserController:
// app/Http/Controllers/UserController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function show($id)
{
$user = getUser($id);
return response()->json($user);
}
public function store(Request $request)
{
$data = $request->input('data');
$userId = createUser($data);
return response()->json(['id' => $userId]);
}
}
3. Configure API routes:
// routes/api.php
use App\Http\Controllers\UserController;
Route::get('/users/{id}', [UserController::class, 'show']);
Route::post('/users', [UserController::class, 'store']);
1. Package the service using Docker:
FROM php:7.4-apache
# Install PHP extensions
RUN docker-php-ext-install pdo_mysql
# Copy application code
COPY . /var/www/html
# Set up Apache configuration
COPY docker/apache2.conf /etc/apache2/apache2.conf
CMD ["apache2-foreground"]
2. Kubernetes deployment configuration:
# user-service.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: user-service
spec:
replicas: 3
selector:
matchLabels:
app: user-service
template:
metadata:
labels:
app: user-service
spec:
containers:
- name: user-service
image: user-service:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: user-service
spec:
selector:
app: user-service
ports:
- protocol: TCP
port: 80
targetPort: 80
3. Deploy with kubectl:
$ kubectl apply -f user-service.yaml