Sobre
Este repositório hospeda um aplicativo Python muito simplista usado para demonstração dos recursos da plataforma OpenShift. Esta aplicação usa:
- Flask - Web Micro-framework
- PyMongo - MongoDB Interface
Capacidades
- Criação de um aplicativo Python usando Source-to-Image
- Uso de Secret e ConfigMap para personalizar o comportamento do aplicativo
- Integração através da camada de serviço (Service Discovery com base no DNS)
- Escalabilidade horizontal do componente de frontend (web), sem afetar o componente de backend (db)
- Uso de Pipeline com Jenkins
Roteiro de Demonstração
- Crie um projeto para hospedar o aplicativo e seus recursos:
$ oc new-project demo-openshift
- Crie o componente de frontend (web) do aplicativo:
$ oc new-app https://github.com/redhat-sa-brazil/demo-openshift-python.git' --name='web'
- Exponha uma rota pública para o componente web e teste-o:
$ oc expose service/web --hostname='demo.apps.ocp.acme.com'
- Escale o component:
$ oc scale dc web --replicas=2
- Crie o ConfigMap e verifique se o componente web será redistribuído:
$ oc create -f extras/web-configmap.yaml
- Atualize o DeploymentConfig do componente da Web para usar o ConfigMap e valide o resultado (/webconfig):
> Use a GUI para demonstrar simplicidade.
- Implante o componente db-tier com base no modelo MongoDB Persistent:
> Use a GUI para demonstrar outra maneira de criar componentes usando o catálogo e os modelos.
- Atualize o DeploymentConfig Web para usar o Secret com as credenciais do MongoDB e valide o resultado:
$ oc set env --from=secret/mongodb dc/web
- Demonstrar a capacidade de auto-recuperação (ReplicationController) e como os dados do contêiner DB não são afetados:
$ oc delete pod mongodb-(...)
$ oc delete pod web-(...)
- Mostre que o OpenShift provisionou não apenas o contêiner MongoDB, mas também a persistência necessária automaticamente:
$ oc get pvc
- Desativar 'deployment triggers' para novas tags ImageStream:
> Use a GUI para demonstrar como devemos modificar os parâmetros do DeploymentConfig.
- Crie o CI/CD em contêiner com base em Jenkins e demonstre sua execução:
$ oc create -f extras/web-pipeline.yaml
$ oc start-build web-pipeline
- Configure o Github Webhook no BuildConfig web-pipeline e demonstre novamente o fluxo de trabalho CI/CD:
> Use a GUI para configurar o webhook e criar um commit no repositório do GitHub.
- Demonstrar as capacidades de Métricas e Logging já incluídas no OpenShift:
> Use a GUI para acessar as informações de Monitoramento, Logs e Métricas.
- Limpe tudo:
$ oc delete project demo-openshift