Como Configurar WordPress no Kubernetes
Vai que deseja um cluster de sites 😀
Um belo dia desses, estava eu vendo as imagens docker para um estudo em particular e me deparei com a imagem do WordPress. Achei legal e me perguntei: Quem seria o maluco de subir o WordPress em um Kubernetes, para criar um site?? Ri um pouco sozinho, mas deixei isso de lado.
Outro belo dia, eu recebo um e-mail para renovação do site da empresa (wordpress), passando de R$ 19,90 para R$ 24,90 por mês, pensei: Ta caro! (Aprendi com o Primo Pobre). Posso economizar colocando isso no meu cluster Kubernetes!! Baita ideia de maluco, mas quis tentar e confesso, apanhei pra colocar esse negocio pra rodar. 😀
Para alguém, que pensar como eu em economizar (É zueira tá?!?! Um cluster kubernetes pode te falir.) segue um passo a passo que fez isso funcionar. Atenção se for usar HTTPS.
Crie o volume do seu projeto
kind: PersistentVolume apiVersion: v1 metadata: name: nome-site labels: name: label-site spec: capacity: storage: 2Gi storageClassName: standard accessModes: - ReadWriteOnce gcePersistentDisk: pdName: nome-qualquer fsType: ext4
Crie as permissões desse volume
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nome-claim spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi
Caso precise fazer upload de arquivos maiores crie um ConfigMap para estender o uploads.ini
apiVersion: v1 kind: ConfigMap metadata: name: nome-config-map data: uploads.ini: |- file_uploads = On upload_max_filesize = 256M post_max_size = 256M memory_limit = 64M max_execution_time = 600
Atualize os parâmetros para o que for da sua necessidade.
Crie o deployment.
apiVersion: apps/v1 kind: Deployment metadata: name: nome-site labels: app: nome-site spec: selector: matchLabels: app: nome-site replicas: 1 template: metadata: labels: app: nome-site spec: containers: - name: nome-site image: wordpress:latest ports: - containerPort: 80 - containerPort: 443 env: - name: WORDPRESS_CONFIG_EXTRA value: | define('FORCE_SSL_ADMIN', true); $_SERVER['HTTPS']='on'; - name: WORDPRESS_DB_NAME value: nome-banco-dados - name: WORDPRESS_DB_HOST valueFrom: secretKeyRef: name: mysqldb key: mysql-host - name: WORDPRESS_DB_USER valueFrom: secretKeyRef: name: mysqldb key: mysql-user - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysqldb key: mysql-pass volumeMounts: - name: nome-volume mountPath: /var/www/html - name: config-map mountPath: /usr/local/etc/php/conf.d/uploads.ini subPath: uploads.ini volumes: - name: nome-volume persistentVolumeClaim: claimName: nome-clain - name: config-map configMap: defaultMode: 420 name: nome-config-map
Veja nesse arquivo que estou fazendo uso de secrets, configure as suas!
Faça o apontamento dos volumes e config maps de forma correta.
Nesse arquivo, tem um trecho WORDPRESS_CONFIG_EXTRA essa foi a parte que mais apanhei, pois o WordPress não mostra as imagens quando seu site utilizar uma requisição HTTPS. Para isso, você tem que definir uma variável de ambiente setando alguns valores.
- FORCE_SSL_ADMIN = true;
- $_SERVER[‘HTTPS’]=’on’;
Com isso seu WordPress vai funcionar lindamente no kubernetes.
Lembre – se que vai ter de criar o service, ingress e o que for necessário para acesso externo.
Espero ter ajudado a pelo menos entender um pouco mais da estrutura do Kubernetes e dos milagres que ele pode fazer.
E lembrando que existe e-comerce rodando com ele e pode precisar de escala, resiliencia e tudo mais que um Kubernetes oferece. Meu pensamento foi para blog e sites. WordPress funciona e bem.
Se existe algo mais fácil, compartilha ai!
Software de qualidade é aquele que deixa seu cliente satisfeito.
Deixe uma resposta
Want to join the discussion?Feel free to contribute!