Participe da Maratona Behind the Code! A competição de programação que mais te desafia! Inscreva-se aqui

Um guia do mochileiro para o OpenShift

Este documento fornece um glossário, links e guias para tópicos sobre o OpenShift. Ele é um guia para desenvolvedores, criado por desenvolvedores que estão trabalhando com o Red Hat® OpenShift® on IBM Cloud™.

O OpenShift é descrito como “A distribuição do Kubernetes adequada para o desenvolvedor e as operações”. Ele é executado por cima do Kubernetes (as versões anteriores do OpenShift manipulavam a orquestração de contêiner usando um mecanismo diferente). O OpenShift fornece ferramentas que ajudam os desenvolvedores e as equipes de operações a executar cargas de trabalho conteinerizadas. No plano de fundo, o OpenShift é desenvolvido com Origin Kubernetes Distribution (OKD), que inclui o Kubernetes e outros projetos de software livre como Docker e Istio.

As seções a seguir estão organizadas em ordem alfabética. Em honra de Douglas Adams, autor da série O Guia do Mochileiro das Galáxias, nós o aconselhamos: “Não entre em pânico!”

Um guia do mochileiro para o OpenShift

Aplicativo

“Aplicativo” está se tornando um termo saturado à medida que o OpenShift evolui. Embora antigamente fosse um conceito concreto, ele não representa mais um único objeto subjacente no mundo do OpenShift. Entretanto, “aplicativo” subsiste no console e na linha de comandos como um tipo de agrupamento conveniente de determinados recursos de uma carga de trabalho. A CLI oc new-app cria vários componentes, como uma Implementação e um Fluxo de Imagem, a partir de um local de imagem ou código-fonte existente, e uma configuração de serviço e a rota, se uma porta for especificada.

CI/CD com Jenkins ou Tekton

Você tem algumas opções ao implementar a integração contínua e a entrega contínua (CI/CD). Um aplicativo amplamente usado para configurar a entrega contínua, o Jenkins é fornecido como um contêiner de certificado no OpenShift. É possível usá-lo para construir pacotes, executar testes de unidade e de integração e implementar imagens.

Outra ferramenta de software livre promissora para construir pipelines, Tekton fornece uma maneira de nuvem nativa para executar muitas das mesmas operações.

Ferramentas de linha de comandos

  • buildah: buildah é uma ferramenta para construir imagens baseadas em CRI-O, muito semelhante ao Podman. O buildah é composto essencialmente por um superconjunto dos comandos de desenvolvimento disponíveis por meio do Podman, permitindo um controle mais adequado na criação de imagens.

  • kubectl: kubectl é a ferramenta de linha de comandos padrão para controlar clusters Kubernetes. Como o OpenShift 3.x e as versões mais recentes são baseados no Kubernetes, kubectl está disponível para uso em cada cluster do OpenShift.

  • oc: oc é a CLI do OpenShift Client, que pode ser usada para manipular construções nativas do OpenShift como objetos de primeira classe (incluindo projetos, aplicativos, rotas e Fluxos de Imagem). Como o OpenShift inclui esses elementos por cima do Kubernetes, oc é necessário para criar interface com recursos específicos do OpenShift.

  • odo: odo é “OpenShift do” – uma ferramenta de linha de comandos para simplificar operações comuns. Ele é destinado a desenvolvedores (e não às operações), permitindo que eles implementem e iterem rapidamente no código.

  • s2i: s2i é uma ferramenta de linha de comandos para combinar uma imagem do construtor a partir de um repositório de código-fonte do GitHub de origem. A saída é uma imagem do Docker executável. A imagem do construtor é semelhante a um modelo, com scripts incorporados para obter o código-fonte e compilá-lo em um aplicativo executável.

Fluxos de imagem

Fluxos de imagem são uma abstração que permite que o OpenShift implemente aplicativos de um registro de imagem público, enquanto implementa dinamicamente novas versões de imagem à medida que elas entram no registro. É possível configurar construções e implementações para que acompanhem os fluxos de imagem e se atualizem automaticamente quando novas versões de imagem estiverem disponíveis.

Registro de imagem interno

Outra coisa que diferencia o OpenShift é seu registro de imagem integrado. Por que usar um registro interno?Ele oferece uma opção diferente, em vez da implementação de imagens no hub do Docker ou em outro registro on-line. Um registro interno do OpenShift permite que vários projetos dentro do cluster acessem o registro, com segurança de baixa granularidade apesar do controle de acesso baseado na função (RBAC). Esteja ciente que, se um cluster do OpenShift for excluído, quaisquer imagens armazenadas em seu registro interno serão excluídas também.

Kubernetes

Kubernetes é um sistema de orquestração de contêiner de software livre para automatização da implementação, do ajuste de escala e do gerenciamento de aplicativos. Ele foi projetado originalmente pela Google e agora é mantido pela Cloud Native Computing Foundation.

Minishift

Assim como o Minikube, permite configurar um cluster Kubernetes em sua máquina local para teste, o Minishift permite executar uma instância de desenvolvimento do OpenShift. Ele executa um cluster de nó único dentro de uma máquina virtual, usando o libmachine para fornecimento e o OKD para o cluster em si.

OKD

O OpenShift é desenvolvido com Origin Kubernetes Distribution (OKD), que inclui o Kubernetes e outros projetos de software livre como Docker e Istio.

Console do desenvolvedor do OpenShift

Outro recurso que configura o OpenShift à parte do Kubernetes de base é seu console do desenvolvedor, com ricos recursos. O console da web do OpenShift fornece um ponto central de controle para seu ambiente do OpenShift. O console da web é formado pelas visualizações principais a seguir:

  • Console do cluster: O console da web do OpenShift inclui uma visualização mais intuitiva para as operações do administrador. Ele inclui uma visualização global do cluster do OpenShift como um todo, incluindo detalhes do hardware subjacente. É possível visualizar métricas sobre o uso do cluster com painéis integrados do Grafana ou do Prometheus e é possível gerenciar rotas e ingressos.

  • Console do aplicativo: No console do aplicativo, é possível criar e excluir aplicativos e implementações, além de gerenciar implementações. Visualize logs de todos os pods implementados em um projeto em uma tela e veja um histórico das construções.

  • Catálogo de serviços: No catálogo de serviços, é possível implementar bancos de dados e aplicativos middleware diretamente a partir do console. Os serviços no console são pré-certificados para funcionar com o OpenShift. É possível criar pods a partir de imagens base para várias linguagens e código-fonte nos repositórios do GitHub. Além disso, é possível criar pipelines do Jenkins.

Operadores

Operadores agem de maneira muito semelhante aos pacotes: eles são uma maneira de instalar uma parte específica do software. No OpenShift, no entanto, os operadores reforçam a implementação de software verificando constantemente o estado desse software (como o número da versão) e corrigindo quaisquer discrepâncias a partir da configuração desejada.

Podman

Podman é um mecanismo de contêiner sem daemon para desenvolver, gerenciar e executar Contêineres OCI em seu Sistema Linux. É possível executar Contêineres como raiz ou no modo sem raiz. Basta colocar:

alias docker=podman.

Projetos

Projetos no OpenShift são semelhantes ao conceito de namespaces no Kubernetes, mas eles existiam antes mesmo dos namespaces adquirirem muitos de seus recursos atuais. Logicamente, os projetos possibilitam a ocupação variada em um cluster do OpenShift, permitindo que várias equipes executem com segurança cargas de trabalho isoladas em um único cluster, evitando a sobrecarga extra e os custos de fornecer mais instâncias do OpenShift do que o necessário. Os administradores de cluster podem fornecer aos usuários permissão para criar projetos e, em seguida, controlar o acesso em uma base por projeto. Além disso, modelos podem ser criados com um conjunto predefinido de objetos a serem usados como base para novos projetos.

Rotas

Rotas são o método pelo qual você cria seu aplicativo ou, mais especificamente, um serviço específico (disponível para o mundo externo por meio de uma URL). O nome do host é especificado por um administrador (que talvez seja você!) quando o cluster é provisionado.

Segurança

Como o OpenShift destina-se a ser a plataforma Kubernetes adotada por empresas maduras e conscientes da segurança que migram para a nuvem, ele inclui vários recursos destinados a assegurar a segurança da execução de cargas de trabalho conteinerizadas com vários locatários. Camadas adicionais de segurança – defesa em profundidade – podem parar explorações que estão no domínio de “ilustres desconhecidos”, por exemplo: https://blog.openshift.com/openshift-protects-against-nasty-container-exploit/.

  • Por padrão, os contêineres não são executados como raiz. Em vez disso, eles são designados a um ID do usuário alocado dinamicamente.
  • Restrições do contexto de segurança controlam em que os pods dos usuários podem ser executados e quais recursos eles podem acessar.
  • SELinux é ativado por padrão quando o OpenShift é instalado.

Source-to-Image (S2I)

O OpenShift Source-to-Image (S2I) é uma ferramenta para criar imagens do Docker reproduzíveis. Ele produz imagens prontas para execução, injetando a origem do aplicativo em uma imagem do Docker e montando uma nova imagem do Docker. A nova imagem incorpora a imagem base (o construtor) e a origem da construção. Ele está pronto para uso com o comando docker run. O S2I suporta construções incrementais, que reutilizam dependências transferidas por download anteriormente e artefatos construídos previamente.

Modelos

Modelos do OpenShift são mais conhecidos como a maneira pela qual o console da web do OpenShift é preenchido com aplicativos de iniciação rápida e outro conteúdo. No entanto, eles também são uma ferramenta muito poderosa que, usada com critério, pode ser o bloco de construção de uma solução de infraestrutura como código para gerenciar vários aspectos do cluster e do estado do aplicativo.

Resumo

Nós esperamos que este guia o ajude em sua jornada com o OpenShift. Para obter tutoriais, vídeos e padrões de código com os quais trabalhar, consulte a página do Red Hat OpenShift on IBM Cloud.

Nós adoraríamos receber um feedback sobre nosso conjunto de entradas para nosso Guia de Mochileiro do OpenShift. Se você tiver quaisquer contribuições ou recomendações para melhoria, entre em contato com Anton McConville. O Guia do Mochileiro das Galáxias foi um trabalho colaborativo, então o nosso também deve ser!