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.
- 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.
- Uma imagem de contêiner é criada a partir do código.
- A imagem é enviada para um registro de contêiner local que vem com o cluster ou para um namespace no IBM Cloud Container Registry.
- O aplicativo é implantado em um cluster Red Hat OpenShift on IBM Cloud puxando a imagem.
- 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)
- Plug-in do IBM Cloud Kubernetes Service (
- Mecanismo de Docker,
ocpara interagir com o Red Hat OpenShift on IBM Cloud,gitpara 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 paireAdd an SSH key to your GitLab accountda 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:
- Crie um cluster do Red Hat OpenShift on IBM Cloud por meio do catálogo do IBM Cloud®.
- 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.
- 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:
- 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.
- Para o Red Hat OpenShift on IBM Cloud na infraestrutura VPC
- 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.)
- Selecione sua OpenShift Container Platform (OCP).
- 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 ).
- Em Detalhes do cluster:
- Defina o nome do cluster como
myopenshiftcluster. - Selecione um Grupo de recursos (se você tiver selecionado a infraestrutura do VPC)
- Defina o nome do cluster como
- 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.
- Quando o cluster estiver pronto, clique em OpenShift web console para abrir o console.
- 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.
- Copie o texto encontrado em Log in with this token.
- 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.
- Defina uma variável de ambiente denominada
MYPROJECTe configure o nome do aplicativo substituindo<your-initials>por suas próprias iniciais:export MYPROJECT=<your-initials>-openshiftapp - Crie um novo projeto.
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 comandooc new-project $MYPROJECToc 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.
-
Crie um aplicativo usando a estratégia de construção do
dockerpara 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-configSe 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çãosource. É possível sempre substituir a estratégia de construção configurando o sinalizador--strategy -
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/$MYPROJECTSeu 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.
-
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.
-
Crie uma rota executando o comando abaixo em um terminal.
oc expose service/$MYPROJECT -
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 -
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 usarhttpno URL. -
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
- 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 - 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 usarhttpsno 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.
- 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 - No OpenShift console da web, alterne para a visualização Administrador.
- Sob Observe, selecione Metrics.
- 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) - Sob Observe, selecione Painéis.
- Clique no dropdown Painel e selecione Kubernetes / Recursos Computacionais / Namespace (Workloads).
- Altere Namespace para o seu projeto.
- Configure Intervalo de tempo para Últimos 5 minutes.
- Verifique o uso de CPU e de memória.
- Pare o script acima usando
control+C. - Para criação de log, é possível usar o comando
oc logsintegrado. Verifique os registros de visualização de um recurso para saber mais sobre o uso deoc 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
- É 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çãooc scale dc/$MYPROJECT --replicas=2 - É possível ver um novo pod sendo provisionado executando o comando
oc get pods. - 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.
- 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.Para verificar, executeoc set resources dc/$MYPROJECT --limits=cpu=250m,memory=512Mi --requests=cpu=100m,memory=256Mioc describe dc/$MYPROJECTe procureLimitseRequests. - Para criar um ajustador automático de escala, é necessário executar o comando
oc autoscalecom 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-percentpara 5%.oc autoscale dc/$MYPROJECT \ --min=1 \ --max=5 \ --cpu-percent=5 - Reexecute a etapa Monitoramento para gerar carga no aplicativo.
- Você pode ver novos pods sendo provisionados executando o comando
oc get pods --watchou olhando para o aplicativo no console web. - 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.
-
Para identificar seu Container Registry URL, execute:
ibmcloud cr region -
Defina uma variável de ambiente chamada
MYREGISTRYapontando para o registro, como:export MYREGISTRY=us.icr.io -
Escolha um de seus namespaces de registro existentes ou crie um novo. Para listar namespaces existentes, use:
ibmcloud cr namespacesPara criar um novo namespace:
ibmcloud cr namespace-add <REGISTRY_NAMESPACE> -
Defina uma variável de ambiente denominada
MYNAMESPACEapontando para o namespace de registro:export MYNAMESPACE=<REGISTRY_NAMESPACE> -
Defina um nome de variável de ambiente
API_KEYapontando para uma chave de API IAM IBM Cloud:export API_KEY=<YOUR_API_KEY>Para criar uma chave API, consulte este link.
-
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 -
Copie e corrija o segredo image-pull do projeto
defaultpara o seu projeto:oc get secret all-icr-io -n default -o yaml | sed 's/default/'$MYPROJECT'/g' | oc -n $MYPROJECT create -f - -
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.
- 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 - 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.
-
Execute o script de bash abaixo para atualizar os itens temporários no arquivo
openshift.template.yamle gerar o arquivo openshift_private_registry.yaml../generate_yaml.sh use_private_registry -
Execute o comando de exportação na saída para configurar a variável de ambiente
MYPROJECTexistente com o novo nome do aplicativo. Executeecho $MYPROJECTpara ver o novo nome do aplicativo. -
Opcionalmente, verifique o arquivo
openshift_private_registry.yamlgerado 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. -
Opcional Localize o objeto ImageStream com o atributo name definido para seu projeto (
$MYPROJECT) e verifique se os espaços reservados$MYREGISTRY,$MYNAMESPACEe$MYPROJECTna definiçãodockerImageRepositorydespecestã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
-
Opcional: verifique na seção
specemBuildConfigse o conjunto de saída para o tipoDockerImagee se os itens temporáriosnameforam atualizados.spec: nodeSelector: null output: to: kind: DockerImage name: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest pushSecret: name: push-secretUma 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. -
Opcional procure
containers, verifique aimagee onamecontainers: - image: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest name: $MYPROJECT -
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.
-
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 -
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/$PRIVREGNos 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 -
Você pode verificar o status da implantação e do serviço.
oc status -
Importe manualmente o fluxo de imagem mais recente para garantir que a implementação ocorra o mais rápido possível.
oc import-image $PRIVREGVocê também pode usar o comando se a implantação estiver demorando mais. Consulte este link para obter mais informações.
-
Expor o serviço para criar uma nova rota.
oc expose service/$PRIVREG -
Você pode acessar o aplicativo por meio do domínio fornecido IBM. Execute o comando abaixo para obter o URL.
oc get route/$PRIVREG -
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 usarhttpno 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
-
Em um navegador, abra IBM Cloud Git.
O link acima é para a região
us-south. Para outras regiões, executeibmcloud regionse substituaus-southna URL pelo nome da região. -
Clique em Novo projeto e em Criar projeto em branco. Em seguida, forneça
openshiftappcomo o nome do projeto. -
Configure o Nível de Visibilidade como Private.
-
Em Configuração de Projeto, remova a marca de seleção ao lado de Inicializar repositório com um README.
-
Clique em Criar projeto,
-
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.
-
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:
- No painel de navegação da página do repositório Git, clique em Configurações > Repositório.
- Clique em Expandir ao lado de Tokens de implementação.
- No campo Nome, digite
foropenshifte, em seguida, selecione read_repository em Escopos. Finalmente clique em Criar token de implementação. - Salve o nome do usuário e a senha gerados para referência futura.
- No campo Nome, digite
- 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.
- 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
-
Execute o script de bash abaixo para atualizar os itens temporários no arquivo
openshift.template.yamle gerar o arquivo openshift_private_reposity.yaml../generate_yaml.sh use_private_repository -
Execute o comando de exportação na saída para configurar a variável de ambiente
MYPROJECTexistente com novo nome do projeto. -
Além dos itens temporários do registro de contêiner privado, o script também substituirá a
REPO_URLna especificaçãoBuildConfigpelas variáveis de ambiente que você configurou na etapa acima.source: git: uri: $REPO_URL type: Git -
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 -
É possível verificar os logs do construtor
oc logs -f bc/$PRIVREPO -
Você pode verificar o status da implantação e do serviço usando.
oc status -
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 -
Expor o serviço para criar uma nova rota.
oc expose service/$PRIVREPO -
Você pode acessar o aplicativo por meio do domínio fornecido IBM. Execute o comando abaixo para obter o URL.
oc get route/$PRIVREPO -
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 usarhttpno 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.
-
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 -
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.
- Para a URL do GitLab do webhook,
-
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.
-
Cole o URL, selecione Push events como Trigger e clique em Add webhook. Deve-se ver a mensagem
Webhook was created -
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
tagsoc tag $MYREGISTRY/$MYNAMESPACE/${PRIVREPO}:latest ${PRIVREPO}:latest --scheduled=true -
Abra o repositório clonado em um IDE para atualizar a tag
h1do arquivo public/index.html e alterá-la paraCongratulations! <insert your name>. -
Salve e envie o código para o repositório.
git add public/index.htmlgit commit -m "Updated with my name"git push -u origin master -
É 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
- 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 - Acesse seu aplicativo em
http://<HOSTNAME>/
Com HTTPS
- 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 routeAqui, você usou finalização de Edge. Para aprender sobre outras rotas seguras e tipos de rescisão como passagem e nova criptografia, execute o comandooc create route edge $PRIVREPO-httpsca --service=$PRIVREPO --cert=example.pem --key=example.key --hostname=<www.HOSTNAME> --port=3000oc 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=$MYPROJECTPara 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.