En esta página, se muestra cómo resolver problemas con webhooks problemáticos o no seguros en Google Distributed Cloud.
Tipos de webhooks problemáticos
Los webhooks de admisión, o webhooks en Kubernetes, son un tipo decontrolador de admisión que se puede usar en clústeres de Kubernetes para validar o mutar solicitudes al plano de control antes de que se conserve una solicitud. Es común que las aplicaciones de terceros usen webhooks que operan en recursos críticos del sistema y espacios de nombres. Los webhooks configurados de forma incorrecta pueden afectar el rendimiento y la confiabilidad del plano de control. Por ejemplo, un webhook configurado de forma incorrecta mediante una aplicación de terceros podría evitar que Google Distributed Cloud cree y modifique recursos en el espacio de nombres kube-system administrado, lo que podría degradar la funcionalidad del clúster.
Los webhooks problemáticos incluyen los siguientes tipos:
- Webhooks que operan, pero no tienen extremos disponibles. Sigue las instrucciones para verificar los webhooks que no informan extremos disponibles.
Webhooks que se consideran poco seguros, ya que operan en recursos y espacios de nombres críticos del sistema.
Los siguientes webhooks se consideran poco seguros:
- Webhooks que interceptan los Pods y las asignaciones de tiempo en el espacio de nombres
kube-system. - Webhooks que interceptan las asignaciones de tiempo en el espacio de nombres
kube-node-lease. - Webhooks que interceptan
Nodes,TokenReviews,SubjectAccessReviews, yCertificateSigningRequestsde Google Cloud Deploy.
Sigue las instrucciones para verificar los webhooks que se consideran poco seguros.
- Webhooks que interceptan los Pods y las asignaciones de tiempo en el espacio de nombres
Webhooks que no tienen extremos disponibles
Si un webhook no tiene extremos disponibles, el Service que respalda el extremo del webhook tiene uno o más Pods que no están en ejecución. Si deseas que los extremos del webhook estén disponibles, sigue las instrucciones para encontrar y solucionar problemas de los Pods del Service que respalda este extremo del webhook:
Busca los Pods de entrega para el Service asociado con el webhook: Ejecuta el siguiente comando para describir el Service:
kubectl describe svc SERVICE_NAME -n SERVICE_NAMESPACEReemplaza lo siguiente:
- SERVICE_NAME por el nombre del Service.
- SERVICE_NAMESPACE por el nombre del espacio de nombres.
Si no puedes encontrar el nombre del Service en el webhook, el extremo no disponible puede deberse a una discrepancia entre el nombre que aparece en la configuración y el nombre real del Service. Para corregir la disponibilidad del extremo, actualiza el nombre del Service en la configuración del webhook para que coincida con el objeto Service correcto.
Inspecciona los Pods de entrega para este Service. Para identificar los Pods que no se están ejecutando, enumera la implementación:
kubectl get deployment -n SERVICE_NAMESPACEO bien, ejecuta el siguiente comando para enumerar los Pods:
kubectl get pods -n SERVICE_NAMESPACE -o wideEn el caso de los Pods que no se están ejecutando, inspecciona los registros de Pod para ver por qué no se están ejecutando.
Webhooks que se consideran poco seguros
Si un webhook intercepta cualquier recurso en los espacios de nombres administrados por el sistema, te recomendamos que actualices los webhooks para evitar la interceptación de estos recursos.
Inspecciona la configuración del webhook: Ejecuta el siguiente comando de
kubectlpara obtener la configuración del webhook:kubectl get validatingwebhookconfigurations CONFIGURATION_NAME -o yamlReemplaza CONFIGURATION_NAME por el nombre de la configuración de webhook.
Si este comando no muestra nada, vuelve a ejecutarlo y reemplaza
validatingwebhookconfigurationspormutatingwebhookconfigurations.En la sección
webhooksdel resultado, se enumeran uno o más webhooks.Edita la configuración, según el motivo por el que el webhook se considera poco seguro:
Excluye los espacios de nombres kube-system y kube-node-lease
Un webhook se considera no seguro si
scopees*, o si el permiso esNamespacedy si alguna de las siguientes condiciones es verdadera:La condición
operatoresNotIn, yvaluesomitekube-systemykube-node-lease, como se muestra en el siguiente ejemplo:webhooks: - admissionReviewVersions: ... namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: NotIn values: - blue-system # add 'kube-system' and 'kube-node-lease' if `NotIn` objectSelector: {} rules: - apiGroups: ... scope: '*' # 'Namespaced' sideEffects: None timeoutSeconds: 3Asegúrate de que
scopeesté configurado comoNamespaced, no*, para que el webhook solo funcione en espacios de nombres específicos. Asegúrate de que sioperatoresNotIn,kube-systemykube-node-leasese incluyan envalues.La condición
operatoresIn, yvaluesincluyekube-systemykube-node-lease, como se muestra en el siguiente ejemplo:namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: In values: - blue-system - kube-system # remove as operator is `In` - kube-node-lease # remove as operator is `In`Asegúrate de que
scopeesté configurado comoNamespaced, no*, para que el webhook solo funcione en espacios de nombres específicos. Asegúrate de que sioperatoresIn,kube-systemykube-node-leaseno se incluyan envalues.
Excluye recursos coincidentes
Un webhook también se considera poco seguro si
nodes,tokenreviews,subjectaccessreviewsocertificatesigningrequestsaparecen en los recursos, como en el siguiente ejemplo:- admissionReviewVersions: ... resources: - 'pods' # keep, remove everything else - 'nodes' - 'tokenreviews' - 'subjectacessreviews' - 'certificatesigningrequests' scope: '*' sideEffects: None timeoutSeconds: 3Quita
nodes,tokenreviews,subjectaccessreviewsycertificatesigningrequestsde la sección de recursos.
¿Qué sigue?
Si necesitas asistencia adicional, comunícate con Atención al cliente de Cloud.
También puedes consultar Cómo obtener asistencia para obtener más información sobre los recursos de asistencia, incluidos los siguientes:
- Requisitos para abrir un caso de asistencia
- Herramientas para ayudarte a solucionar problemas, como registros y métricas
- Componentes, versiones y funciones compatibles de Google Distributed Cloud para VMware (solo software).