Orientação - Configurar container Kubernete da Wiki Redome
Toda a documentação da plataforma Redome é mantida no presente portal, o qual é uma instância de um pacote de software livre e código aberto (escrito em PHP) para wikis denominado MediaWiki. Este ambiente de documentação opera dentro de um container Linux que é gerenciado com tecnologia Kubernetes, o qual é uma plataforma open source que automatiza as operações dos containers. Kubernetes implementa todos os mecanismos de alta disponibilidade, isolamento e alta performance de clusters tradicionais.
Índice
Comandos básicos
Iniciar cluster:
bx cs init
Configurar variável de ambiente:
export KUBECONFIG=/root/.bluemix/plugins/container-service/clusters/mycluster/kube-config-dal10-mycluster.yml
Listar os clusters disponíveis
bx cs clusters
Obter informação detalhada da configuração de um cluster
bx cs cluster-get [cluster name]
Listar as images de containers docker disponíveis para uso
bx cr images
Listar os deployments publicados em um cluster
kubectl get deployments [cluster name]
Listar os pods publicados em um cluster
kubectl get pods [cluster name]
Listar os serviços publicados em cluster
bx cs cluster-services [cluster name]
Acessar a configuracao do volume de armazenamento da wiki
kubectl describe pvc fcancer-pvc-file-bronze
Criar/Atualizar a configuração de um deployment/pod/serviço/volume
kubectl apply -f [arquivo.yaml]
Remover a configuração de um deployment/pod/serviço/volume
kubectl delete -f [arquivo.yaml]
Acessar via FTP os locais de armazenamento da wiki
Todo conteúdo publicado nesta wiki é armazenado em um sistema de arquivos NFS. A rigor, o conteúdo das páginas são gravados em um bando de dados (SQLite). O SQLite é software livre de domínio público e multiplataforma que implementa um mecanismo de armazenamento seguro com transações ACID. Este SGBD suporta bases de dados de até 2 terabytes.
Os arquivos do SQLite estão armazenados no seguinte diretório:
/data/
Os arquivos carregados na wiki por meio do processo de upload (ex. imagens) também são armazenados no sistema de arquivos NFS, no entanto, no seguinte diretório:
/images/
Para ter acesso ao sistema de arquivos NFS, é necessário utilizar um cliente FTP, em modo ativo. Utilize as credenciais a seguir:
Servidor: 169.60.198.125 Login: admin Password: passw0rd
Acessar via Shell o container operacional da wiki
Para abrir um shell para o container aonde estão os arquivos de instalação da wiki, basta executar o comando a seguir:
kubectl exec -it <pod-name> -- /bin/bash
Atualizar a imagem do logo da wiki
Por padrão, o mediawiki mostra como logo a imagem que está localizada dentro do diretório de instalação da wiki. Na instalação deste portal, o caminho para esta imagem é o seguinte:
/var/www/mediawiki/resources/assets/wiki.png
Caso seja preciso recriar/atualizar o container com a imagem docker do mediawiki (wiki-deployment.yaml), então será necessário atualizar a logo do Redome na wiki. A imagem do logo do Redome fica amazenada no seguinte diretório do sistema de arquivos NFS:
/images/wiki.png
Para informar a wiki que esta é imagem que deve ser colocada no logo, basta criar um link simbólico entre a imagem padrão e a imagem do logo do Redome. Para isso, acesse o container utilizando o seguinte comando:
kubectl exec -it <pod-name> -- /bin/bash
E para criar o link simbólico, execute o comando a seguir:
ln -sf /images/wiki.png /var/www/mediawiki/resources/assets/wiki.png
Arquivos YAML para configuração da wiki no Kubernete
Criar o volume para armazenamento de dados (SQLLite)
Nome do arquivo: wiki-data-persistentvolumeclaim.yaml
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wiki-claim-data labels: app: mediawiki io.kompose.service: wiki-claim-data annotations: volume.beta.kubernetes.io/storage-class: "ibmc-file-bronze" spec: accessModes: - ReadWriteMany resources: requests: storage: 20Gi
Criar o volume para armazenamento das imagens
Nome do arquivo: wiki-images-persistentvolumeclaim.yaml
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wiki-claim-images labels: app: mediawiki io.kompose.service: wiki-claim-images annotations: volume.beta.kubernetes.io/storage-class: "ibmc-file-bronze" spec: accessModes: - ReadWriteMany resources: requests: storage: 20Gi
Ativar o serviço FTP no container
Nome do arquivo: wiki-ftp.yaml
apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: app: ftp name: ftp spec: replicas: 1 strategy: type: Recreate template: metadata: creationTimestamp: null labels: app: ftp spec: containers: - env: - name: FTP_USER value: admin - name: FTP_PASS value: passw0rd - name: PASV_ADDRESS value: 169.60.198.125 image: bogem/ftp name: ftp ports: - containerPort: 20 - containerPort: 21 resources: {} volumeMounts: - mountPath: /home/vsftpd/images name: wiki-claim-images - mountPath: /home/vsftpd/data name: wiki-claim-data restartPolicy: Always volumes: - name: wiki-claim-images persistentVolumeClaim: claimName: wiki-claim-images - name: wiki-claim-data persistentVolumeClaim: claimName: wiki-claim-data status: {} --- apiVersion: v1 kind: Service metadata: name: ftp spec: type: LoadBalancer ports: - name: "20" port: 20 targetPort: 20 - name: "21" port: 21 targetPort: 21 selector: app: ftp
Publicar o container com imagem docker do mediawiki
Nome do arquivo: wiki-deployment.yaml
apiVersion: extensions/v1beta1 kind: Deployment metadata: annotations: kompose.cmd: kompose convert -f docker-compose.yml kompose.version: 1.5.0 () creationTimestamp: null labels: io.kompose.service: wiki name: wiki spec: replicas: 1 strategy: type: Recreate template: metadata: creationTimestamp: null labels: io.kompose.service: wiki spec: containers: - env: - name: MEDIAWIKI_DB_NAME value: wikidb - name: MEDIAWIKI_DB_TYPE value: sqlite - name: MEDIAWIKI_DEBUG value: "1" - name: MEDIAWIKI_DEFAULT_SKIN value: vector - name: MEDIAWIKI_ENABLE_UPLOADS value: "1" - name: MEDIAWIKI_ENABLE_VISUAL_EDITOR value: "1" - name: MEDIAWIKI_LANGUAGE_CODE value: pt-br - name: MEDIAWIKI_SERVER value: http://mycluster-824593.us-south.containers.mybluemix.net - name: MEDIAWIKI_SITENAME value: Redome - name: MEDIAWIKI_SMTP value: "1" - name: MEDIAWIKI_SMTP_HOST value: "smtp.gmail.com" - name: MEDIAWIKI_SMTP_IDHOST value: "gmail.com" - name: MEDIAWIKI_SMTP_PORT value: "587" - name: MEDIAWIKI_SMTP_AUTH value: "1" - name: MEDIAWIKI_SECRET_KEY value: "cef7f7518e429c9a91ab4800d7e1f6fd95e726a3769e9927b51719d2a87eebf3" - name: MEDIAWIKI_SMTP_USERNAME value: "mod.redome@cancer.org.br" - name: MEDIAWIKI_SMTP_PASSWORD value: "C@ncer2017." image: kristophjunge/mediawiki name: wiki ports: - containerPort: 80 resources: {} volumeMounts: - mountPath: /images name: wiki-claim-images - mountPath: /data name: wiki-claim-data restartPolicy: Always volumes: - name: wiki-claim-images persistentVolumeClaim: claimName: wiki-claim-images - name: wiki-claim-data persistentVolumeClaim: claimName: wiki-claim-data status: {}
Ativar o serviço HTTP no container
Nome do arquivo: wiki-service.yaml
apiVersion: v1 kind: Service metadata: annotations: kompose.cmd: kompose convert -f docker-compose.yml kompose.version: 1.5.0 () creationTimestamp: null labels: io.kompose.service: wiki name: wiki spec: ports: - name: "80" port: 80 targetPort: 80 selector: io.kompose.service: wiki --- apiVersion: extensions/v1beta1 kind: Ingress metadata: name: mediawiki-ingress spec: rules: - host: mycluster-824593.us-south.containers.mybluemix.net http: paths: - path: / backend: serviceName: wiki servicePort: 80