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 SSH o container operacional da wiki
Atualizar a imagem do logo da wiki
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