Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
#+TITLE: Wiki Novo deploy para a Wiki. * Arquitetura do projeto Nesse projeto existem as seguintes coisas: 1) Um arquivo Dockerfile para gerar uma imagem customizada da Mediawiki. 2) Um arquivo .gitlab-ci.yml para configurar uma carga de trabalho de Integração Contínua. 3) Pacotes releases de plugins utilizados pelo Tribunal para o Mediawiki. 4) Arquivos template de configuração de /deploy/, /service/ e /ingress/ para configuração do software no Kubernetes. ** Construção da imagem A construção da imagem customizada da Mediawiki tem como partida a versão mais recente da Mediawiki na época da atualização da Wiki (v1.40, de Outubro de 2023). A receita Dockerfile utiliza um script para construir localmente (na imagem) software para realização de tarefas LDAP. Além disso, o mesmo arquivo Dockerfile instala manualmente na imagem um número de dependências requeridas pelo uso do Tribunal. São elas: - mediawiki-extensions-LDAPAuthentication2-2.0.0.tar.gz - mediawiki-extensions-LDAPProvider-2.0.0.tar.gz - MobileFrontend-REL1_40-6d77c0b.tar.gz - PluggableAuth-REL1_40-764e1ec.tar.gz - Foreground-REL1_40-cd870ce.tar.gz - Vector-REL1_40-31f26e6.tar.gz Existe incompatibilidade entre a versão de alguns desses pacotes e a versão mais recente da Mediawiki verificado na data 23-05-2024. ** Configuração do deploy no Kubernetes O arquivo que configura a pipeline CI no Gitlab é o .gitlab-ci.yml. Os jobs são: - *build*: constrói a imagem customizada da Mediawiki a partir do Dockerfile nesse repositório e copia a imagem para o repositório de imagens Docker do Tribunal. - *deploy_homolog*: invoca *helm* para construir o artefato desejado, que é o yaml para configuração do software no Kubernetes. Também instala a aplicação no Kubernetes. - *stop_homolog*: invoca *helm* para desinstalar a aplicação do Kubernetes. Esse job é manual. - *deploy_prod*: invoca *helm* para construir o artefato desejado, que é o yaml para configuração do software no Kubernetes. Também instala a aplicação no Kubernetes. Esse job é manual. - *stop_prod*: invoca *helm* para desinstalar a aplicação do Kubernetes. Manual. *** Nota importante sobre implementação da Mediawiki O projeto Mediawiki armazena binários, como imagens, vídeos, etc., utilizados pelas páginas da wiki em um sistema de arquivos e o caminho para esses artefatos é armazenado em uma tabela no banco de dados da aplicação. O armazenamento dos binários fica em um disco virtual representado por um PV (Persisten Volume) no Kubernetes. O arquivo template de deploy especifica um PVC (Persistent Volume Claim) para utilizar o NFS. Esse arquivo está no caminho ./chart/wiki/templates/wiki-deploy.yaml. O *caminho e credenciais* para acesso ao banco de dados são especificados em variáveis de ambiente no Gitlab e resgatados pela aplicação através da função 'getenv()' no arquivo 'LocalSettings.php', que é copiado para imagem customizada na ocasião de sua criação. Esse arquivo configura a aplicação. Após cada atualização do Mediawiki é necessário verificar se o esquema de banco de dados precisa de alguma atualização. Essa atualização pode ser feita pela interface Web ou através da execução do script php que fica no caminho /var/www/html/maintenance/update.php. Instruções para como realizar a atualização está na [[https://www.mediawiki.org/wiki/Manual:Update.php/pt-br][documentação]] da Mediawiki. *** Sumário de ações necessárias para aplicar a atualização - Construir o PV para a nova versão da Wiki. Aqui deve-se garantir que somente o conteúdo de imagens/, do antigo NFS, i.e., os diretórios e arquivos dentro de imagens/ e somente eles sejam copiados para o PV, porque o arquivo de deploy monta o diretório '/var/www/html/images' no PV. - As variáveis em .gitlab-ci.yaml devem ser verificadas e deve-se confirmar que as variáveis de ambiente configuradas no Gitlab estejam corretas. - Pode-se utilizar o Dockerfile neste repositório para construir uma imagem local para executar o script de atualização do esquema de banco de dados. #+begin_src sh # Constrói a imagem. docker build --progress=plain -t wiki-img . # Faz login no container. docker run -e DB_SERVER="db_server" -e DB_NAME="db_name" -e DB_USER="db_user" -e DB_PASSWORD="db_password" --rm -it wiki-img bash # Executa o script de atualização. php maintenance/run.php update #+end_src - Após qualquer modificação eventual de configuração, fazer commit, criar tag e subir para o repositório remoto. O deploy de produção é ativado manualmente.