WordPress é um dos sistemas de gerenciamento de conteúdo mais populares usados para implantar blogs e sites na internet. Também está disponível como uma imagem Docker no registro DockerHub. Você pode usar esta imagem Docker para construir uma plataforma de site confiável e escalável no cluster Kubernetes. A implantação do WordPress no Kubernetes ajudará você a implementar o pipeline de CI/CD e reduzirá o tempo necessário para lançar novas atualizações. Você também pode ativar o dimensionamento horizontal do site WordPress para lidar com picos de tráfego no site.
Este guia mostrará como implantar o WordPress e o MySQL com um Persistent Volume no cluster Kubernetes.
Pré-requisitos
- Uma compreensão básica do Kubernetes (k8s) e de seus objetos. Consulte este guia para obter uma visão geral detalhada do ecossistema Kubernetes.
- Um cluster Kubernetes está ativo e em execução. Siga este tutorial para instalar o cluster Kubernetes no Ubuntu 20.04.
Verificar o Cluster Kubernetes
Antes de começar, é recomendável verificar o status do cluster Kubernetes. Você pode usar o comando kubectl para verificar o Kubernetes.
|
1 |
kubectl get nodes |
Se tudo estiver correto, você deverá obter a seguinte saída.

Criar um Secret para o MySQL
Um Secret é um objeto que permite armazenar dados confidenciais, como uma senha ou chave. Neste post, usaremos o Secret para armazenar a senha do MySQL.
Primeiro, crie uma senha codificada em base64 usando o seguinte comando.
|
1 |
echo -n 'your_secure_password' | base64 |
Você obterá sua senha secreta na seguinte saída.
|
1 |
eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Em seguida, crie um arquivo secret.yaml para o MySQL e o WordPress.
|
1 |
nano secret.yaml |
Adicione a seguinte configuração.
|
1 2 3 4 5 6 7 |
apiVersion: v1 kind: Secret metadata: name: mysql-pass type: Opaque data: password: eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Save and close the file. Then, apply the above configuration to the Kubernetes cluster using the following command.
|
1 |
kubectl apply -f secret.yaml |
Você obterá a seguinte saída.
|
1 |
secret/mysql-pass criado |
Criar um PersistentVolume para o MySQL e o WordPress
Você também precisará criar um PersistentVolume para armazenar os dados do MySQL e do WordPress.
Vamos criar um arquivo pvc-mysql-wp.yaml .
|
1 |
nano pvc-mysql-wp.yaml |
Adicione as seguintes configurações.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 40Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wp-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 40Gi |
Salve e feche o arquivo quando terminar.
Em seguida, crie os PersistentVolumes para o MySQL e o WordPress no cluster Kubernetes usando o seguinte comando.
|
1 |
kubectl apply -f pvc-mysql-wp.yaml |
Você deve ver ambos os PersistentVolumes na seguinte saída.
|
1 2 |
persistentvolumeclaim/mysql-pv-claim criado persistentvolumeclaim/wp-pv-claim criado |
Agora você pode verificar ambos os PersistentVolumes usando o seguinte comando.
|
1 |
kubectl get pv |
Você deve ver a seguinte saída.
|
1 2 3 |
NOME CAPACIDADE ACESSO MODOS RECUPERAÇÃO POLÍTICA STATUS REIVINDICAÇÃO STORAGECLASS MOTIVO IDADE pvc-873a458352594103 40Gi RWO Excluir Vinculado default/wp-pv-claim seu-block-storage 3s pvc-de7d7de5e53a40e8 40Gi RWO Excluir Vinculado default/mysql-pv-claim seu-block-storage 3s |
Criar Deployment do MySQL
Em seguida, crie um arquivo de configuração de deployment do MySQL para baixar a imagem Docker do MySQL, criar um container e montar o PersistentVolume em /var/lib/mysql.
|
1 |
nano mysql-deployment.yaml |
Adicione a seguinte configuração.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
apiVersion: v1 kind: Service metadata: name: wordpress-mysql labels: app: wordpress spec: ports: - port: 3306 selector: app: wordpress tier: mysql clusterIP: None --- apiVersion: apps/v1 kind: Deployment metadata: name: wordpress-mysql labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: mysql strategy: type: Recreate template: metadata: labels: app: wordpress tier: mysql spec: containers: - image: mysql:5.6 name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim |
Salve e feche o arquivo quando terminar. Em seguida, implante a configuração acima no cluster Kubernetes.
|
1 |
kubectl apply -f mysql-deployment.yaml |
Você deve ver a seguinte saída.

Você pode verificar a implantação do MySQL usando o seguinte comando.
|
1 |
kubectl get deployments |
Você deve ver o status da implantação do MySQL na seguinte saída.

Criar implantação do WordPress
Agora, crie um arquivo de configuração de implantação do WordPress para baixar a imagem do WordPress, criar um contêiner e montar o PersistentVolume em /var/www/html para os arquivos de dados do site. Este arquivo também criará as WORDPRESS_DB_HOST e WORDPRESS_DB_PASSWORD variáveis de ambiente para acessar o banco de dados.
|
1 |
nano wordpress-deployment.yaml |
Adicione a seguinte configuração.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
apiVersion: v1 kind: Service metadata: name: wordpress labels: app: wordpress spec: ports: - port: 80 selector: app: wordpress tier: frontend type: LoadBalancer --- apiVersion: apps/v1 # para versões anteriores a 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: wordpress labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: frontend strategy: type: Recreate template: metadata: labels: app: wordpress tier: frontend spec: containers: - image: wordpress:4.8-apache name: wordpress env: - name: WORDPRESS_DB_HOST value: wordpress-mysql - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 80 name: wordpress volumeMounts: - name: wordpress-persistent-storage mountPath: /var/www/html volumes: - name: wordpress-persistent-storage persistentVolumeClaim: claimName: wp-pv-claim |
Salve o arquivo após terminar. Em seguida, aplique a configuração acima ao cluster Kubernetes usando o seguinte comando.
|
1 |
kubectl apply -f wordpress-deployment.yaml |
Você deverá ver uma mensagem de implantação bem-sucedida na seguinte saída.
|
1 2 |
service/wordpress criado deployment.apps/wordpress criado |
Para verificar a implantação do WordPress, execute o seguinte comando.
|
1 |
kubectl get deployments |
Você deverá ver o status da implantação do WordPress na seguinte saída.

Acessar a Interface Web do WordPress
Para acessar o painel do WordPress, você precisará do IP externo e do número da porta do LoadBalancer. Você pode recuperar essas informações usando o seguinte comando.
|
1 |
kubectl get svc |
Você obterá o IP e a porta do LoadBalancer na seguinte saída.
|
1 2 3 4 |
NOME TIPO CLUSTER-IP EXTERNO-IP PORTA(S) IDADE kubernetes ClusterIP 10.96.0.1 <nenhum> 443/TCP 29m wordpress LoadBalancer 10.100.80.70 78.141.194.181 80:31624/TCP 3m6s wordpress-mysql ClusterIP Nenhum <nenhum> 3306/TCP 4m14s |
Para obter informações detalhadas sobre seus pods do WordPress, execute o seguinte comando.
|
1 |
kubectl describe svc wordpress |
Você deverá obter informações detalhadas do WordPress na seguinte saída.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Nome: wordpress Namespace: default Labels: app=wordpress Anotações: <nenhum> Seletor: app=wordpress,tier=frontend Tipo: LoadBalancer Política de Família de IP: SingleStack Famílias de IP: IPv4 IP: 10.100.80.70 IPs: 10.100.80.70 Ingresso do LoadBalancer: 78.141.194.181 Porta: <não definido> 80/TCP TargetPort: 80/TCP NodePort: <não definido> 31624/TCP Endpoints: 10.244.23.66:80 Afinidade de Sessão: Nenhum Política de Tráfego Externo: Cluster |
Agora, abra o seu navegador web e acesse a página de instalação do WordPress usando a URL http://78.141.194.181:3162. Você deverá ver a página de instalação do WordPress na tela seguinte.

Selecione o seu idioma e conclua as etapas necessárias para finalizar o processo de instalação.
Conclusão
Neste post, explicamos como implantar o MySQL e o WordPress com o volume persistente no cluster Kubernetes. Você também pode dimensionar sua implantação do WordPress com base no tráfego do seu site. Agora você pode usar a implantação acima dependendo das suas necessidades de desenvolvimento.
Além disso, dê uma olhada em nossos outros tutoriais focados em Docker e Kubernetes que você pode encontrar em nosso blog:
Comentários
Nenhum comentário ainda. Seja o primeiro.