Nesta página, explicamos como preparar clusters para upgrades para a versão 1.22 do GKE. É possível encontrar clientes de API fazendo chamadas para APIs descontinuadas removidas na versão 1.22 e atualizá-los para usar APIs em disponibilidade geral. Para informações mais detalhadas, consulte o Guia de migração da API descontinuada do Kubernetes.
APIs removidas na versão 1.22
A maioria das APIs obsoletas na versão 1.22 do Kubernetes são APIs Beta anteriores que
passaram da versão Beta (v1beta1) para disponibilidade geral (v1). As APIs em disponibilidade geral fornecem garantias de compatibilidade de longo prazo e devem ser usadas no lugar das APIs Beta obsoletas.
Todos os objetos existentes podem interagir com APIs em disponibilidade geral.
Recursos de webhook
A versão Beta da API de MutatingWebhookConfiguration e ValidatingWebhookConfiguration não é mais veiculada a partir da versão 1.22.
- Migre manifestos e clientes de API para usar a versão da API admissionregistration.k8s.io/v1.
 Consulte a tabela a seguir que descreve as principais mudanças na versão da API em disponibilidade geral:
Campo Mudar webhooks[*].failurePolicyO padrão foi alterado de IgnoreparaFail.webhooks[*].matchPolicyO padrão foi alterado de ExactparaEquivalent.webhooks[*].timeoutSecondsO padrão foi alterado de 30spara10s.webhooks[*].sideEffectsO valor padrão é removido e o campo agora é obrigatório. Somente NoneeNoneOnDryRunsão permitidos.webhooks[*].admissionReviewVersionsO valor padrão foi removido e o campo agora é obrigatório. As versões compatíveis para AdmissionReviewsãov1ev1beta1.webhooks[*].namePrecisa ser exclusivo na lista para objetos criados com admissionregistration.k8s.io/v1.
CustomResourceDefinition
A versão Beta da API do CustomResourceDefinition não é mais veiculada a partir da versão 1.22.
- Migrar manifestos e clientes de API para usar a versão da API apiextensions.k8s.io/v1
 Consulte a tabela a seguir que descreve as principais mudanças na versão da API em disponibilidade geral:
Campo Mudar spec.scopeO padrão não é mais Namespaced. O valor precisa ser explicitamente especificado.spec.versionRemovida. Use spec.versions.spec.validationRemovida. Use spec.versions[*].schema.spec.subresourcesRemovida. Use spec.versions[*].subresources.spec.additionalPrinterColumnsRemovida. Use spec.versions[*].additionalPrinterColumns.spec.conversion.webhookClientConfigMovida para spec.conversion.webhook.clientConfig.spec.conversion.conversionReviewVersionsMovida para spec.conversion.webhook.conversionReviewVersions.spec.versions[*].schema.openAPIV3SchemaAgora, é necessário ao criar objetos CustomResourceDefinitionv1 e precisa ser um esquema estrutural.spec.preserveUnknownFieldsO valor truenão é permitido ao criar objetos deCustomResourceDefinitionv1. O valor precisa ser especificado nas definições do esquema comox-kubernetes-preserve-unknown-fields: true.additionalPrinterColumnsEm itens de additionalPrinterColumns, o campoJSONPathfoi renomeado comojsonPath.
APIService
A versão Beta da API APIService não é mais disponibilizada desde a versão 1.22.
Migre manifestos e clientes de API para usar a versão da API apiregistration.k8s.io/v1.
TokenReview
A versão Beta da API TokenReview não é mais disponibilizada desde a versão 1.22.
Migre manifestos e clientes de API para usar a versão da API authentication.k8s.io/v1.
Recursos SubjectAccessReview
A versão Beta da API de LocalSubjectAccessReview, SelfSubjectAccessReview e SubjectAccessReview não é mais veiculada a partir da versão 1.22.
- Migre manifestos e clientes da API para usar a versão da API authorization.k8s.io/v1.
 Consulte a tabela a seguir que descreve as principais mudanças na versão da API em disponibilidade geral:
Campo Mudar spec.groupRenomeada como spec.groups.
CertificateSigningRequest
A versão Beta da API do CertificateSigningRequest não é mais veiculada a partir da versão 1.22.
- Migre manifestos e clientes de API para usar a versão da API certificates.k8s.io/v1.
 Consulte a tabela a seguir que descreve as principais mudanças na versão da API em disponibilidade geral:
Campo Mudar spec.signerNamePara clientes de API que solicitam certificados, este campo é obrigatório (consulte signatários do Kubernetes conhecidos), e as solicitações para kubernetes.io/legacy-unknownnão podem ser criadas por meio da APIcertificates.k8s.io/v1.spec.usagesPara clientes de API que solicitam certificados, esse campo é obrigatório. Este campo não pode conter valores duplicados e só pode conter usos conhecidos. status.conditionsPara clientes de API que aprovam ou assinam certificados, esse campo não pode conter tipos duplicados. status.conditions[*].statusPara clientes de API que aprovam ou assinam certificados, esse campo agora é obrigatório. status.certificatePara clientes de API que aprovam ou assinam certificados, esse campo precisa ser codificado em PEM e conter apenas blocos CERTIFICATE.
Lease
A versão Beta da API do Lease não é mais veiculada a partir da versão 1.22. Migre manifestos e clientes de API para usar a versão da API coordination.k8s.io/v1.
Ingress (disponível até 1.23 para clusters criados na versão 1.21 ou anterior)
As versões Beta da API (extensions/v1beta1 e networking.k8s.io/v1beta1) de Ingress não serão mais veiculadas para clusters do GKE que executam a versão 1.22 ou posterior se o cluster tiver sido criado na versão 1.22 ou posterior.
No entanto, para clusters criados no GKE versão 1.21 ou anterior e atualizado para 1.22 na versão de patch 1.22.7-gke.300 ou posterior, ainda é possível usar as versões Beta da API até que o cluster seja atualizado para a versão 1,23. Essa é uma exceção única para clusters mais antigos. Com ela, você tem mais tempo de migrar os clusters para que não usem essas versões de API, que foram removidas do Kubernetes de código aberto, na versão 1.22.
Todos os clusters que executam o GKE versão 1.23 e posterior não veicularão mais as APIs Beta obsoletas Ingress. Os manifestos que usam essas versões de API não podem mais ser aplicados. Os objetos persistidos anteriormente permanecem funcionais e podem ser visualizados e atualizados usando as novas versões da API, antes e depois de fazer upgrade para a versão 1.23.
- Migre manifestos e clientes de API para usar a versão da API networking.k8s.io/v1.
 Consulte a tabela a seguir que descreve as principais mudanças na versão da API em disponibilidade geral:
Campo Mudar spec.backendRenomeada como spec.defaultBackend.back-end serviceNameRenomeada como service.name.servicePortOs campos numéricos de back-end servicePortforam renomeados paraservice.port.number. Os camposservicePortde back-end de string foram renomeados comoservice.port.name.pathTypeAgora, é necessário para cada caminho especificado. O valor pode ser: Prefix,ExactouImplementationSpecific. Para corresponder ao comportamentov1beta1indefinido, useImplementationSpecific.
Os manifestos a seguir descrevem a mesma Entrada em v1 e v1beta1:
Manifesto v1beta1
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: example
spec:
  backend:
    serviceName: default-backend
    servicePort: 80
  rules:
  - http:
      paths:
      - path: /testpath
        backend:
          serviceName: test
          servicePort: 80
Manifesto v1
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example
spec:
  defaultBackend:
    service:
      name: default-backend
      port:
        number: 80
  rules:
  - http:
      paths:
      - path: /testpath
        pathType: ImplementationSpecific
        backend:
          service:
            name: test
            port:
              number: 80
É possível usar a consulta a seguir para clusters com a observabilidade do Google Cloud ativada para
identificar clientes que acessam as APIs v1beta1 do Ingress:
resource.type="k8s_cluster"
resource.labels.cluster_name="$CLUSTER_NAME"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.request.apiVersion=("extensions/v1beta1" OR "networking.k8s.io/v1beta1")
protoPayload.request.kind="Ingress"
NOT ("kube-system")
IngressClass
A versão Beta da API IngressClass não é mais disponibilizada desde a versão 1.22.
Migre manifestos e clientes de API para usar a versão da API networking.k8s.io/v1
Recursos do RBAC
A versão Beta da API de ClusterRole, ClusterRoleBinding, Role e RoleBinding não é mais veiculada a partir da versão 1.22. Migre manifestos e clientes de API para usar a versão rbac.authorization.k8s.io/v1 da API.
PriorityClass
A versão Beta da API do PriorityClass não é mais veiculada a partir da versão 1.22.
Migre manifestos e clientes da API para usar a versão da API scheduling.k8s.io/v1.
Recursos de armazenamento
A versão Beta da API CSIDriver, CSINode, StorageClass e VolumeAttachment não é mais veiculada a partir da versão 1.22. Migre manifestos e clientes de API para usar a versão da API storage.k8s.io/v1.
Encontrar clssters usando APIs descontinuadas
Para saber quais clusters estão usando APIs descontinuadas, acesse os insights de descontinuação. Os insights de descontinuação também fornecem informações como quais clientes de API estão chamando as APIs descontinuadas no cluster.
Também é possível usar registros de auditoria para descobrir quais clientes estão fazendo chamadas para APIs descontinuadas.
Localizar clientes de API que fazem chamadas de gravação para APIs descontinuadas
Para clusters com a observabilidade do Google Cloud ativada, é possível usar a consulta do registro de auditoria da atividade do administrador a seguir para mostrar o uso de APIs descontinuadas por user agents que não são gerenciados pelo Google.
resource.type="k8s_cluster"
labels."k8s.io/removed-release"="DEPRECATED_API_MINOR_VERSION"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:kube-system:")
Substitua DEPRECATED_API_MINOR_VERSION pela versão
secundária em que a API descontinuada foi removida, por exemplo, 1.22.
Os registros de auditoria de atividades do administrador são ativados automaticamente para clusters do GKE. Com essa consulta, os registros mostram os user agents que fazem chamadas de gravação para as APIs descontinuadas.
Localizar clientes de API que fazem chamadas de leitura para APIs descontinuadas
Por padrão, os registros de auditoria mostram apenas chamadas de gravação para as APIs descontinuadas. Para mostrar também chamadas de leitura para APIs descontinuadas, configure os registros de auditoria de acesso a dados.
Siga as instruções para configurar os registros de auditoria de acesso a dados com o console do Google Cloud . No console Google Cloud , 
selecione a API Kubernetes Engine. Na guia "Tipos de registro" no painel de informações,
selecione Admin Read e Data Read.
Com esses registros ativados, agora é possível usar a consulta original para ver chamadas de leitura e de gravação para as APIs descontinuadas.
Como fazer upgrade de componentes de terceiros
Os insights de descontinuação podem exibir resultados para agentes de terceiros que fazem chamadas para APIs descontinuadas no cluster.
Para resolver esses insights, siga estas etapas:
- Verifique com seu provedor de software de terceiros se há uma versão atualizada.
 - Atualize o software de terceiros para a versão mais recente. Se não for possível fazer upgrade do software, teste se o upgrade do GKE para a versão em que as APIs descontinuadas foram removidas interrompe o serviço.
 
Recomendamos que você realize esse upgrade e o upgrade da versão do GKE em um cluster de preparo para monitorar interrupções antes de fazer upgrade dos clusters de produção.
Como preparar o upgrade para a versão 1.22
Não é necessário excluir nem recriar qualquer um dos objetos da API. Todos os objetos permanentes atuais da API já podem ser lidos e atualizados usando as novas versões da API. No entanto, recomendamos que você migre seus clientes e manifestos antes de fazer o upgrade para o Kubernetes 1.22. Saiba mais na seção "O que fazer" do Guia de migração da API obsoleta do Kubernetes.
É possível ver insights e recomendações de descontinuação de uso para determinar se o cluster está usando um recurso ou uma API do Kubernetes descontinuado. Os insights de descontinuação de uso se baseiam em chamadas de API observadas para APIs descontinuadas por user agents, e não na configuração dos objetos do Kubernetes.
Atualizar clusters afetados por descontinuação
Para fazer upgrade dos clusters afetados pelas descontinuações de uso, siga estas etapas:
- Verifique quais user agents usam as APIs descontinuadas nos registros de descontinuação ou nos registros.
 - Atualize os user agents que usam as APIs descontinuadas para usar as versões compatíveis.
 - Atualize qualquer software de terceiros que chame APIs descontinuadas para as versões mais recentes.
 - Faça upgrade de um cluster de teste e teste o aplicativo em um ambiente de teste antes de fazer upgrade do cluster de produção. Isso reduz o risco de interrupções quando as APIs descontinuadas não estão mais disponíveis.
 - Depois que você atualizar todos os user agents, o GKE aguardará até que ele não observe mais o uso de APIs descontinuadas por 30 dias e, em seguida, desbloqueará os upgrades automáticos. Os upgrades automáticos prosseguem de acordo com a programação de lançamentos.
 - Se não for possível atualizar um user agent afetado, faça upgrade de um cluster de teste separado para verificar se isso causa interrupções. Se o upgrade não causar interrupções, faça upgrade do cluster manualmente.
 
Recursos
Há mais informações disponíveis na documentação do OSS Kubernetes:
- Blog do Kubernetes: remoções de API para Kubernetes versão 1.22
 - Notas da versão 1.22 do Kubernetes
 - Guia de migração da API obsoleta do Kubernetes