Adicionados dinamicamente plugins Wordpress ao Kubernetes

3

Se eu estiver executando o Wordpress em um ambiente do Kubernetes, onde o código é parte de uma imagem do Docker e alguém tenta adicionar um plug-in através do administrador do Wordpress, não espero que funcione muito bem, pois o plug-in será só será instalado no container que é atingido quando eles adicionam o plugin, certo?

A minha abordagem de criar o código em uma imagem é um passo em falso? Outra abordagem que considerei foi um volume que contém o código, o qual lidaria bem com esse caso de uso. Existe uma discussão sobre essas coisas que eu poderia ler em algum lugar?

    
por quickshiftin 03.04.2018 / 17:12

1 resposta

2

Assumindo que você é necessário para permitir que os usuários do wordpress instalem / atualizem plug-ins, a gravação do wordpress em uma imagem do Docker não funcionará: você permite que o aplicativo seja atualizou somente distribuindo uma nova imagem do docker ou não. O que você quer fazer permite que as atualizações de aplicativos sejam fornecidas por duas fontes.

Se você não tem esse requisito, basta adicionar:

define(‘DISALLOW_FILE_MODS’,true);

para wp-config.php e você está pronto para ir. Certifique-se de que, ao atualizar sua imagem do Docker com uma nova versão do Wordpress, o esquema do banco de dados seja atualizado de acordo e todas as versões do Wordpress atualmente em execução possam usar esse esquema de db.

Se você não puder desativar a instalação / atualização do plug-in, precisará resolver dois problemas:

1) Você precisa ter todos os contêineres acessando a mesma instalação do wordpress.

Arquivos em disco em um contêiner são efêmeros, o que significa que quando um contêiner falha, o kubelet o reinicia, mas os arquivos serão perdidos - toda vez que você obter uma lista limpa.

Uma solução típica para esse problema é criar um volume apenas para armazenar sua instalação do wordpress e montá-lo em todos os contêineres no Pod, assim:

volumes:
  - name: wp-webroot
    emptyDir: {}

- name: wp-container
    image: wp
    volumeMounts:
    - name: wp-webroot
      mountPath: /var/www/html

- name: wp-container2
    image: wp
    volumeMounts:
    - name: wp-webroot
      mountPath: /var/www/html

Mais informações:

link

2) Você precisa tornar o armazenamento do volume compartilhado confiável / redundante. O Kubernetes oferece muitas opções que variam dependendo de onde você está executando a instalação do Kubernetes. Se você estiver em uma nuvem pública, use o que a nuvem disponibilizar (por exemplo, EFS na AWS), se você estiver no local, talvez queira investigar o glusterfs ou, se tiver uma SAN existente, usá-la.

Mais informações em: link

Em relação à sua solicitação de alguma bibliografia sobre o tópico, você encontrará muitos documentos informando que sua inscrição deve fazer parte da imagem, por exemplo, ponto # 7 em:

link

mas, novamente, isso pressupõe que o aplicativo só possa ser atualizado / modificado pelo administrador, não pelos usuários finais. Você deve contextualizar as sugestões que você encontra na Web para seus requisitos específicos.

    
por 18.04.2018 / 10:30