O Guia do Mochileiro do OpenShift

8 min de leitura
Patrocinado
Imagem de: O Guia do Mochileiro do OpenShift
Avatar do autor

Equipe TecMundo

@tec_mundo

Este documento apresenta glossário, links e guias para tópicos relacionados à plataforma OpenShift. Ele foi feito para desenvolvedores e criado por desenvolvedores que trabalham com o OpenShift®, da Red Hat®, na IBM Cloud™.

O OpenShift é descrito como “uma distro de Kubernetes focada em desenvolvedores e operações” e roda no Kubernetes (as versões anteriores do OpenShift lidavam com orquestração de contêineres usando um mecanismo diferente). O OpenShift traz ferramentas que ajudam desenvolvedores e equipes de operações a rodarem as cargas de trabalho com contêineres. Nos bastidores, o OpenShift é desenvolvido pela Origin Kubernetes Distribution (OKD), que também inclui o Kubernetes e outros projetos de código aberto, como Docker e Istio.

As seções a seguir estão listadas em ordem alfabética baseada nos termos em inglês. Em homenagem a Douglas Adams, autor dos livros O Guia do Mochileiro das Galáxias, nós já adiantamos: “Não entre em pânico!”

 OpenShiftO Guia do Mochileiro do OpenShift

Aplicação

“Aplicação” é um termo que já está ficando sobrecarregado com a evolução do OpenShift. Embora tenha sido um conceito concreto, a palavra não mais representa um objeto simples e básico no mundo desta solução. No entanto, a “aplicação” segue importante no painel de controle da linha de comando como um tipo de agrupamento acessível para determinados recursos de uma carga de trabalho. O comando oc new-app do CLI cria vários componentes, como o Deployment e o ImageStream, a partir do local de uma imagem ou de um código-fonte existente, além de definir uma configuração de serviço e rota, caso uma porta seja especificada.

CI/CD com Jenkins ou Tekton

Você terá algumas opções quando for implementar uma integração contínua (continuous integration) ou uma entrega contínua (continuous delivery): o famoso CI/CD. Uma aplicação muito usada para configurar a entrega contínua é a Jenkins, que funciona como um container certificado em OpenShift. Você pode usá-la para criar pacotes, rodar testes de unidade e integração e fazer o deploy de imagens.

Outra ferramenta de código aberto promissora para construir pipelines é a Tekton, que oferece a possibilidade de realizar muitas das mesmas operações na nuvem.

Ferramentas de linha de comando

  • buildah: trata-se de uma ferramenta para construir imagens com base no CRI-O, de forma parecida com o Podman. O buildah é composto basicamente por um grande conjunto de comandos de construção disponíveis no Podman, o que permite um controle mais preciso da criação de imagens.

  • kubectl: é uma ferramenta-padrão de linha de comando para controlar os clusters do Kubernetes. Como o OpenShifx 3.x e todas as suas versões mais recentes são baseados no Kubernetes, o kubectl pode ser usado em todo cluster de OpenShift.

  • oc: é a CLI do OpenShift Client, que você pode usar para manipular construções nativas do OpenShift como objetos de primeira classe (incluindo projetos, aplicações, rotas e ImageStreams). Como o OpenShift acrescenta esses elementos ao Kubernetes, é necessário usar o oc para interagir com os recursos específicos do OpenShift.

  • odo: é o “OpenShift do”, ou seja, uma ferramenta de linha de comando que simplifica operações comuns. Ele é voltado para desenvolvedores (ao contrário das operações) para permitir que eles façam o deploy e a iteração do código rapidamente.

  • s2i: é uma ferramenta de linha de comando feita para combinar um construtor de imagem a partir de um repositório de código-fonte do GitHub de origem. O resultado é uma imagem Docker executável. O construtor de imagem é como um template com scripts integrados que pegam o código-fonte e o compilam em uma aplicação executável.

Fluxo de imagem

O fluxo de imagem é uma abstração que permite ao OpenShift fazer o deploy das aplicações a partir de um registro público de imagem, ao mesmo tempo em que, dinamicamente, faz o deploy de novas versões de imagens conforme elas entram para o registro. Você pode fazer configurações de build e deploys para ver fluxos de imagem e atualizá-los automaticamente quando novas versões de imagens estiverem disponíveis.

Registro interno de imagem

Outro diferencial do OpenShift é seu registro de imagens embutido. Mas por que você iria querer um registro interno? Porque ele te dá outra opção além do deploy de imagens para o hub do Docker e outros registros online. Um registro interno do OpenShift permite que diversos projetos dentro do cluster acessem o registro com uma segurança refinada, mesmo com controle de acesso baseado na função (role-based access control – RBAC). Preste atenção se um cluster de OpenShift for deletado, pois as imagens armazenadas no registro interno também serão excluídas.

Kubernetes

O Kubernetes é um sistema de código aberto e de orquestração de contêineres para automatizar tanto o deploy quanto o dimensionamento e o gerenciamento das aplicações. Foi criado pela Google e agora é mantido pela Cloud Native Computing Foundation.

Minishift

Assim como o Minikube permite configurar um cluster do Kubernetes na sua máquina para fazer testes, o Minishift permite executar uma instância de desenvolvimento do OpenShift. Ele roda um cluster de apenas um nó dentro de uma máquina virtual, utilizando a libmachine para abastecimento e o OKD para o cluster em si.

OKD

O OpenShift é desenvolvido pela Origin Kubernetes Distribution (OKD), que também desenvolve o Kubernetes e outros projetos de código aberto, como Docker e Istio.

Console de desenvolvedor do OpenShift

Outra característica que diferencia o OpenShift do Kubernetes é seu console de desenvolvedor, que oferece muitos recursos. O console para web do OpenShift traz um ponto de controle central para o seu ambiente OpenShift, e é feito das seguintes visualizações:

  • Console do cluster: O console da web do OpenShift inclui uma visualização acessível para operações de administração. Ele oferece uma visão global dos clusters e detalhes do hardware subjacente. Você pode visualizar as métricas do uso do cluster com o painel de controle integrado do Grafana ou do Prometheus e também pode gerenciar rotas e entradas.

  • Aplicação console: Na aplicação console, você pode criar e deletar aplicações e deploys, além de gerenciar os processos de deploy. Você ainda visualiza em uma tela os logs de todos os pods implantados e acessa um histórico de builds.

  • Catálogo de serviço: No catálogo de serviço, você pode pode fazer o deploy de aplicações de bases de dados ou de middleware direto do console. Os serviços no console são pré-certificados para trabalhar com o OpenShift. Você tem a possibilidade de criar pods a partir da base de imagens para diversas linguagens e códigos-fonte nos repositórios do GitHub. Também é possível criar pipelines no Jenkins.

Operadores

Os operadores atuam de forma parecida com os pacotes: são uma maneira de instalar um trecho específico do software. No OpenShift, entretanto, os operadores vão além no deployment do software, pois checam constantemente a situação dele (por exemplo, sua versão) e corrigem as discrepâncias em relação à configuração desejada.

Podman

O Podman é um mecanismo de container (sem Daemon) feito para desenvolver, gerenciar e executar contêineres OCI no seu sistema Linux. Você pode executar contêineres no modo root ou não. De forma simples, podemos dizer que:

  • Podman = outro nome para Docker.

Projetos

Os projetos no OpenShift são parecidos com o conceito de namespace no Kubernetes, mas existiam antes de os namespaces adquirirem muitas de suas funções atuais. Os projetos habilitam a multilocação em um cluster do OpenShift, permitindo que várias equipes executem de forma segura as cargas de trabalho que estão isoladas em um único cluster, evitando a sobrecarga e os custos extras de provisionar mais instâncias do OpenShift do que o necessário. Administradores de clusters podem permitir que os usuários criem projetos e então controlar o acesso deles projeto a projeto. Além disso, os templates podem ser criados com um conjunto predefinido de objetos que servem de base para novos projetos.

Rotas

As Rotas são o método pelo qual se cria a aplicação ou, mais especificamente, um determinado serviço (disponível para o mundo externo por meio de uma URL). O nome do host é especificado por um administrador (provavelmente será você!) quando o cluster é abastecido.

Segurança

Como o OpenShift é destinado a ser uma plataforma Kubernetes para empresas estáveis e conscientes que estão migrando para a nuvem, ele inclui diversos recursos feitos para garantir a segurança na execução de cargas de trabalho multilocadas em container. Camadas adicionais de segurança (defesa em profundidade) podem impedir explorações que estejam no domínio das incógnitas desconhecidas, como você pode ver no exemplo: https://blog.openshift.com/openshift-protects-against-nasty-container-exploit/.

  • Por padrão, os contêineres não rodam como root. Em vez disso, eles recebem um ID de usuário alocado dinamicamente.

  • As restrições do contexto de segurança controlam o que os pods dos usuários podem rodar e quais recursos podem acessar.

  • A SELinux é habilitada por padrão quando o OpenShift é instalado.

Source-to-Image (S2I)

O Source-to-Image (S2I) é uma ferramenta criada para construir imagens Docker reproduzíveis. Ela produz imagens prontas para serem executadas injetando a fonte da aplicação dentro da imagem Docker existente e montando uma nova. Esta nova imagem incorpora a imagem-base (builder) e a fonte construída. Ela vem pronta para utilização com o comando de execução do Docker. O Source-to-Image suporta construções incrementais, que reutilizam dependências que já foram baixadas e artefatos construídos anteriormente.

Template

Os templates do OpenShift são mais conhecidos como a maneira como o console OpenShift para web é preenchido com aplicações de rápido acesso ou outros conteúdos. No entanto, eles também são uma ferramenta muito poderosa, que, se usada com cuidado, pode servir de alicerce para uma infraestrutura, sendo uma solução de código para gerenciar diversos aspectos do cluster e do estado do aplicativo.

Resumo

Esperamos que este guia te ajude na sua jornada com o OpenShift. Para tutoriais, vídeos e padrões de código, veja o Red Hat OpenShift na página da IBM Cloud.

Queremos muito receber seu feedback sobre nossa lista de definições para o Guia do Mochileiro do OpenShift. Se você tem alguma sugestão ou recomendação do que pode ser melhorado, entre em contato com Anton McConville. O Guia do Mochileiro das Galáxias teve a colaboração de muita gente, então o nosso também terá!

... 

Quer ler mais conteúdo especializado de programação? Conheça a IBM Blue Profile e tenha acesso a matérias exclusivas, novas jornadas de conhecimento e testes personalizados. Confira agora mesmo, consiga as badges e dê um upgrade na sua carreira!

O Guia do Mochileiro do OpenShift