{"id":18319620,"url":"https://github.com/mycloudlab/quay-clair-install","last_synced_at":"2026-01-22T16:41:44.984Z","repository":{"id":95758065,"uuid":"294434621","full_name":"mycloudlab/quay-clair-install","owner":"mycloudlab","description":"Este repositório contém os procedimentos relativos a instalação do Red Hat Quay com o Clair para scanner de vulnerabilidades","archived":false,"fork":false,"pushed_at":"2020-09-10T14:34:26.000Z","size":82,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-15T08:19:01.895Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mycloudlab.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-10T14:32:06.000Z","updated_at":"2020-09-10T14:34:29.000Z","dependencies_parsed_at":"2023-05-21T22:45:17.595Z","dependency_job_id":null,"html_url":"https://github.com/mycloudlab/quay-clair-install","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mycloudlab%2Fquay-clair-install","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mycloudlab%2Fquay-clair-install/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mycloudlab%2Fquay-clair-install/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mycloudlab%2Fquay-clair-install/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mycloudlab","download_url":"https://codeload.github.com/mycloudlab/quay-clair-install/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248054195,"owners_count":21039952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T18:13:47.876Z","updated_at":"2026-01-22T16:41:43.510Z","avatar_url":"https://github.com/mycloudlab.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# instalação do quay via operator\n\nA instalação do quay pode ser feita via operator openshift 4.\n\n\n## Pré requisitos\nConforme a documentação [Deployments em produção](https://access.redhat.com/documentation/en-us/red_hat_quay/3.3/html/deploy_red_hat_quay_on_openshift_with_quay_operator/deploying_red_hat_quay#production_deployments) os seguintes pontos merecem atenção especial:\n\n- Recursos computacionais (requerimento mínimo) \n- Storage para armazenamento das imagens\n- Banco de dados para o Quay\n- Banco de dados para o clair\n- Certificado digital para acesso ao registry Quay\n\n### Recursos computacionais\n\nOs recursos computacionais necessários para a instalação em produção irá depender da carga a ser despreendida no processamento e escaneamento das imagens.\n\nPara uma estimativa melhor analisar a carga com o uso e definir um limite próximo dos valores encontrados.\n\n### Storage de armazenamento das imagens\n\nPara que seja possível o armazenamento das imagens, é um pré requisito a configuração de um mecanismo de storage.\n\nA instalação do quay via operator openshift suporta as seguintes storages conforme a [documentação de HA do quay](https://access.redhat.com/documentation/en-us/red_hat_quay/3.3/html-single/deploy_red_hat_quay_-_high_availability/index#prerequisites):\n\n- Amazon S3 \n- Azure Blob Storage\n- Google Cloud Storage\n- Ceph Object Gateway\n- OpenStack Swift\n- CloudFront + S3\n- NooBaa S3 Storage (Technology Preview)\n\n\nPara detalhes de cada storage acesse a [documentação e veja o tipo de parametros a serem preenchidos para o backend escolhido](https://access.redhat.com/documentation/en-us/red_hat_quay/3.3/html/deploy_red_hat_quay_on_openshift_with_quay_operator/customizing_your_red_hat_quay_cluster#registry_storage_backend_types).\n\n### Banco de dados Quay\n\nO quay utiliza um banco de dados postgres em sua instalação, para tanto o quay tem a habilidade de lidar com o banco de dados de 2 formas:\n\n- instancia gerenciada\n- instancia externa\n\n*Instancia gerenciada* \n\nUtiliza um banco de dados que é instalado diretamente no openshift que isoladamente fornece as funcionalidades necessárias para executar o quay.\n\n*Instancia externa*\n\nA Instancia externa é fornecida para a instalação repassando as credenciais e informações de conexão para o operator.\n\nCertifique-se de garantir que o banco de dados tenha a extensão `pg_trgm` disponível no banco de dados. Caso não tenha, basta executar o comando abaixo para adicionar a extensão ao banco. Caso ocorra um erro abaixo consulte a [documentação do quay](https://access.redhat.com/documentation/en-us/red_hat_quay/3.3/html-single/deploy_red_hat_quay_-_high_availability/index#set_up_load_balancer_and_database) para procedimentos de instalação da extensão `pg_trgm`.\n\n```psql\n\\c \u003cquay-database\u003e;\nCREATE EXTENSION IF NOT EXISTS pg_trgm;\n```\n\n### Banco de dados Clair\n\nAssim como o quay, o clair utiliza um banco de dados postgres para armazenamento de dados referentes ao scanning das imagens. A forma de operar é exatamente a mesma do quay e os procedimentos citados na seção [Banco de dados Quay](#Banco de dados Quay).\n\n### Certificado digital para acesso ao registry Quay\n\nO procedimento de instalação do quay requer que a rota configurada apresente um certificado válido. O não cumprimento dessa exigência, pode requer configurações adicionais que podem tornar a solução vunerável e não fazem parte do escopo deste documento.\n\n\n\n## Instalação do Quay\n\nPara a instalação do quay é necessário a instalação no cluster openshift do operador do quay.\n\nOs passos abaixo são para uma instalação de quay que utiliza uma storage local com o quay e clair instalados usando os certificados providos pelo openshift no router. O banco de dados é uma instalação externa de postgres para o quay e clair.\n\nPara tanto são necessários os seguintes procedimentos:\n\n### 1 - Criação do projeto `quay-enterprise`\n\nNeste projeto serão armazenados as configurações de execução e os containers para execução do operador e registry Quay.\n\n### 2 - Instalação do quay operator \n\nA instalação do quay operator é feita via operator hub, conforme imagem abaixo:\n\n![Instalação do operator quay](images/quay-1.png)\n\n### 3 - Credencial para download das imagens\n\nDeverá ser fornecido na instalação do quay uma credencial para download das imagens do quay dos repositórios da Red Hat.\n\nPara a criação da credencial [acesse a solution para obter uma secret com as credenciais de acesso aos registries da redhat](https://access.redhat.com/solutions/3533201), e execute os procedimentos de instalação da secret `redhat-pull-secret` no projeto `quay-enterprise`.\n\n\n### 4 - Criação das secrets de banco de dados\n\nPara que o quay e o clair acessem o banco de dados é necessário a criação das secrets que conterão acesso ao banco de dados, são necessários permissão de DDL para o usuário no banco de dados especificado.\n\nO comando abaixo cria as secrets de acesso ao quay e clair.\n\n```bash\noc create secret generic db-quay-secret \\\n    --from-literal=database-username=\u003cusuario do db quay\u003e \\\n    --from-literal=database-password=\u003csenha do db quay\u003e \\\n    --from-literal=database-root-password=\u003csenha do db quay\u003e  \\\n    --from-literal=database-name=\u003cnome do banco do quay\u003e\n\n\noc create secret generic db-clair-secret \\\n    --from-literal=database-username=\u003cusuario do db clair\u003e \\\n    --from-literal=database-password=\u003csenha db clair\u003e \\\n    --from-literal=database-root-password=\u003csenha db clair\u003e \\\n    --from-literal=database-name=\u003cnome do banco do clair\u003e\n```\n\n### 5 - Secret do certificado TLS\n\nComo o registry quay é um registry seguro, é necessário que seja fornecido uma chave TLS para a instalação.\n\nEstes certificados serão usados para customização do TLS de acesso aos recursos do registry.\n\nEste passo pode ser opcional se deixar a configuração do quay.tls.termination como edge, fazendo com que a terminação SSL ocorra no router do openshift com os certificados instalados no router.\n\n```bash\noc create secret tls custom-quay-ssl \\\n   --key=\u003cssl_private_key_file\u003e --cert=\u003cssl_certificate_file\u003e\n```\n\nA documentação referente a estes procedimentos relacionados ao registry são encontrados na [documentação](https://access.redhat.com/documentation/en-us/red_hat_quay/3.3/html/deploy_red_hat_quay_on_openshift_with_quay_operator/customizing_your_red_hat_quay_cluster#providing_ssl_certificates).\n\n\n### 6 - Instalação do quay via operator\n\nA instalação do quay e clair via operator é feita usando o CRD `QuayEcosystem` disponibilizado pelo quay operator.\n\n\n\n```yaml\n# caso tenha instalado anteriormente\noc delete -n quay-enterprise quayecosystem/example-quayecosystem\n\noc apply -n quay-enterprise -f - \u003c\u003cEOF\napiVersion: redhatcop.redhat.io/v1alpha1\nkind: QuayEcosystem\nmetadata:\n  name: example-quayecosystem\nspec:\n  quay:\n    # secret usada para acesso ao registry.redhat.io para download das imagens do quay \n    imagePullSecretName: redhat-pull-secret\n    database:\n      # nome do secret usado para acessar o quay database\n      credentialsSecretName: db-quay-secret\n      # endereço do servidor postgres no formato \u003chost\u003e:\u003cport\u003e\n      server: postgresql.postgres.svc:5432\n\n    externalAccess:\n      tls: \n        # nome da secret caso tenha sido feito o passo 5\n        secretName: custom-quay-ssl\n        # terminação TLS usada na rota\n        termination: passthrough\n\n        # Neste exemplo foi usado um registry backend (storage) s3. \n        # A documentação permite a configuração de vários storage backends\n        # para outras configurações consulte a documentação nas seções acima\n    registryBackends:\n      - name: s3\n        s3:\n          accessKey: \u003caccessKey\u003e\n          bucketName: \u003cbucketName\u003e\n          secretKey: \u003csecretKey\n          host: \u003chost\u003e\n\n  clair:\n    # habilita na instalação o clair\n    enabled: true\n    database:\n      # nome da secret usado para acessar o clair database\n      credentialsSecretName: db-clair-secret\n      # endereço do servidor postgres no formato \u003chost\u003e:\u003cport\u003e\n      server: postgresql.postgres.svc:5432\nEOF\n```\n\nCom essas informações o quay e clair é instalado com acessos.\n\n\n## Acesso externo ao clair\n\nPara que seja possível a utilização do clair fora do quay para uso por exemplo em um pipeline é necessário a criação de um service e uma rota.\n\n\n\n```yaml\noc create -n quay-enterprise -f - \u003c\u003cEOF\nkind: Service\napiVersion: v1\nmetadata:\n  name: clair-api-pipeline\n  namespace: quay-enterprise\nspec:\n  ports:\n    - name: clair-api-pipeline\n      protocol: TCP\n      port: 6062\n      targetPort: 6062\n  selector:\n    app: quay-operator\n    quay-enterprise-component: clair\n    quay-enterprise-cr: example-quayecosystem\nEOF\n```\n\nApós isso configure uma rota de acesso a este componente. Para testar o seu funcionamento envie uma imagem para o quay e solicite o scanning usando a ferramenta klar. Esta ferramenta klar está disponível no [github do projeto](https://github.com/optiopay/klar). \n\n```bash\nexport CLAIR_ADDR=clair-quay-enterprise.apps.cluster-brasilia-44d0.brasilia-44d0.sandbox1489.opentlc.com:80           \nexport DOCKER_USER=quay\nexport DOCKER_PASSWORD=password\n\n./klar  example-quayecosystem-quay-quay-enterprise.apps.cluster-brasilia-44d0.brasilia-44d0.sandbox1489.opentlc.com/teste/openjdk:10\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmycloudlab%2Fquay-clair-install","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmycloudlab%2Fquay-clair-install","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmycloudlab%2Fquay-clair-install/lists"}