preloader
  • Início
  • OpenShift Operator Hub em redes sem acesso a internet

Hub local privado do OpenShift (também conhecido como hub off-line)

blog-thumb

OpenShift Operator Lifecycle Manager (também conhecido como Operator Hub) foi projetado para funcionar com acesso à Internet.

Mas, às vezes, temos de lidar com um ambiente que não tem acesso à Internet (ambiente desconectado), o que nos impede de instalar os operadores.

Para dificultar ainda mais as coisas, alguns operadores precisam de imagens relacionadas (declaradas em seu CSV) para funcionar corretamente.

Criar um registry local desconectado e fazer upload de imagens de operadores para ele não é suficiente para que as coisas comecem a funcionar.

Então, o que devo fazer para resolver isso?


Catálogo de repositório personalizado

Antes de prosseguir, é importante entender algumas coisas. Alguns Operadores da Red Hat são autônomos e não precisam de imagens relacionadas. Mas alguns deles precisam. O processo de podar um catálogo de índices é adequado para Operators que não precisam de imagens extras. Você deve se informar como o operador foi criado para poder considerar qual é o método certo para você.

Use um comando como mostrado abaixo para obter algumas informações sobre o operador.

# oc get packagemanifests quay-operator -o yaml
(...)\
      relatedImages:
      - registry.redhat.io/quay/clair-rhel8@sha256:bc7eab15a3047951f559fa9e5eb1c4f8993796307a1404198e2391efd7759b27
      - registry.redhat.io/quay/quay-builder-rhel8@sha256:7175525fc0db5ee2f35230d029d39d8fe6f2b733d7a91b89d8144b6216bb61e6
      - registry.redhat.io/quay/quay-builder-qemu-rhcos-rhel8@sha256:ea4fca6fa4a1dbf32ed0d300e930c46fa0b53cdeeaf1cb1b055abda1e161a43f
      - registry.redhat.io/rhel8/postgresql-10@sha256:a52ad402458ec8ef3f275972c6ebed05ad64398f884404b9bb8e3010c5c95291
      - registry.redhat.io/rhel8/redis-6@sha256:b15335d88b240bd6bbedeb7fe26f0a1de2f6c330af9758b0fb2edab7ca69f6df
      - registry.redhat.io/quay/quay-operator-rhel8@sha256:2b17143553e30e62aa15f9c63d0be55b89dd02c5d032aa58c279dbb8bb5100b1
      - registry.redhat.io/quay/quay-rhel8@sha256:0bfb107a07c6b275d8064e3fba32836cf94d20383edb115da6ee25d1fa52ec9d
(...)

Quais são as opções disponíveis?

Há uma abordagem muito fácil, que é espelhar todo o catálogo do Operator Lifecycle Manager (OLM), mas isso ocupará até 1,5 TB de espaço em disco no momento em que este artigo foi escrito (novembro de 2022), tornando essa abordagem quase impossível de ser adotada na grande maioria dos clusters OpenShift desconectados.

Talvez não seja isso que você esteja procurando.


Fazer espelhamento das imagens relacionadas

Alguns operadores exigem imagens relacionadas que não são baixadas na etapa de poda dos índices. Dê uma olhada no CSV do operador para ver se ele precisa de imagens adicionais. Por exemplo, o OCS requer as seguintes imagens relacionadas:

image:
registry.redhat.io/ocs4/ocs-operator-bundle@sha256:64cdf16dbf585e2829b1c145bc2f4649716b0e8487bd863b4f2578d64a14ee9d"
relatedImages:
registry.redhat.io/rhceph/rhceph-4-rhel8@sha256:4b16d6f54a9ae1e43ab0f9b76f1b0860cc4feebfc7ee0e797937fc9445c5bb0a
registry.redhat.io/openshift4/ose-csi-external-provisioner@sha256:e90420f29e9cbf9e7c23ad910c721bea793811fc76c852aef2fa826aa6c3b2c6
registry.redhat.io/ocs4/mcg-core-rhel8@sha256:2e9993a365a1032d84610563817453aade2de343e1e1abfc09b4e8d7f24f91c0
registry.redhat.io/ocs4/ocs-rhel8-
(...)

⚠️ Se esse for o caso, você deve carregar as imagens relacionadas no seu registry privado, no mesmo catálogo do pacote do operador. Se não fizer isso, a instalação do operador falhará.

Agora que você entende que alguns operadores precisam de conteúdo adicional, vamos entender como resolver esse problema.


Atualizar catálogo com imagens relacionadas

Você pode fazer todo o processo de criação de um novo catálogo contendo o conteúdo necessário 100% manualmente, mas tudo se torna um pouco mais demorado e complexo.

Para facilitar as coisas, você pode usar um script python desenvolvido pelo Red Hat CoP para baixar as imagens de operador de uma lista predefinida, juntamente com as imagens relacionadas.


⚠️ Você deve executá-lo em seu bastion host.


Pressupostos

- Versão do OpenShift: 4.8

- Registry: Você já tem um registry local instalado e funcional.

- URL do registry local: registry.rhbrlabs.com

- Bastion: Tem acesso à Internet.

Você não tem um registry privado rodando localmente? Eu escrevi sobre como criar um. Clique aqui para conferir.


Acesso externo ao registry

Instale os requisitos do script python de acordo com o arquivo README.md. Em seguida, faça os logins nos registries necessários:

[root@bastion ocp]# podman login registry.rhbrlabs.com:5000
[root@bastion ocp]# podman login registry.redhat.io
[root@bastion ocp]# podman login quay.io

Isso gerará o arquivo auth.json (/run/user/0/containers/auth.json). Salve-o para poder usá-lo mais tarde.


Lista de espelhamento

Edite os arquivos offline_operators_list e offline_operators_list.yaml para incluir os operadores que você deseja espelhar.

No meu cenário, eu precisava do Quay e do OCS com suas imagens relacionadas. Esses operadores também precisam de local-storage (não declarado no CSV). Também é importante instalar o cluster-logging.

✅ Recomendo sempre ativar ambos.


[root@bastion openshift-disconnected-operators-master]# cat offline_operators_list
local-storage-operator
ocs-operator
quay-operator
openshift-marketplace
ocs-must-gather-rhel8
odf-operator
cluster-logging
[root@bastion openshift-disconnected-operators-master]# cat offline_operators_list.yaml
operators:
  - name: local-storage-operator
  - name: ocs-operator
  - name: quay-operator
  - name: openshift-marketplace
  - name: ocs-must-gather-rhel8
  - name: odf-operator
  - name: cluster-logging

Agora, execute o processo de espelhamento:

[root@bastion openshift-disconnected-operators-master]# ./mirror-operator-catalogue.py \
--catalog-version v4.8 \
--authfile ~/ocp/localregistry/openshift-disconnected-operators-master/auth.json \
--registry-olm registry.rhbrlabs.com:5000/repository \
--registry-catalog registry.rhbrlabs.com:5000/repository \
--operator-file ~/ocp/localregistry/openshift-disconnected-operators-master/offline_operators_list \
--icsp-scope=namespace \
--ocp-version 4.8 \
--operator-channel 4.8

No final do processo, você deverá ver mensagens como esta:

Finished mirroring related images.
Creating Image Content Source Policy YAML...
Creating Mapping File...
Creating Image manifest file...
Creating Catalog Source YAML...
Catalogue creation and image mirroring complete
See Publish folder for the image content source policy and catalog source yaml files to apply to your cluster

O processo de espelhamento gerará alguns arquivos YAML no diretório publish.

[root@bastion openshift-disconnected-operators-master]# ls publish/
image_manifest.txt  mapping.txt  mirror_log.txt  olm-icsp.yaml  rh-catalog-source.yaml

Catálogo espelhado personalizado

Desative as origens padrão do catálogo OLM:

[root@bastion publish]# oc patch OperatorHub cluster --type json -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'

Aplique os arquivos YAML do diretório publish. A política de origem de conteúdo de imagens criará uma nova renderização de MCO (Machine Config Operator), que iniciará o reboot dos nós do cluster. Tenha isso em mente antes de executar esta etapa.

⚠️ É necessário aguardar até que isso seja concluído antes de tentar instalar os operadores do catálogo.


[root@bastion publish]# oc create -f olm-icsp.yaml
imagecontentsourcepolicy.operator.openshift.io/olm-image-content-source created
[root@bastion publish]# oc create -f rh-catalog-source.yaml
catalogsource.operators.coreos.com/custom-redhat-operators created

Após o OLM (Operator Lifecycle Manager) pesquisar automaticamente o índice referenciada de imagens no catálogo fonte (intervalo regular de 30 minutos), verifique se os novos pacotes foram adicionados com êxito:

[root@bastion localregistry]# oc get packagemanifests -n openshift-marketplace\
NAME                     CATALOG             AGE
quay-operator            Red Hat Operators   42m
ocs-operator             Red Hat Operators   42m
cluster-logging          Red Hat Operators   42m
local-storage-operator   Red Hat Operators   42m

Agora, acesse seu Openshift Operator Hub e verifique os Operators disponíveis.

Disconnected Custom OLM

Os Operadores adicionados têm suas imagens relacionadas, o que os torna completos em termos de requisitos. Instale-os para verificar se tudo está em seu devido lugar.

Você pode ter quantos catálogos personalizados precisar. Vá para Configuração global do OpenShift e pesquise Operator Hub. A lista de catálogos disponíveis pode ser encontrada lá.

Disconnected Operators Installed

É isso aí. Essa foi um pouco complicada de resolver. Espero que esta postagem tenha sido útil para você. Se tiver alguma dúvida, envie uma mensagem. Até mais!

It worked!

Você gostou do conteúdo? Dê uma olhada nestes outros artigos interessantes! 🔥



Pode ajudar?

Por favor apóie este conteúdo clicando em um banner de nossos anunciantes. ❤️

comments powered by Disqus