Arquitetura
Como uma requisição chega ao WordPress de cursos, o que roda dentro do pod e quais comportamentos da imagem e dos plugins não são óbvios para quem for operar o site.
Caminho de uma requisição
-
A Cloudflare termina o TLS do visitante e repassa para a origem (OKE).
-
O
ingress-nginxdo cluster termina o TLS de origem e roteia peloHostpara o Servicewp-cursos. -
O nginx do pod responde direto os arquivos estáticos (imagens, CSS, JS, uploads) a partir do volume. Requisições
.php, e tudo que cai noindex.php, vão para o PHP-FPM. -
O PHP-FPM carrega o WordPress com os ~70 plugins ativos a cada requisição dinâmica: não há cache de objetos, então cada página não cacheada custa um worker inteiro.
-
O WordPress usa o MariaDB do mesmo namespace pelo Service
mariadb.
Componentes da aplicação
| Camada | Componente |
|---|---|
Tema |
Eduma 3.4.3 (ThimPress), usado pelo tema filho |
Construção de páginas |
WPBakery Page Builder ( |
LMS |
LearnPress 3.0 e 13 add-ons (certificados, gradebook, tarefas, pré-requisitos…) |
Venda e assinatura |
Paid Memberships Pro (integrado ao LearnPress) e WooCommerce. Há 4.271
pedidos LearnPress ( |
Contas |
Cadastro aberto ( |
Integrações externas |
Google Tag Manager ( |
Cache |
WP Fastest Cache (cache de página em disco) |
Banco de dados
Uma única instância MariaDB atende todos os WordPress legados:
| Banco | Prefixo | Uso |
|---|---|---|
|
|
cursos.artesmarciaisonline.com.br (ativo) |
|
|
sistemafuji.com.br (desligado) |
|
— |
antigo WordPress do apex, sem uso |
O usuário de aplicação (WORDPRESS_DB_USER) tem acesso aos três bancos. Um
comprometimento de qualquer site expõe os outros. Ao atualizar, crie um usuário por banco.
|
Comportamento do entrypoint da imagem
A imagem oficial wordpress:4.9.8-php7.2-fpm (de 2018) tem um comportamento que já causou
incidente:
A cada inicialização do container, o entrypoint reescreve DB_HOST, DB_NAME,
DB_USER e DB_PASSWORD dentro do wp-config.php existente usando as variáveis
WORDPRESS_DB_*, que vêm do Secret wp-cursos-db. O Secret é a fonte da verdade: editar
esses valores à mão no wp-config.php só dura até o próximo restart.
|
-
Em 21/09/2026, um rollout (ajuste do PHP-FPM) reiniciou o pod e o entrypoint gravou um
DB_NAMEerrado que estava no Secret desde a criação. O site passou a redirecionar para/wp-admin/install.php. O Secret foi corrigido em 24/09/2026. -
O entrypoint não mexe em
$table_prefix(iuxcl_) nem nos salts (AUTH_KEY…), que ficam só no arquivo. -
O
wp-config.phpvive no PVC, não na imagem. Trocar a imagem não descarta a configuração.
Cache e tarefas agendadas
-
Cache de página: o WP Fastest Cache grava o HTML pronto em
wp-content/cache/all/e o CSS/JS minificado emwp-content/cache/wpfc-minified/, ambos no PVC. Depois de qualquer mudança de conteúdo, tema ou plugin, limpe o cache (painel do plugin ou apagandowp-content/cache/all/). Durante o incidente, o cache servia páginas de spam. -
WP-Cron: não há cron de sistema. As tarefas agendadas do WordPress rodam quando um visitante dispara o
wp-cron.php. Com pouco tráfego elas atrasam; com muito tráfego, cada disparo ocupa um worker.
IP real do visitante
Dentro do cluster, o nginx do pod enxerga o IP interno do ingress-nginx, não o do visitante. O
IP real chega nos cabeçalhos X-Forwarded-For e CF-Connecting-IP (Cloudflare). Plugins que
bloqueiam por IP (All In One WP Security, limites de login) só funcionam se estiverem
configurados para ler esses cabeçalhos. Caso contrário, bloqueiam o próprio ingress ou não
bloqueiam ninguém.
Diferenças em relação ao ambiente anterior
| Aspecto | VM Azure (até 10/2026) | OKE (atual) |
|---|---|---|
Execução |
docker-compose numa VM única, junto com o PostgreSQL do FUJI |
Pods no cluster compartilhado com a produção do FUJI |
TLS |
certbot + nginx na VM |
Cloudflare na borda + cert-manager na origem |
Limites |
Sem limite de memória por container |
Limites rígidos por container (OOMKill ao estourar) |
Senha do banco |
No |
Só em Secrets |
Admin do banco |
phpMyAdmin publicado na porta 8080 |
Sem interface; |
Outros sites |
WordPress do apex, do sistemafuji e FTP no mesmo compose |
Apex estático; sistemafuji desligado; sem FTP |
O desenho anterior e as opções de escala vertical/horizontal estão em Arquitetura.