Aplicativo da web escalável no Red Hat OpenShift on IBM Cloud

Este tutorial pode incorrer em custos. Use o Estimador de custos para gerar uma estimativa do custo baseada em seu uso projetado.

Este tutorial o orienta sobre como implantar um aplicativo em um cluster Red Hat OpenShift on IBM Cloud a partir de um repositório Git remoto, expor o aplicativo em uma rota, monitorar a integridade do ambiente e dimensionar o aplicativo. Além disso, você aprenderá a usar um registro de contêiner privado, a implantar um aplicativo a partir de um repositório Git privado e a vincular um domínio personalizado ao aplicativo.

Com o Red Hat OpenShift on IBM Cloud, é possível criar clusters Kubernetes com nós do trabalhador que vêm instalados com o OpenShift Container Platform. Para obter mais informações sobre a arquitetura OpenShift Container Platform, consulte a documentação Red Hat OpenShift. Você obtém todas as vantagens de um serviço gerenciado para seu cluster.

Objetivos

  • Implemente um aplicativo da web no cluster do Red Hat OpenShift on IBM Cloud.
  • Ligar um domínio customizado.
  • Monitorar os logs e o funcionamento do cluster.
  • Escalar os pods do Red Hat OpenShift on IBM Cloud.

Arquitetura*Diagrama de
do

  1. O desenvolvedor implementa um aplicativo da web usando o código por meio de um repositório Git remoto. Opcionalmente, o desenvolvedor também pode enviar o código para um repositório privado Git em IBM Cloud.
  2. Uma imagem de contêiner é criada a partir do código.
  3. A imagem é enviada para um registro de contêiner local que vem com o cluster ou para um namespace no IBM Cloud Container Registry.
  4. O aplicativo é implantado em um cluster Red Hat OpenShift on IBM Cloud puxando a imagem.
  5. Os usuários acessam o aplicativo por meio de uma rota pública

Antes de Iniciar

Este tutorial requer:

  • CLI do IBM Cloud,
    • Plug-in do IBM Cloud Kubernetes Service (kubernetes-service),
    • (opcional) Plug-in do Container Registry (container-registry)
  • Mecanismo de Docker,
  • oc para interagir com o Red Hat OpenShift on IBM Cloud,
  • git para clonar o repositório de código-fonte,
  • (opcional) IBM Cloud GitLab configurado com sua chave SSH. Verifique as instruções nas seções Generate an SSH key pair e Add an SSH key to your GitLab account da documentação aqui

Você encontrará instruções para fazer download e instalar essas ferramentas para o seu ambiente operacional no guia Introdução aos tutoriais.

Para evitar a instalação dessas ferramentas, é possível usar o Cloud Shell no console da IBM Cloud. Use oc version para assegurar que a versão do CLI do Red Hat OpenShift on IBM Cloud corresponda à sua versão de cluster (4.13.x). Se eles não corresponderem, instale a versão correspondente seguindo estas instruções.

Além disso, certifique-se de configurar um namespace de registro.

Criar um cluster do Red Hat OpenShift on IBM Cloud

Com o Red Hat OpenShift on IBM Cloud, você tem uma maneira rápida e segura de colocar em contêineres e implantar cargas de trabalho corporativas em clusters Kubernetes. Os clusters Red Hat OpenShift on IBM Cloud se baseiam na orquestração de contêineres Kubernetes, que oferece consistência e flexibilidade para as operações do ciclo de vida do desenvolvimento.

Nesta seção, você provisionará um cluster Red Hat OpenShift on IBM Cloud em uma (1) zona com dois (2) nós do trabalhador:

  1. Crie um cluster do Red Hat OpenShift on IBM Cloud por meio do catálogo do IBM Cloud®.
  2. Em Infraestrutura, escolha VPC ou Clássica.
    • Para Red Hat OpenShift on IBM Cloud na infraestrutura VPC, é necessário criar uma VPC e uma sub-rede antes de criar o cluster. Crie ou use uma VPC existente tendo em mente os requisitos a seguir:
      • Uma sub-rede que pode ser usada para este tutorial. Anote a zona e o nome da sub-rede.
      • Um gateway público é conectado à sub-rede, para obter mais detalhes, consulte Criando clusters VPC.
  3. Em Local,
    • Para o Red Hat OpenShift on IBM Cloud na infraestrutura VPC
      • Desmarque as zonas e as sub-redes inaplicáveis
      • Na zona desejada, verifique o nome de sub-rede desejado e, se não estiver presente, clique no lápis de edição para selecionar o nome de sub-rede desejado
    • Para Red Hat OpenShift on IBM Cloud na infraestrutura Clássica:
      • Selecione um Grupo de recursos.
      • Selecione uma Geografia.
      • Selecione Zona única como Disponibilidade.
      • Escolha uma zona de trabalho.
      • Para obter mais informações, consulte as instruções Criando clusters clássicos.
  4. Configure a versão do OpenShift como 4.13.x (Nota: se você optar por usar uma versão do 4.15.xx e superior, será necessário desativar a Proteção de tráfego de saída.)
  5. Selecione sua OpenShift Container Platform (OCP).
  6. Em Conjunto de trabalhadores,
    • Selecione Quatro vCPUs com 16 GB de memória como o tipo.
    • Selecione 2 nós de trabalho por data center para este tutorial (se você selecionou a infraestrutura clássica: Deixe Encrypt local disk ).
  7. Em Detalhes do cluster:
    • Defina o nome do cluster como myopenshiftcluster.
    • Selecione um Grupo de recursos (se você tiver selecionado a infraestrutura do VPC)
  8. Clique em Criar para provisionar um cluster do Red Hat OpenShift on IBM Cloud.

Anote o grupo de recursos selecionado acima. Esse mesmo grupo de recursos será usado para todos os recursos neste laboratório.

Configurar CLI

Nesta etapa, você configurará oc para apontar para seu cluster recém-criado. A CLI da Red Hat OpenShift on IBM Cloud Container Platform apresenta comandos para gerenciar seus aplicativos, bem como ferramentas de nível inferior para interagir com cada componente do seu sistema. A CLI está disponível usando o comando oc.

  1. Quando o cluster estiver pronto, clique em OpenShift web console para abrir o console.
  2. No console da web, no menu suspenso no canto superior direito da página, clique em Copiar comando de login e, em seguida, clique no link Exibir token.
  3. Copie o texto encontrado em Log in with this token.
  4. Depois de fazer login usando o comando oc login, execute o comando abaixo para ver todos os namespaces em seu cluster.
    oc get ns
    

Criar um novo aplicativo Red Hat OpenShift on IBM Cloud

Nesta seção, você criará um projeto Red Hat OpenShift on IBM Cloud e, em seguida, implementará um aplicativo a partir de um GitHub. O código para esse aplicativo é uma página inicial simples do Node.js e dois terminais de API para iniciar. É possível sempre estender esse aplicativo com base em seus próprios requisitos de exploração

Criar um projeto

Um namespace do Kubernetes fornece um mecanismo para definir o escopo de recursos em um cluster. No Red Hat OpenShift on IBM Cloud, um projeto é um namespace do Kubernetes com anotações adicionais.

  1. Defina uma variável de ambiente denominada MYPROJECT e configure o nome do aplicativo substituindo <your-initials> por suas próprias iniciais:
    export MYPROJECT=<your-initials>-openshiftapp
    
  2. Crie um novo projeto.
    oc new-project $MYPROJECT
    
    Depois de criar um projeto usando o comando acima, você é automaticamente alternado para esse projeto e todos os comandos que seguem são executados no contexto desse projeto. Se você precisar alternar projetos ou voltar para esse projeto em um estágio posterior, use o comando oc project $MYPROJECT

Implementar um aplicativo

Com o comando oc new-app, é possível criar aplicativos por meio do código-fonte em um repositório Git local ou remoto.

  1. Crie um aplicativo usando a estratégia de construção do docker para criar uma imagem de contêiner no repositório por meio de um Dockerfile. Você está configurando o nome do aplicativo para o nome do projeto para simplicidade.

    oc new-app https://github.com/IBM-Cloud/openshift-node-app --name=$MYPROJECT --strategy=docker --as-deployment-config
    

    Se houver um arquivo Jenkins na raiz ou no diretório de contexto especificado do repositório de origem ao criar um novo aplicativo, Red Hat OpenShift on IBM Cloud irá gerar uma estratégia de construção de pipeline. Caso contrário, ele gera uma estratégia de construção source. É possível sempre substituir a estratégia de construção configurando o sinalizador --strategy

  2. Para verificar a criação e o envio da imagem do contêiner do construtor para o Red Hat OpenShift on IBM Cloud Container Registry (OCR) interno, execute o comando abaixo.

    oc logs -f buildconfig/$MYPROJECT
    

    Seu cluster é configurado com o Red Hat OpenShift on IBM Cloud Container Registry interno para que o Red Hat OpenShift on IBM Cloud possa construir, implementar e gerenciar automaticamente o seu ciclo de vida de aplicativo de dentro do cluster.

  3. Aguarde até que a compilação seja bem-sucedida e a imagem seja enviada. É possível verificar o status de implementação e serviço executando o comando abaixo.

    oc status
    

Acesse o aplicativo por meio do domínio fornecido IBM

Para acessar o aplicativo, é necessário criar uma rota. Uma rota anuncia seu serviço para o mundo.

  1. Crie uma rota executando o comando abaixo em um terminal.

    oc expose service/$MYPROJECT
    
  2. Você pode acessar o aplicativo por meio de um domínio fornecido pelo IBM. Execute o comando abaixo para obter o URL.

    oc get route/$MYPROJECT
    
  3. Copie o valor do nome do host em HOST/PORT e cole o endereço URL em um navegador para ver seu aplicativo em ação em http://<hostname>. Certifique-se de usar http no URL.

  4. Define uma variável de ambiente que aponta para o nome do host.

    export HOST=<hostname>
    

Proteger a rota de domínio padrão fornecida pela IBM

  1. Para criar uma rota HTTPS segura criptografada com o certificado padrão para o Red Hat OpenShift on IBM Cloud, é possível usar o comando create route.
    oc create route edge $MYPROJECT-https --service=$MYPROJECT --port=3000
    
  2. Para a URL do HOST HTTPS, execute oc get routes. Copie e cole a URL com HTTPS (https://<HOST>) ao lado da rota $MYPROJECT-https em um navegador. Desta vez, você pode usar https no URL.

Monitorar o app

Nesta seção, você aprenderá a monitorar o funcionamento e o desempenho de seu aplicativo. OpenShift Container Platform é enviado com uma pilha de monitoramento e alerta pré-configurada e autoatualizada.

  1. Em um terminal, execute o comando com o URL da rota para gerar uma carga. O comando enviará terminantemente solicitações para o aplicativo.
    while sleep 1; do curl --max-time 2 -s http://$HOST/load/50; done
    
  2. No OpenShift console da web, alterne para a visualização Administrador.
  3. Sob Observe, selecione Metrics.
  4. Na caixa de expressão, insira a expressão abaixo, substitua <MYPROJECT> pelo nome do projeto e clique em Executar consultas para ver o uso total da CPU do contêiner em segundos em um gráfico.
    sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace="<MYPROJECT>"}) by (container)
    
  5. Sob Observe, selecione Painéis.
  6. Clique no dropdown Painel e selecione Kubernetes / Recursos Computacionais / Namespace (Workloads).
  7. Altere Namespace para o seu projeto.
  8. Configure Intervalo de tempo para Últimos 5 minutes.
  9. Verifique o uso de CPU e de memória.
  10. Pare o script acima usando control+C.
  11. Para criação de log, é possível usar o comando oc logs integrado. Verifique os registros de visualização de um recurso para saber mais sobre o uso de oc logs.

Também é possível provisionar e usar os serviços IBM Cloud Logs e IBM Cloud Monitoring para criação de log e monitoramento de seu aplicativo Red Hat OpenShift on IBM Cloud. Siga as instruções mencionadas neste link para configurar a criação de log e o monitoramento de complementos para monitorar o funcionamento do cluster.

Escalar o app

Nesta seção, você aprenderá a escalar o seu aplicativo manual e automaticamente.

Ajuste de escala manual

  1. É possível alcançar ajuste de escala manual de seus pods com o comando oc scale. O comando configura um novo tamanho para uma configuração de implementação ou um controlador de replicação
    oc scale dc/$MYPROJECT --replicas=2
    
  2. É possível ver um novo pod sendo provisionado executando o comando oc get pods.
  3. Execute novamente a etapa Monitoramento para ver as métricas atualizadas.

Auto-scaling

É possível usar um ajustador de escala automático de pod (HPA) para especificar como o Red Hat OpenShift on IBM Cloud deve aumentar ou diminuir automaticamente a escala de uma configuração de implementação (dc) ou de um controlador de replicação (rc), com base em métricas coletadas dos pods que pertencem a esse dc ou rc.

  1. Para que seja possível configurar o ajuste automático de escala para os seus pods, primeiro é necessário configurar os limites de recurso nos pods em execução no cluster. Os limites permitem que você escolha o uso mínimo e máximo de CPU e de memória para um pod. É possível configurar os limites e as solicitações em um contêiner usando o comando oc set resources.
    oc set resources dc/$MYPROJECT --limits=cpu=250m,memory=512Mi --requests=cpu=100m,memory=256Mi
    
    Para verificar, execute oc describe dc/$MYPROJECT e procure Limits e Requests.
  2. Para criar um ajustador automático de escala, é necessário executar o comando oc autoscale com os limites inferior (mín.) e superior (máx.) para o número de pods que podem ser configurados pelo ajustador automático de escala e a utilização média de destino de CPU (representada como um percentual de CPU solicitada) sobre todos os pods. Para testar, vamos configurar --cpu-percent para 5%.
    oc autoscale dc/$MYPROJECT \
     --min=1 \
     --max=5 \
     --cpu-percent=5
    
  3. Reexecute a etapa Monitoramento para gerar carga no aplicativo.
  4. Você pode ver novos pods sendo provisionados executando o comando oc get pods --watch ou olhando para o aplicativo no console web.
  5. Remova o escalador automático:
    oc delete hpa/$MYPROJECT
    

(Opcional) Criar a imagem de contêiner e enviá-la por push ao Container Registry

Nesta seção, você aprenderá a usar um Container Registry remoto privado para armazenar as imagens de contêiner criadas.

O IBM Cloud Container Registry fornece um registro de imagem privado de múltiplos locatários, altamente disponível, escalável e criptografado que é hospedado e gerenciado pelo IBM. É possível usar o IBM Cloud Container Registry configurando seu próprio namespace de imagem e enviando por push as imagens de contêiner para o seu namespace.

  1. Para identificar seu Container Registry URL, execute:

    ibmcloud cr region
    
  2. Defina uma variável de ambiente chamada MYREGISTRY apontando para o registro, como:

    export MYREGISTRY=us.icr.io
    
  3. Escolha um de seus namespaces de registro existentes ou crie um novo. Para listar namespaces existentes, use:

    ibmcloud cr namespaces
    

    Para criar um novo namespace:

    ibmcloud cr namespace-add <REGISTRY_NAMESPACE>
    
  4. Defina uma variável de ambiente denominada MYNAMESPACE apontando para o namespace de registro:

    export MYNAMESPACE=<REGISTRY_NAMESPACE>
    
  5. Defina um nome de variável de ambiente API_KEY apontando para uma chave de API IAM IBM Cloud:

    export API_KEY=<YOUR_API_KEY>
    

    Para criar uma chave API, consulte este link.

  6. Para automatizar o acesso aos seus namespaces de registro e enviar por push a imagem de contêiner do construtor gerada para o Container Registry, crie um segredo:

    oc create secret docker-registry push-secret --docker-username=iamapikey --docker-password=$API_KEY --docker-server=$MYREGISTRY
    
  7. Copie e corrija o segredo image-pull do projeto default para o seu projeto:

    oc get secret all-icr-io -n default -o yaml | sed 's/default/'$MYPROJECT'/g' | oc -n $MYPROJECT create -f -
    
  8. Para que o segredo do image pull tenha efeito, você precisa adicioná-lo à conta de serviço default :

    oc secrets link serviceaccount/default secrets/all-icr-io --for=pull
    

Clonar um aplicativo de amostra

Nesta seção, você clonará um repositório GitHub que é fornecido com um arquivo de modelo e um shell script para gerar um arquivo yaml a partir de suas variáveis de ambiente criadas anteriormente. O arquivo gerado é usado para criar uma imagem de contêiner, enviar a imagem para o registro de contêiner privado e implantar um novo aplicativo.

  1. Em um terminal, execute o comando abaixo para clonar o repositório GitHub em seu computador:
    git clone https://github.com/IBM-Cloud/openshift-node-app
    
  2. Vá para o diretório do aplicativo:
    cd openshift-node-app
    

Atualizar o BuildConfig e enviar por push a imagem do construtor para o Container Registry

Nesta etapa, você executa um script para atualizar as seções do arquivo openshift.template.yaml e gerar um novo arquivo yaml apontando para seu namespace Container Registry.

  1. Execute o script de bash abaixo para atualizar os itens temporários no arquivo openshift.template.yaml e gerar o arquivo openshift_private_registry.yaml.

    ./generate_yaml.sh use_private_registry
    
  2. Execute o comando de exportação na saída para configurar a variável de ambiente MYPROJECT existente com o novo nome do aplicativo. Execute echo $MYPROJECT para ver o novo nome do aplicativo.

  3. Opcionalmente, verifique o arquivo openshift_private_registry.yaml gerado para ver se todos os itens temporários foram atualizados com as respectivas variáveis de ambiente. Abaixo estão três lugares para fazer uma verificação rápida. É possível pular para a próxima seção.

  4. Opcional Localize o objeto ImageStream com o atributo name definido para seu projeto ($MYPROJECT) e verifique se os espaços reservados $MYREGISTRY,$MYNAMESPACE e $MYPROJECT na definição dockerImageRepository de spec estão atualizados

    -
    apiVersion: image.openshift.io/v1
    kind: ImageStream
    metadata:
      annotations:
        openshift.io/generated-by: OpenShiftNewApp
      creationTimestamp: null
      labels:
        app: $MYPROJECT
        app.kubernetes.io/component: $MYPROJECT
        app.kubernetes.io/instance: $MYPROJECT
      name: $MYPROJECT
    spec:
      dockerImageRepository: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT
      lookupPolicy:
        local: false
    status:
        dockerImageRepository: ""
    

    Um fluxo de imagem e suas tags associadas fornecem uma abstração para referenciar imagens de contêiner de dentro do Red Hat OpenShift on IBM Cloud Container Platform

  5. Opcional: verifique na seção spec em BuildConfig se o conjunto de saída para o tipo DockerImage e se os itens temporários name foram atualizados.

    spec:
      nodeSelector: null
      output:
        to:
          kind: DockerImage
          name: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest
        pushSecret:
          name: push-secret
    

    Uma construção é o processo de transformar parâmetros de entrada em um objeto resultante. Mais frequentemente, o processo é usado para transformar parâmetros de entrada ou código-fonte em uma imagem executável. Um objeto BuildConfig é a definição de todo o processo de construção.

  6. Opcional procure containers, verifique a image e o name

    containers:
    - image: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest
      name: $MYPROJECT
    
  7. Se atualizado, salve o arquivo YAML.

Implementar o aplicativo usando o IBM Cloud Container Registry

Nesta seção, você implementará o aplicativo no cluster usando o arquivo openshift_private_registry.yaml gerado. Depois de implementado, você acessará o aplicativo criando uma rota.

  1. Crie um novo aplicativo OpenShift junto com um buildconfig(bc), deploymentconfig(dc), service(svc), imagestream(is) usando o yaml atualizado.

    oc apply -f openshift_private_registry.yaml
    
  2. Para verificar a criação da imagem do contêiner do construtor e o envio para o site Container Registry, execute o comando abaixo.

    oc logs -f bc/$PRIVREG
    

    Nos logs, você verá a mensagem abaixo se a imagem do contêiner for enviada para o registro de contêiner privado.

    Pushing image us.icr.io/mods15/vmac-openshift-app-registry:latest ...
    Getting image source signatures
    Copying blob sha256:9d038e1c7afbe92c29313557c02110e8fb796818ebb78441c68929381103a94b
    Copying blob sha256:61c671f49591a059c9b6728a9f84c16f5b00126470112ee9c9f9e01dbbfcc3ea
    Copying blob sha256:e2787650308235c87eff7d2b88c3ab217e84b74a3fa9696103bd46bb99068c7a
    Copying blob sha256:dcef409117430ed9906a59ad0a3ea0752061fbf8a9e544f4edd77667a25d85ae
    Copying blob sha256:a1f889dd610c6510c7fc091a51c247463f3cc9a7c67bdc397c9632168808f7d2
    Copying blob sha256:bd278801acd18ada10f43b732113a6fffc163011862ea6cde729f8dc59e64222
    Copying blob sha256:2d6c03ed5d15be86cdef7d9c0c9fea40a3f6b89662bca59680d037074f52bb38
    Copying blob sha256:fa2ef7f80d6fc9543f6eb472846931ed1cec2b5f776d1b67bcb1b9942e1a947e
    Copying blob sha256:ff5a4e4d3690ccc931900b63714d326cc53a58e644f8d0a4f06bf8c62f11c5c7
    Copying config sha256:01aa1ebb7be74529867106100c4e699ca2ae87f8242460771527f772e6a3d174
    Writing manifest to image destination
    Storing signatures
    Successfully pushed us.icr.io/mods15/vmac-openshift-app-registry@sha256:6847b889397704b9fb8c3122c84b505c3dc5f99a0669fb69f534d3504eec385d
    Push successful
    
  3. Você pode verificar o status da implantação e do serviço.

    oc status
    
  4. Importe manualmente o fluxo de imagem mais recente para garantir que a implementação ocorra o mais rápido possível.

    oc import-image $PRIVREG
    

    Você também pode usar o comando se a implantação estiver demorando mais. Consulte este link para obter mais informações.

  5. Expor o serviço para criar uma nova rota.

    oc expose service/$PRIVREG
    
  6. Você pode acessar o aplicativo por meio do domínio fornecido IBM. Execute o comando abaixo para obter o URL.

    oc get route/$PRIVREG
    
  7. Copie o valor do nome do host em HOST/PORT e cole o endereço URL em um navegador para ver seu aplicativo em ação em http://<hostname>. Certifique-se de usar http no URL.

    Você deve ver o mesmo aplicativo exposto em uma rota diferente e implementado com a imagem de contêiner armazenada em um registro de contêiner privado.

(Opcional) Enviar o código por push para um repositório Git privado do IBM Cloud

Nesta etapa, você criará um repositório privado IBM Cloud Git e enviará o código do aplicativo de amostra. Você também aprenderá a criar e reimplantar automaticamente quando o aplicativo for atualizado.

É necessário configurar uma chave SSH para que o envio seja bem-sucedido. Consulte as instruções nas seções Generate an SSH key pair e Add an SSH key to your GitLab account da documentação aqui

  1. Em um navegador, abra IBM Cloud Git.

    O link acima é para a região us-south. Para outras regiões, execute ibmcloud regions e substitua us-south na URL pelo nome da região.

  2. Clique em Novo projeto e em Criar projeto em branco. Em seguida, forneça openshiftapp como o nome do projeto.

  3. Configure o Nível de Visibilidade como Private.

  4. Em Configuração de Projeto, remova a marca de seleção ao lado de Inicializar repositório com um README.

  5. Clique em Criar projeto,

  6. Siga as instruções nas seções Git global setup e Push an existing Git repository para configurar o Git e fazer push do código do aplicativo de amostra.

  7. Depois de enviar o código para o repositório privado, você deverá ver o código de amostra no projeto.

Criar um token de implementação do Git

Nesta seção, você criará um token de implementação de Git para permitir o acesso de somente leitura ao seu repositório.

Para gerar um token de implementação:

  1. No painel de navegação da página do repositório Git, clique em Configurações > Repositório.
  2. Clique em Expandir ao lado de Tokens de implementação.
    1. No campo Nome, digite foropenshift e, em seguida, selecione read_repository em Escopos. Finalmente clique em Criar token de implementação.
    2. Salve o nome do usuário e a senha gerados para referência futura.
  3. No painel de navegação, clique em Visão geral do projeto e, em seguida, clique em Clonar e copie Clonar com HTTPS URL. Salve a URL para referência futura.
  4. Defina variáveis de ambiente para o nome do usuário, a senha e a URL do repositório Git privado a serem usados com o arquivo YAML posteriormente no tutorial
    export GIT_TOKEN_USERNAME=<PRIVATE_GIT_DEPLOY_TOKEN_USERNAME>
    export GIT_TOKEN_PASSWORD=<PRIVATE_GIT_DEPLOY_TOKEN_PASSWORD>
    export REPO_URL=<PRIVATE_GIT_REPO_URL>
    

Implementar um novo aplicativo usando o registro privado e o código do repositório privado

  1. Execute o script de bash abaixo para atualizar os itens temporários no arquivo openshift.template.yaml e gerar o arquivo openshift_private_reposity.yaml.

    ./generate_yaml.sh use_private_repository
    
  2. Execute o comando de exportação na saída para configurar a variável de ambiente MYPROJECT existente com novo nome do projeto.

  3. Além dos itens temporários do registro de contêiner privado, o script também substituirá a REPO_URL na especificação BuildConfig pelas variáveis de ambiente que você configurou na etapa acima.

     source:
       git:
         uri: $REPO_URL
       type: Git
    
  4. Crie um novo aplicativo openshift junto com um buildconfig(bc), deploymentconfig(dc), service(svc), imagestream(is) usando o yaml atualizado

    oc apply -f openshift_private_repository.yaml
    
  5. É possível verificar os logs do construtor

    oc logs -f bc/$PRIVREPO
    
  6. Você pode verificar o status da implantação e do serviço usando.

    oc status
    
  7. Importe manualmente o fluxo de imagem mais recente para garantir que a implementação ocorra o mais rápido possível.

    oc import-image $PRIVREPO
    
  8. Expor o serviço para criar uma nova rota.

    oc expose service/$PRIVREPO
    
  9. Você pode acessar o aplicativo por meio do domínio fornecido IBM. Execute o comando abaixo para obter o URL.

    oc get route/$PRIVREPO
    
  10. Copie o valor do nome do host em HOST/PORT e cole o endereço URL em um navegador para ver seu aplicativo em ação em http://<hostname>. Certifique-se de usar http no URL.

    Um novo aplicativo é implementado com o código do repositório Git privado e a imagem de contêiner do namespace do registro privado.

Atualizar o aplicativo e reimplantá-lo

Nesta etapa, você automatizará o processo de construção e implementação. Sempre que você atualizar o aplicativo e enviar por push as mudanças no repositório privado, uma nova construção será executada gerando uma nova versão da imagem de contêiner. Essa imagem é então implementada automaticamente.

  1. Você criará um novo acionador de Webhook GitLab. Os acionadores de Webhook permitem acionar uma nova compilação enviando uma solicitação para o terminal de API do Red Hat OpenShift on IBM Cloud Container Platform. É possível definir esses acionadores usando webhooks GitHub, GitLab, Bitbucket ou Genéricos.

    oc set triggers bc $PRIVREPO --from-gitlab
    
  2. Para incluir um webhook no repositório GitLab, é necessária uma URL e um segredo

    • Para a URL do GitLab do webhook,
      oc describe bc/$PRIVREPO | grep -A 1 "GitLab"
      
    • Para o segredo que precisa ser passado na URL do webhook,
      oc get bc/$PRIVREPO -o yaml | grep -A 3 "\- gitlab"
      
    • Substitua <secret> na URL do webhook GitLab pelo valor do segredo em gitlab na saída de comando acima.
  3. Abra seu repositório git privado em um navegador usando o link Git repo HTTPS e, em seguida, clique em Settings (Configurações ) e clique em Webhooks.

  4. Cole o URL, selecione Push events como Trigger e clique em Add webhook. Deve-se ver a mensagem Webhook was created

  5. Atualize o ImagePolicy do fluxo de imagem para consultar o Container Registry em um intervalo planejado para sincronizar a tag e os metadados de imagem. Isso atualizará a definição tags

    oc tag $MYREGISTRY/$MYNAMESPACE/${PRIVREPO}:latest ${PRIVREPO}:latest --scheduled=true
    
  6. Abra o repositório clonado em um IDE para atualizar a tag h1 do arquivo public/index.html e alterá-la para Congratulations! <insert your name>.

  7. Salve e envie o código para o repositório.

     git add public/index.html
    
     git commit -m "Updated with my name"
    
     git push -u origin master
    
  8. É possível verificar o progresso da construção e implementar com o comando oc status. Quando a implementação for bem-sucedida, atualize o endereço de HOST da rota para ver o app da web atualizado.

    Às vezes, a implementação pode levar até 15 minutos para importar o fluxo de imagem mais recente. Você pode esperar ou importar manualmente usando o comando oc import-image $PRIVREPO. Consulte este link para obter mais informações.

(Opcional) Usar seu próprio domínio customizado

Esta seção requer que você possua um domínio customizado e que seja capaz de modificar os registros do DNS do domínio. Você precisará criar um registro CNAME apontando para o domínio fornecido pela IBM.

Etapas para configurar o registro CNAME variam dependendo de seu provedor DNS. Em Gerenciamento/zona DNS do seu domínio, inclua um novo registro CNAME, configure Host (nome) como openshiftapp ou qualquer subdomínio que desejar e configure Aponta para para o domínio fornecido pela IBM sem HTTP ou HTTPS

Com HTTP

  1. Crie uma rota expondo o serviço em um nome do host substituindo <HOSTNAME> pelo seu nome do host (por exemplo, www.example.com ou openshiftapp.example.com), para que os clientes externos possam atingi-lo pelo nome.
    oc expose svc/$PRIVREPO --hostname=<HOSTNAME> --name=$PRIVREPO-domain --port=3000
    
  2. Acesse seu aplicativo em http://<HOSTNAME>/

Com HTTPS

  1. Para criar uma rota HTTPS segura, é possível usar o seu próprio certificado e os arquivos de chaves de um CA como Vamos criptografar ou pedir por meio do Secrets Manager. Passe-os com o comando create route
    oc create route edge $PRIVREPO-httpsca --service=$PRIVREPO --cert=example.pem --key=example.key --hostname=<www.HOSTNAME> --port=3000
    
    Aqui, você usou finalização de Edge. Para aprender sobre outras rotas seguras e tipos de rescisão como passagem e nova criptografia, execute o comando oc create route --help)

Remover recursos

  • Exclua todos os objetos de recursos específicos de um aplicativo:

    oc delete all --selector app=$PRIVREPO
    oc delete all --selector app=$PRIVREG
    oc delete all --selector app=$MYPROJECT
    

    Para listar os nomes de aplicativos no projeto, execute oc get svc | awk '{print $1}'

  • Exclua o projeto:

    oc delete project $MYPROJECT
    
  • Exclua o repositório de aplicativos:

    • No painel de navegação da página do repositório Git, clique em Configurações > Geral.
    • Clique em Expandir próximo a Avançado.
    • Clique em Excluir projeto e confirme a sua exclusão.
  • Exclua a (s) imagem (ns) do contêiner do Container Registry:

    • Usando seu navegador, navegue para a página de repositórios do Container Registry.
    • Selecione as imagens criadas como parte deste tutorial e exclua-as.
  • Exclua o cluster que você criou.

Conteúdo relacionado