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.

 

0 respostas

Deixe uma resposta

Want to join the discussion?
Feel free to contribute!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *