|
| 1 | +--- |
| 2 | +layout: blog |
| 3 | +title: "Redirecionamento do registro de imagens k8s.gcr.io para registry.k8s.io - O que você precisa saber" |
| 4 | +date: 2023-03-10T17:00:00.000Z |
| 5 | +slug: image-registry-redirect |
| 6 | +--- |
| 7 | + |
| 8 | +**Autores**: Bob Killen (Google), Davanum Srinivas (AWS), Chris Short (AWS), Frederico Muñoz (SAS |
| 9 | +Institute), Tim Bannister (The Scale Factory), Ricky Sadowski (AWS), Grace Nguyen (Expo), Mahamed |
| 10 | +Ali (Rackspace Technology), Mars Toktonaliev (independent), Laura Santamaria (Dell), Kat Cosgrove |
| 11 | +(Dell) |
| 12 | + |
| 13 | + |
| 14 | +Na segunda-feira, dia 20 de março, o registro de imagens k8s.gcr.io [vai ser redirecionado para o registro de imagens da comunidade](https://kubernetes.io/blog/2022/11/28/registry-k8s-io-faster-cheaper-ga/), **registry.k8s.io**. |
| 15 | + |
| 16 | + |
| 17 | +## O que você precisa saber sobre essa mudança |
| 18 | +- Na segunda-feira, dia 20 de março, o tráfego do registro de imagens antigo k8s.gcr.io vai ser redirecionado para |
| 19 | +registry.k8s.io com o objetivo final de encerramento do k8s.gcr.io. |
| 20 | +- Se você está executando em um ambiente restrito, e aplica políticas rígidas de acesso a nomes de domínios |
| 21 | +ou endereços IPs limitado a k8s.gcr.io, **o pull de imagens não vai funcionar** depois que o k8s.gcr.io começar |
| 22 | +a redirecionar para o novo registro de imagens. |
| 23 | +- Um pequeno subconjunto de clientes que não seguem o padrão não lidam com redirecionamentos HTTP, e neste caso eles |
| 24 | +precisam ser apontados diretamente para registry.k8s.io. |
| 25 | +- O redirecionamento é um paliativo para ajudar os usuários a fazer essa troca. O registro obsoleto k8s.gcr.io será desativado em algum momento. **Por isso, atualize seus manifestos o mais rápido possível para apontar para registry.k8s.io**. |
| 26 | +- Se você mantém seu próprio registro de imagens, você pode copiar as imagens que você precisa para reduzir o tráfego |
| 27 | +ao registro de imagens da comunidade. |
| 28 | + |
| 29 | +Se você acha que vai ser impactado, ou gostaria de saber mais sobre essa mudança, leia mais abaixo. |
| 30 | + |
| 31 | +## Como eu posso checar se eu vou ser afetado? |
| 32 | +Para testar a conectividade ao registry.k8s.io (e saber se consegue baixar as imagens), pode executar o |
| 33 | +comando abaixo em um namespace da sua escolha: |
| 34 | + |
| 35 | +``` |
| 36 | +kubectl run hello-world -ti --rm --image=registry.k8s.io/busybox:latest --restart=Never -- date |
| 37 | +``` |
| 38 | + |
| 39 | +Quando executar o comando acima, é esperada a seguinte saída caso tudo esteja funcionando corretamente: |
| 40 | + |
| 41 | +``` |
| 42 | +$ kubectl run hello-world -ti --rm --image=registry.k8s.io/busybox:latest --restart=Never -- date |
| 43 | +Fri Feb 31 07:07:07 UTC 2023 |
| 44 | +pod "hello-world" deleted |
| 45 | +``` |
| 46 | + |
| 47 | +## Quais erros são esperados caso eu seja afetado? |
| 48 | +Os erros podem depender do tipo de agente de execução de contêiner que você está usando, e para qual endpoint você está |
| 49 | +sendo direcionado, mas devem ser erros como `ErrImagePull`, `ImagePullBackOff`, ou falha na criação do |
| 50 | +container com o aviso `FailedCreatePodSandBox`. |
| 51 | + |
| 52 | +Abaixo um exemplo de uma mensagem de erro mostrando uma instalação por trás de um proxy falhando devido um certificado desconhecido: |
| 53 | + |
| 54 | +``` |
| 55 | +FailedCreatePodSandBox: Failed to create pod sandbox: rpc error: code = Unknown desc = Error response from daemon: Head “https://us-west1-docker.pkg.dev/v2/k8s-artifacts-prod/images/pause/manifests/3.8”: x509: certificate signed by unknown authority |
| 56 | +``` |
| 57 | + |
| 58 | +## Quais imagens serão afetadas? |
| 59 | +**TODAS** as imagens no k8s.gcr.io serão afetadas por essa mudança. O k8s.gcr.io hospeda muitas imagens além das releases do Kubernetes. Um grande número de subprojetos do Kubernetes hospedam seus projetos nele também. Alguns exemplos incluem |
| 60 | +as imagens `dns/k8s-dns-node-cache`, `ingress-nginx/controller`, e |
| 61 | +`node-problem-detector/node-problem-detector`. |
| 62 | + |
| 63 | +## Eu fui afetado, o que devo fazer? |
| 64 | +Para usuários afetados que usam um ambiente restrito, a melhor opção é copiar as imagens necessárias |
| 65 | +para um registro privado ou configurar um cache de _pull-through_ nos seu registro de imagens. |
| 66 | + |
| 67 | +Existem várias ferramentas para copiar imagens entre registries. [Crane](https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane_copy.md) é uma dessas ferramentas, as imagens podem ser copiadas para um registro de imagens privado com `crane copy SRC DST`. Também existem ferramentas específicas de fornecedores, como o [gcrane](https://cloud.google.com/container-registry/docs/migrate-external-containers#copy) que faz uma função similar mas simplificada para a plataforma da Google. |
| 68 | + |
| 69 | + |
| 70 | +## Como eu posso encontrar quais imagens estão usando o registro de imagens antigo, e corrigir elas? |
| 71 | + |
| 72 | +**Opção 1**: Veja esse comando do kubectl no [blog post anterior](/pt-br/blog/2023/02/06/k8s-gcr-io-freeze-announcement/#próximos-passos): |
| 73 | + |
| 74 | +``` |
| 75 | +kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" |\ |
| 76 | +tr -s '[[:space:]]' '\n' |\ |
| 77 | +sort |\ |
| 78 | +uniq -c |
| 79 | +``` |
| 80 | + |
| 81 | +**Opção 2**: Um plugin do `kubectl` [krew](https://krew.sigs.k8s.io/) chamado [`community-images`](https://github.com/kubernetes-sigs/community-images#kubectl-community-images) foi desenvolvido para escanear e reportar qualquer |
| 82 | +imagem usando o endpoint k8s.gcr.io. |
| 83 | + |
| 84 | +Se você tem o krew instalado, pode instalar o plugin com: |
| 85 | + |
| 86 | +``` |
| 87 | +kubectl krew install community-images |
| 88 | +``` |
| 89 | + |
| 90 | +E gerar um relatório com: |
| 91 | + |
| 92 | +``` |
| 93 | +kubectl community-images |
| 94 | +``` |
| 95 | + |
| 96 | +Para métodos alternativos de instalação ou exemplos de saída, veja o repositório [kubernetes-sigs/community-images](https://github.com/kubernetes-sigs/community-image). |
| 97 | + |
| 98 | +**Opção 3**: Se você não tem acesso diretamente ao cluster, ou gerencia muitos clusters - o melhor |
| 99 | +caminho é executar uma busca sobre seus manifestos e charts por _"k8s.gcr.io"_. |
| 100 | + |
| 101 | +**Opção 4**: Se você quer prevenir a execução de imagens a partir do k8s.gcr.io no seu cluster, existem políticas |
| 102 | +para [Gatekeeper](https://open-policy-agent.github.io/gatekeeper-library/website/) e |
| 103 | +[Kyverno](https://kyverno.io/) disponíveis no [repositório de melhores práticas para AWS EKS](https://github.com/aws/aws-eks-best-practices/tree/master/policies/k8s-registry-deprecation) que vão bloquear o pull das imagens. Você |
| 104 | +pode usar essas políticas de terceiros com qualquer cluster Kubernetes. |
| 105 | + |
| 106 | +**Opção 5**: Como a **ÚLTIMA** opção, você pode usar um [webhook de admissão](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#what-are-admission-webhooks) para alterar o |
| 107 | +endereço da imagem dinamicamente. Isso deve ser feito apenas como uma medida paliativa enquanto os |
| 108 | +seus manifestos são atualizados. Você pode encontrar um webhook de admissão e uma política do |
| 109 | +Kyverno (de terceiros) em [k8s-gcr-quickfix](https://github.com/abstractinfrastructure/k8s-gcr-quickfix). |
| 110 | + |
| 111 | + |
| 112 | +## Por que o Kubernetes mudou para um registro de imagem diferente? |
| 113 | + |
| 114 | +O k8s.gcr.io é hospedado em um domínio customizado no [Google Cloud Registry (GCR)](https://cloud.google.com/container-registry?hl=pt-br) |
| 115 | +que foi configurado exclusivamente para o projeto do Kubernetes. Isso funcionou desde o nascimento do projeto, |
| 116 | +e nós agradecemos ao Google por prover esses recursos, mas atualmente, existem outros provedores de nuvem e fornecedores |
| 117 | +que gostariam de hospedar imagens para fornecer uma melhor experiência para as pessoas nas suas plataformas. |
| 118 | +Além do Google ter [renovado o compromisso de doar $3 milhões](https://www.cncf.io/google-cloud-recommits-3m-to-kubernetes/) para manter a infraestrutura do projeto ano passado, a Amazon Web Services anunciou uma doação correspondente |
| 119 | +[durante o seu keynote na Kubecon NA 2022 em Detroit](https://youtu.be/PPdimejomWo?t=236). Isso proporcionará |
| 120 | +uma melhor experiência para os usuários (servidores mais pertos = downloads mais rápidos) e vai reduzir |
| 121 | +a largura de banda de saída e os custos do GCR ao mesmo tempo. |
| 122 | + |
| 123 | +Para mais detalhes sobre essa mudança, leia mais em [registry.k8s.io: rápido, barato e em disponibilidade geral (GA)](/pt-br/blog/2022/11/28/registry-k8s-io-faster-cheaper-ga/). |
| 124 | + |
| 125 | + |
| 126 | +## Por que está sendo feito um redirecionamento? |
| 127 | + |
| 128 | +O projeto mudou para o [registry.k8s.io ano passado na versão 1.25](/pt-br/blog/2022/11/28/registry-k8s-io-faster-cheaper-ga/); entretanto, a maioria do tráfego de pull de imagens ainda continua sendo |
| 129 | +feito para o antigo endpoint k8s.gcr.io. Isso não foi sustentável para nós como um projeto pois não estamos |
| 130 | +usando os recursos que foram doados para o projeto por outros provedores e estamos correndo o risco de ficar |
| 131 | +sem recursos dado o custo de servir esse tráfego. |
| 132 | + |
| 133 | +O redirecionamento vai permitir que o projeto aproveite as vantagens desses novos recursos, reduzindo |
| 134 | +significantemente os cursos da largura de banda de saída. Nós esperamos que apenas um pequeno subconjunto |
| 135 | +de usuários executando em ambientes restritos ou clientes antigos que não consigam fazer o redirecionamento |
| 136 | +apropriadamente sejam impactados. |
| 137 | + |
| 138 | +## O que vai acontecer com o k8s.gcr.io? |
| 139 | +Para além do redirecionamento, o k8s.gcr.io vai ser congelado [e não vai ser atualizado com novas imagens |
| 140 | +depois do dia 03 de abril de 2023](https://kubernetes.io/blog/2023/02/06/k8s-gcr-io-freeze-announcement/). |
| 141 | +O `k8s.gcr.io` não vai receber nenhuma nova release, patch ou atualização de segurança. Ele continuará |
| 142 | +disponível para ajudar as pessoas na migração, mas **SERÁ** removido totalmente no futuro. |
| 143 | + |
| 144 | +## Ainda tenho perguntas, onde devo ir? |
| 145 | +Para mais informações sobre o registry.k8s.io e porque foi desenvolvido, leia em [registry.k8s.io: rápido, barato e em disponibilidade geral (GA)](/pt-br/blog/2022/11/28/registry-k8s-io-faster-cheaper-ga/). |
| 146 | + |
| 147 | +Se você quer saber mais sobre o congelamento das imagens e as últimas imagens que vão ficar disponíveis lá, |
| 148 | +leia o blog post: [kk8s.gcr.io O registro de imagens será congelado a partir de 3 de abril de 2023](/pt-br/blog/2023/02/06/k8s-gcr-io-freeze-announcement/). |
| 149 | + |
| 150 | +Informações sobre a arquitetura do registry.k8s.io e sobre sua [árvore de decisão de tratamento das requisições](https://github.com/kubernetes/registry.k8s.io/blob/8408d0501a88b3d2531ff54b14eeb0e3c900a4f3/cmd/archeio/docs/request-handling.md) |
| 151 | +pode ser encontradas no repositório [kubernetes/registry.k8s.io](https://github.com/kubernetes/registry.k8s.io). |
| 152 | + |
| 153 | +Se você encontrar um bug no novo registro de imagens ou no redirecionamento, por favor abra uma issue no repositório [kubernetes/registry.k8s.io](https://github.com/kubernetes/registry.k8s.io/issues/new/choose). |
| 154 | +**Por favor verifique se já não existe uma issue aberta parecida antes de abrir uma nova**. |
| 155 | + |
0 commit comments