|
Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official. |
Atualizando o cert-manager
O Rancher é compatível com a versão da API cert-manager.io/v1 e foi testado pela última vez com a versão v1.13.1 do cert-manager.
O Rancher utiliza o cert-manager para gerar e renovar automaticamente certificados TLS para implantações HA do Rancher. A partir do outono de 2019, três mudanças importantes no cert-manager estão programadas para ocorrer, e você precisa agir se tiver uma implantação HA do Rancher:
Para abordar essas mudanças, este guia fará duas coisas:
-
Documente o procedimento para fazer upgrade do cert-manager.
-
Explicar as mudanças na API do cert-manager e fornecer um link para a documentação oficial do cert-manager para migrar seus dados
|
Importante:
Se você estiver fazendo upgrade do cert-manager para a versão mais recente a partir de uma versão anterior a 1.5, siga os passos em Opção C abaixo para fazê-lo. Observe que você não precisa reinstalar o Rancher para realizar essa atualização. |
Faça upgrade do cert-manager.
O namespace usado nestas instruções depende do namespace em que o cert-manager está atualmente instalado. Se estiver no kube-system, use-o nas instruções abaixo. Você pode verificar executando kubectl get pods --all-namespaces e checando em qual namespace os pods cert-manager-* estão listados. Não altere o namespace em que o cert-manager está sendo executado, pois isso pode causar problemas.
Para fazer upgrade do cert-manager, siga estas instruções:
Opção A: Faça upgrade do cert-manager com acesso à Internet.
Clique para expandir
-
Faça backup dos recursos existentes como precaução
kubectl get -o yaml --all-namespaces \ issuer,clusterissuer,certificates,certificaterequests > cert-manager-backup.yamlImportante:Se você estiver atualizando de uma versão anterior a 0.11.0, atualize a apiVersion em todos os seus recursos de backup de
certmanager.k8s.io/v1alpha1paracert-manager.io/v1alpha2. Se você usar anotações do cert-manager em qualquer um dos seus outros recursos, precisará atualizá-las para refletir o novo grupo de API. Para mais detalhes, consulte a documentação sobre mudanças adicionais nas anotações. -
Desinstale a implantação existente
helm uninstall cert-managerExclua a CustomResourceDefinition usando o link para a versão vX.Y.Z que você instalou
kubectl delete -f https://github.com/cert-manager/cert-manager/releases/download/vX.Y.Z/cert-manager.crds.yaml -
Instale os recursos da CustomResourceDefinition separadamente
kubectl apply --validate=false -f https://github.com/cert-manager/cert-manager/releases/download/vX.Y.Z/cert-manager.crds.yamlSe você estiver executando o Kubernetes v1.15 ou anterior, precisará adicionar a flag
--validate=falseao seu comandokubectl applyacima. Caso contrário, você receberá um erro de validação relacionado ao campox-kubernetes-preserve-unknown-fieldsnos recursos da CustomResourceDefinition do cert-manager. Este é um erro benigno e ocorre devido à forma como o kubectl realiza a validação de recursos. -
Crie o namespace para o cert-manager, se necessário
kubectl create namespace cert-manager -
Adicione o repositório Helm da Jetstack
helm repo add jetstack https://charts.jetstack.io -
Atualize o cache do repositório de charts do Helm.
helm repo update -
Instale a nova versão do cert-manager
helm install \ cert-manager jetstack/cert-manager \ --namespace cert-manager -
Restaure os recursos de backup
kubectl apply -f cert-manager-backup.yaml
Opção B: Faça upgrade do cert-manager em um ambiente air-gapped
Clique para expandir
=== Pré-requisitos
Antes de realizar o upgrade, você deve preparar seu ambiente air-gapped adicionando as imagens de contêiner necessárias ao seu repositório privado e baixando ou renderizando os arquivos de manifesto do Kubernetes necessários.
-
Siga o guia para Preparar seu Repositório Privado com as imagens necessárias para fazer upgrade.
-
De um sistema conectado à internet, adicione o repositório cert-manager ao Helm
helm repo add jetstack https://charts.jetstack.io helm repo update -
Busque o último chart cert-manager disponível no repositório de charts do Helm.
helm fetch jetstack/cert-manager -
Renderize o template do cert-manager com as opções que você gostaria de usar para instalar o chart. Lembre-se de definir a opção
image.repositorypara puxar a imagem do seu registro privado. Isso criará um diretóriocert-managercom os arquivos de manifesto do Kubernetes.O comando Helm 3 é o seguinte:
helm template cert-manager ./cert-manager-v0.12.0.tgz --output-dir . \ --namespace cert-manager \ --set image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-controller --set webhook.image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-webhook --set cainjector.image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-cainjector -
Baixe o arquivo CRD necessário para o cert-manager (antigo e novo)
curl -L -o cert-manager-crd.yaml https://raw.githubusercontent.com/cert-manager/cert-manager/release-0.12/deploy/manifests/00-crds.yaml curl -L -o cert-manager/cert-manager-crd-old.yaml https://raw.githubusercontent.com/cert-manager/cert-manager/release-X.Y/deploy/manifests/00-crds.yaml
=== Instale o cert-manager
-
Faça backup dos recursos existentes como precaução
kubectl get -o yaml --all-namespaces \ issuer,clusterissuer,certificates,certificaterequests > cert-manager-backup.yamlImportante:Se você estiver atualizando de uma versão anterior a 0.11.0, atualize a apiVersion em todos os seus recursos de backup de
certmanager.k8s.io/v1alpha1paracert-manager.io/v1alpha2. Se você usar anotações do cert-manager em qualquer um dos seus outros recursos, precisará atualizá-las para refletir o novo grupo de API. Para mais detalhes, consulte a documentação sobre mudanças adicionais nas anotações. -
Exclua a instalação existente do cert-manager
kubectl -n cert-manager \ delete deployment,sa,clusterrole,clusterrolebinding \ -l 'app=cert-manager' -l 'chart=cert-manager-v0.5.2'Exclua a CustomResourceDefinition usando o link para a versão vX.Y que você instalou
kubectl delete -f cert-manager/cert-manager-crd-old.yaml -
Instale os recursos da CustomResourceDefinition separadamente
kubectl apply -f cert-manager/cert-manager-crd.yamlImportante:Se você estiver executando o Kubernetes v1.15 ou anterior, precisará adicionar a flag
--validate=falseao seu comandokubectl applyacima. Caso contrário, você receberá um erro de validação relacionado ao campox-kubernetes-preserve-unknown-fieldsnos recursos da CustomResourceDefinition do cert-manager. Este é um erro benigno e ocorre devido à forma como o kubectl realiza a validação de recursos. -
Crie o namespace para o cert-manager
kubectl create namespace cert-manager -
Instale o cert-manager
kubectl -n cert-manager apply -R -f ./cert-manager -
Restaure os recursos de backup
kubectl apply -f cert-manager-backup.yaml
Opção C: Faça upgrade do cert-manager a partir da versão 1.5 ou anterior
Clique para expandir
Anteriormente, para fazer upgrade do cert-manager a partir de uma versão mais antiga, recomendava-se desinstalar e reinstalar o Rancher. Usando o método abaixo, você pode fazer upgrade do cert-manager sem esses passos adicionais para preservar melhor seu ambiente de produção:
-
Instale
cmctl, a ferramenta CLI do cert-manager, usando o guia de instalação. -
Certifique-se de que quaisquer recursos personalizados do cert-manager que possam ter sido armazenados no etcd em uma versão de API obsoleta sejam migrados para v1:
cmctl upgrade migrate-api-version
Consulte os documentos de migração da versão da API para mais informações. Por favor, veja também os docs para fazer upgrade de 1.5 para 1.6 e os docs para fazer upgrade de 1.6 para 1.7 se necessário.
-
Faça upgrade do cert-manager para v1.7.1 com um
helm upgradenormal. Você pode ir diretamente da versão 1.5 para 1.7, se desejar. -
Siga o tutorial do Helm para fazer upgrade da versão da API de um manifesto de release. O nome da release do chart é
release_name=ranchere o namespace da release érelease_namespace=cattle-system. -
No arquivo decodificado, procure por
cert-manager.io/v1beta1e substitua-o porcert-manager.io/v1. -
Faça upgrade do Rancher normalmente com
helm upgrade.
Verifique a implantação
Uma vez que você tenha instalado o cert-manager, pode verificar se ele está implantado corretamente, verificando o namespace kube-system em busca de pods em execução:
kubectl get pods --namespace cert-manager NAME READY STATUS RESTARTS AGE cert-manager-5c6866597-zw7kh 1/1 Running 0 2m cert-manager-cainjector-577f6d9fd7-tr77l 1/1 Running 0 2m cert-manager-webhook-787858fcdb-nlzsq 1/1 Running 0 2m
Mudança na API do Cert-Manager e migração de dados
O Rancher agora suporta as versões 1.6.2 e 1.7.1 do cert-manager. Recomendamos a v1.7.x porque a v1.6.x atingirá o fim do serviço em 30 de março de 2022. Para ler mais, veja os docs do cert-manager. Para instruções sobre como fazer upgrade do cert-manager da versão 1.5 para 1.6, veja a documentação upstream do cert-manager aqui. Para instruções sobre como fazer upgrade do cert-manager da versão 1.6 para 1.7, veja a documentação upstream do cert-manager aqui.
O cert-manager descontinuou o uso do campo certificate.spec.acme.solvers e removerá o suporte a ele completamente em uma próxima versão.
De acordo com a documentação do cert-manager, um novo formato para configurar recursos de certificado ACME foi introduzido na v0.8. Especificamente, o campo de configuração do solucionador de desafios foi movido. Tanto o formato antigo quanto o novo são suportados a partir da v0.9, mas o suporte ao formato antigo será removido em uma próxima versão do cert-manager. A documentação do cert-manager recomenda fortemente que, após a atualização, você atualize seus recursos de Emissor e Certificado ACME para o novo formato.
Detalhes sobre a mudança e as instruções de migração podem ser encontrados nas instruções de fazer upgrade do cert-manager v0.7 para v0.8.
O lançamento da v0.11 marca a remoção da API v1alpha1 que era utilizada em versões anteriores do cert-manager, além de nossa mudança de grupo de API para cert-manager.io em vez de certmanager.k8s.io.
Também removemos o suporte para o antigo formato de configuração que foi descontinuado na versão v0.8. Isso significa que você deve transitar para o novo formato de configuração de estilo de solvers para seus emissores ACME antes de atualizar para a v0.11. Para mais informações, consulte o guia de fazer upgrade para a v0.8.
Detalhes sobre a mudança e as instruções de migração podem ser encontrados nas instruções de fazer upgrade do cert-manager v0.10 para v0.11.
Mais informações sobre fazer upgrade do cert-manager.