Esta página explica como preparar clusters para atualizações para a versão 1.22 do GKE. Pode encontrar clientes API que fazem chamadas para APIs descontinuadas removidas na versão 1.22 e atualizar esses clientes para usarem APIs GA. Para informações mais detalhadas, consulte o guia de migração de APIs descontinuadas do Kubernetes.
APIs removidas na versão 1.22
A maioria das APIs descontinuadas na versão 1.22 do Kubernetes são antigas APIs beta que
foram promovidas de beta (v1beta1) para GA (v1). As APIs GA oferecem garantias de compatibilidade
a longo prazo
e devem ser usadas em vez das APIs beta descontinuadas.
Pode interagir com todos os objetos existentes através das APIs do GA.
Recursos de webhook
A versão beta da API MutatingWebhookConfiguration e ValidatingWebhookConfiguration já não é disponibilizada a partir da versão 1.22.
- Migre os manifestos e os clientes API para usar a versão da API admissionregistration.k8s.io/v1.
Consulte a tabela seguinte que descreve as alterações notáveis na versão da API GA:
Campo Alterar webhooks[*].failurePolicyO valor predefinido foi alterado de IgnoreparaFail.webhooks[*].matchPolicyO valor predefinido foi alterado de ExactparaEquivalent.webhooks[*].timeoutSecondsO valor predefinido foi alterado de 30spara10s.webhooks[*].sideEffectsO valor predefinido é removido e o campo é agora obrigatório. Apenas são permitidos NoneeNoneOnDryRun.webhooks[*].admissionReviewVersionsO valor predefinido é removido e o campo é agora obrigatório (as versões suportadas para AdmissionReviewsãov1ev1beta1).webhooks[*].nameTem de ser único na lista para objetos criados através da API Google Shopping. admissionregistration.k8s.io/v1
CustomResourceDefinition
A versão beta da API CustomResourceDefinition já não é publicada a partir da versão 1.22.
- Migre os manifestos e os clientes API para usar a versão da API apiextensions.k8s.io/v1.
Consulte a tabela seguinte que descreve as alterações notáveis na versão da API GA:
Campo Alterar spec.scopeJá não está predefinido como Namespaced. O valor tem de ser especificado explicitamente.spec.versionRemovido. Em alternativa, use spec.versions.spec.validationRemovido. Em alternativa, use spec.versions[*].schema.spec.subresourcesRemovido. Em alternativa, use spec.versions[*].subresources.spec.additionalPrinterColumnsRemovido. Em alternativa, use spec.versions[*].additionalPrinterColumns.spec.conversion.webhookClientConfigMovido para spec.conversion.webhook.clientConfig.spec.conversion.conversionReviewVersionsMovido para spec.conversion.webhook.conversionReviewVersions.spec.versions[*].schema.openAPIV3SchemaAgora, é obrigatório quando cria objetos CustomResourceDefinitionda v1 e tem de ser um esquema estrutural.spec.preserveUnknownFieldsO valor truenão é permitido quando cria objetos v1CustomResourceDefinition. O valor tem de ser especificado nas definições do esquema comox-kubernetes-preserve-unknown-fields: true.additionalPrinterColumnsEm additionalPrinterColumnsitens, o campoJSONPathfoi mudado parajsonPath.
APIService
A versão beta da API APIService já não é publicada a partir da versão 1.22.
Migre manifestos e clientes API para usar a versão da API apiregistration.k8s.io/v1.
TokenReview
A versão beta da API TokenReview já não é publicada a partir da versão 1.22.
Migre os manifestos e os clientes API para usar a versão authentication.k8s.io/v1 da API.
Recursos SubjectAccessReview
A versão beta da API LocalSubjectAccessReview, SelfSubjectAccessReview e SubjectAccessReview já não é disponibilizada a partir da versão 1.22.
- Migre os manifestos e os clientes API para usar a versão da API authorization.k8s.io/v1.
Consulte a tabela seguinte que descreve as alterações notáveis na versão da API GA:
Campo Alterar spec.groupO nome foi alterado para spec.groups.
CertificateSigningRequest
A versão beta da API CertificateSigningRequest já não é publicada a partir da versão 1.22.
- Migre os manifestos e os clientes API para usar a versão da API certificates.k8s.io/v1.
Consulte a tabela seguinte que descreve as alterações notáveis na versão da API GA:
Campo Alterar spec.signerNamePara clientes da API que pedem certificados, este campo é obrigatório (consulte os signatários conhecidos do Kubernetes), e não é permitido criar pedidos de kubernetes.io/legacy-unknownatravés da APIcertificates.k8s.io/v1.spec.usagesEste campo é obrigatório para clientes API que pedem certificados. Este campo não pode conter valores duplicados e só pode conter utilizações conhecidas. status.conditionsPara clientes API que aprovam ou assinam certificados, este campo não pode conter tipos duplicados. status.conditions[*].statusPara clientes API que aprovam ou assinam certificados, este campo é agora obrigatório. status.certificatePara clientes API que aprovam ou assinam certificados, este campo tem de ser codificado em PEM e conter apenas blocos CERTIFICATE.
Arrendamento
A versão beta da API Lease já não é publicada a partir da versão 1.22. Migre os manifestos e os clientes API para usar a versão da API coordination.k8s.io/v1.
Ingress (disponível até à versão 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 já não são disponibilizadas 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 na versão 1.21 ou anterior do GKE e atualizados para a versão 1.22 na versão de patch 1.22.7-gke.300 ou posterior, ainda pode usar as versões da API beta até o cluster ser atualizado para a versão 1.23. Esta é uma exceção única para clusters mais antigos para lhe dar mais tempo para migrar os seus clusters da utilização destas versões da API que foram removidas do Kubernetes de código aberto na versão 1.22.
Todos os clusters que executam a versão 1.23 e posteriores do GKE vão deixar de publicar as APIs beta Ingress descontinuadas. Os manifestos que usam essas versões da API já não podem ser aplicados. Os objetos persistidos anteriormente permanecem funcionais e podem ser
vistos e atualizados através das novas versões da API, antes e depois da atualização para a versão
1.23.
- Migre os manifestos e os clientes API para usar a versão da API networking.k8s.io/v1.
Consulte a tabela seguinte que descreve as alterações notáveis na versão da API GA:
Campo Alterar spec.backendO nome foi alterado para spec.defaultBackend.back-end serviceNameO nome foi alterado para service.name.servicePortOs campos numéricos de back-end servicePortsão renomeados paraservice.port.number. Os campos de backend de stringservicePortpassam a chamar-seservice.port.name.pathTypeAgora, é obrigatório para cada caminho especificado. O valor pode ser: Prefix,ExactouImplementationSpecific. Para corresponder ao comportamentov1beta1indefinido, useImplementationSpecific.
Os seguintes manifestos descrevem o mesmo Ingress 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
Pode usar a seguinte consulta para clusters com o Google Cloud Observability ativado para identificar clientes que acedem às 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 já não é publicada a partir da versão 1.22.
Migre os manifestos e os clientes API para usar a versão networking.k8s.io/v1 da API.
Recursos RBAC
A versão beta da API ClusterRole, ClusterRoleBinding, Role e RoleBinding já não é disponibilizada a partir da versão 1.22. Migre os manifestos e os clientes API para usar a versão da API rbac.authorization.k8s.io/v1.
PriorityClass
A versão beta da API PriorityClass já não é publicada a partir da versão 1.22.
Migre os manifestos e os clientes API para usar a versão scheduling.k8s.io/v1 da API.
Recursos de armazenamento
A versão beta da API CSIDriver, CSINode, StorageClass e VolumeAttachment já não é disponibilizada a partir da versão 1.22. Migre os manifestos e os clientes API para usar a versão da API storage.k8s.io/v1.
Encontre clusters através de APIs descontinuadas
Pode encontrar os clusters que estão a usar APIs descontinuadas nas estatísticas de descontinuação. As estatísticas de descontinuação também fornecem informações, como que clientes API estão a chamar as APIs descontinuadas no seu cluster.
Também pode usar registos de auditoria para saber que clientes estão a fazer chamadas para APIs descontinuadas.
Localize clientes API que fazem chamadas de escrita para APIs descontinuadas
Para clusters com o Google Cloud Observability ativado, pode usar a seguinte consulta do registo de auditoria da atividade de administrador para mostrar a utilização de APIs descontinuadas por agentes do utilizador que não são geridos pela 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 é removida, por exemplo, 1.22.
Os registos de auditoria da atividade do administrador são ativados automaticamente para clusters do GKE. Com esta consulta, os registos mostram agentes do utilizador a fazer chamadas de escrita para as APIs descontinuadas.
Localize clientes da API que fazem chamadas de leitura para APIs descontinuadas
Por predefinição, os registos de auditoria mostram apenas chamadas de escrita para as APIs descontinuadas. Para também mostrar chamadas de leitura para APIs descontinuadas, configure os registos de auditoria de acesso a dados.
Siga as instruções para configurar os registos de auditoria de acesso a dados com a Google Cloud consola. Na Google Cloud consola,
selecione a API Kubernetes Engine. No separador Tipos de registos do painel de informações,
selecione Admin Read e Data Read.
Com estes registos ativados, já pode usar a consulta original para ver chamadas de leitura e chamadas de escrita para as APIs descontinuadas.
Atualizar componentes de terceiros
As estatísticas de descontinuação podem apresentar resultados para agentes de terceiros que fazem chamadas para APIs descontinuadas no seu cluster.
Para resolver estas estatísticas, experimente os seguintes passos:
- Consulte o seu fornecedor de software de terceiros para obter uma versão atualizada.
- Atualize o software de terceiros para a versão mais recente. Se não conseguir atualizar o software, deve testar se a atualização do GKE para a versão com as APIs descontinuadas removidas vai interromper o seu serviço.
Recomendamos que faça esta atualização e a atualização da versão do GKE num cluster de preparação para monitorizar interrupções antes de atualizar os clusters de produção.
A preparar a atualização para a versão 1.22
Não precisa de eliminar nem voltar a criar nenhum dos seus objetos da API. Todos os objetos da API persistentes existentes já podem ser lidos e atualizados através das novas versões da API. No entanto, recomendamos que migre os seus clientes e manifestos antes de atualizar para o Kubernetes 1.22. Saiba mais na secção"O que fazer" do guia de migração de APIs descontinuadas do Kubernetes.
Pode ver estatísticas e recomendações de descontinuação para determinar se o seu cluster está a usar uma funcionalidade ou uma API do Kubernetes que foi descontinuada. As estatísticas de descontinuação baseiam-se nas chamadas de API observadas para APIs descontinuadas por agentes do utilizador e não na configuração dos seus objetos Kubernetes.
Atualize os clusters afetados por descontinuações
Para atualizar os clusters afetados por descontinuações, siga estes passos:
- Verifique que agentes do utilizador usam as APIs descontinuadas nas estatísticas de descontinuação ou nos registos.
- Atualize os agentes do utilizador que usam as APIs descontinuadas para usar versões de API suportadas.
- Atualize qualquer software de terceiros que chame APIs descontinuadas para as versões mais recentes.
- Atualize um cluster de teste e teste a sua aplicação num ambiente de teste antes de atualizar o cluster de produção para reduzir o risco de interrupções quando as APIs descontinuadas deixarem de estar disponíveis.
- Depois de atualizar todos os agentes do utilizador, o GKE aguarda até que deixe de observar a utilização de APIs descontinuadas durante 30 dias e, em seguida, desbloqueia as atualizações automáticas. As atualizações automáticas são realizadas de acordo com o cronograma de lançamentos.
- Se não conseguir atualizar um agente do utilizador afetado, atualize um cluster de teste separado para verificar se a atualização causa interrupções. Se a atualização não causar interrupções, pode atualizar o cluster manualmente.
Recursos
Estão disponíveis mais informações na documentação do Kubernetes OSS:
- Blogue do Kubernetes: remoções de APIs para a versão 1.22 do Kubernetes
- Notas de lançamento do Kubernetes 1.22
- Guia de migração de APIs descontinuadas do Kubernetes