Implantação de PHP no Kubernetes: guia básico para desenvolvedores

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Implantação de PHP no Kubernetes: guia básico

O desenvolvimento web moderno cada vez mais exige soluções escaláveis e tolerantes a falhas. O Kubernetes (K8s) tornou-se o padrão de facto para orquestração de contêineres. Se você é um desenvolvedor PHP e quer aprender a implantar suas aplicações no Kubernetes — este guia é para você. Vamos percorrer o caminho desde a criação da imagem Docker até a implantação de um serviço PHP completo no cluster.



Por que implantar PHP no Kubernetes?

O Kubernetes oferece uma série de vantagens para aplicações PHP:

  • Escalonamento automático: O K8s pode aumentar o número de pods quando a carga cresce e diminuí-los quando ela cai.
  • Auto-recuperação: Se um contêiner falhar, o Kubernetes o reinicia automaticamente.
  • Gerenciamento de configuração: Variáveis de ambiente e arquivos de configuração são facilmente centralizados através de ConfigMap e Secrets.
  • Simplicidade nas atualizações: Rolling updates permitem atualizar a aplicação sem tempo de inatividade.

Para o PHP, isso é especialmente relevante, pois muitos projetos legados são difíceis de escalar com métodos tradicionais.



Passo 1: Containerização da aplicação PHP

Antes de implantar a aplicação no Kubernetes, é necessário empacotá-la em uma imagem Docker. Vamos considerar um exemplo de uma aplicação PHP simples usando Nginx e PHP-FPM.



Criando a estrutura do projeto

my-php-app/├── src/│   └── index.php├── docker/│   ├── nginx/│   │   └── default.conf│   └── php/│       └── Dockerfile└── docker-compose.yml


Exemplo de src/index.php

<?phpecho "Hello from PHP on Kubernetes!";phpinfo();?>


Dockerfile para PHP-FPM

FROM php:8.2-fpm-alpine

RUN docker-php-ext-install pdo pdo_mysql

COPY src/ /var/www/html/

EXPOSE 9000CMD ["php-fpm"]


Configuração do Nginx (docker/nginx/default.conf)

server {    listen 80;    server_name localhost;    root /var/www/html;

location / { try_files $uri $uri/ /index.php?$query_string; }

location ~ \\.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}


Construção da imagem

docker build -t my-php-app:latest -f docker/php/Dockerfile .


Passo 2: Escrevendo os manifestos do Kubernetes

Agora que a imagem está pronta, vamos criar os manifestos para implantação no cluster.



Deployment para PHP-FPM

apiVersion: apps/v1kind: Deploymentmetadata:  name: php-app  labels:    app: php-appspec:  replicas: 3  selector:    matchLabels:      app: php-app  template:    metadata:      labels:        app: php-app    spec:      containers:      - name: php-fpm        image: my-php-app:latest        ports:        - containerPort: 9000        env:        - name: DB_HOST          value: "mysql-service"        - name: DB_NAME          value: "mydb"        resources:          requests:            memory: "128Mi"            cpu: "250m"          limits:            memory: "256Mi"            cpu: "500m"


Deployment para Nginx

apiVersion: apps/v1kind: Deploymentmetadata:  name: nginx  labels:    app: nginxspec:  replicas: 2  selector:    matchLabels:      app: nginx  template:    metadata:      labels:        app: nginx    spec:      containers:      - name: nginx        image: nginx:alpine        ports:        - containerPort: 80        volumeMounts:        - name: nginx-config          mountPath: /etc/nginx/conf.d      volumes:      - name: nginx-config        configMap:          name: nginx-config


ConfigMap para a config

Blogs

Book Recommendations