En este documento se describen las soluciones a los errores habituales de las identidades de carga de trabajo gestionadas.
Para comprobar el estado de un pod, ejecuta el siguiente comando:
kubectl describe pod
No se puede desplegar el pod con certificados
Si no se ha podido desplegar el pod de la carga de trabajo de Google Kubernetes Engine (GKE) con los certificados montados, usa el siguiente comando para comprobar el estado del pod:
kubectl describe pod POD_NAME -n POD_NAMESPACE
Errores relacionados con los permisos
En esta sección se describen los errores relacionados con permisos incorrectos.
Se ha denegado el permiso al emitir el certificado: no se ha podido emitir el certificado desde la autenticación de GKE
Este error tiene un aspecto similar al siguiente:
Permission denied while issuing the certificate: failed to issue the certificate from the GKE Auth: rpc error: code = PermissionDenied desc = Permission 'privateca.certificates.createForSelf' denied on 'projects/PROJECT_NUMBER/locations/REGION/caPools/ CA_POOL_ID'
El error se ha producido porque falta el rol
CA Service Workload Certificate Requester
(roles/privateca.workloadCertificateRequester
)
en el grupo de la AC subordinada.
Para resolver este error, asigna el rol al grupo:
gcloud privateca pools add-iam-policy-binding SUBORDINATE_CA_POOL_ID \
--project=CA_POOL_PROJECT_ID \
--location=REGION \
--role=roles/privateca.workloadCertificateRequester \
--member="principal://iam.googleapis.com/projects/CA_POOL_PROJECT_NUMBER/name/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog"
Haz los cambios siguientes:
SUBORDINATE_CA_POOL_ID
: el ID del grupo de ACs subordinadasCA_POOL_PROJECT_ID
: el ID de proyecto del grupo de ACs raízREGION
: la región de la AC subordinadaCA_POOL_PROJECT_NUMBER
: número de proyecto del grupo de autoridades de certificaciónPROJECT_ID
: el ID del proyecto del grupo de identidades de carga de trabajo
No se ha podido completar MountVolume.SetUp para el volumen
Este error tiene un aspecto similar al siguiente:
MountVolume.SetUp failed for volume "fleet-spiffe-credentials" : rpc error: code = Internal desc = unable to mount volume: while creating volume: while loading trust bundles: rpc error: code = Internal desc = while getting trust map from the trustBundleWatcher: rpc error: code = Internal desc = no GKEClusterTrustBundle objects found with fleet WIP nickname fleet-project/svc.id.goog
Este error se ha producido porque falta el rol Lector del grupo de AC privadas (roles/privateca.poolReader
) en el grupo de AC subordinada del grupo de identidades de carga de trabajo.
Para resolver este error, asigna el rol al grupo y espera unos minutos a que se carguen los paquetes de confianza:
gcloud privateca pools add-iam-policy-binding SUBORDINATE_CA_POOL_ID \
--location=REGION \
--role=roles/privateca.poolReader \
--member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog"
Haz los cambios siguientes:
SUBORDINATE_CA_POOL_ID
: el ID del grupo de ACs subordinadasREGION
: la región de la AC subordinadaPROJECT_NUMBER
: el número del proyecto del grupo de identidades de carga de trabajoPROJECT_ID
: el ID del proyecto del grupo de identidades de carga de trabajo
Puedes usar el siguiente comando para comprobar si existen los paquetes de confianza:
kubectl get gkeclustertrustbundle
Cuando se cargan los paquetes de confianza, la respuesta tiene el siguiente aspecto:
NAME AGE
svc.id.goog-PROJECT_ID.svc.id.goog 5m35s
En el resultado, PROJECT_ID
es el ID del proyecto de la flota al que está asociado tu raíz de confianza.
Errores de certificado
Los errores de esta sección están relacionados con la configuración de los certificados.
Pueden producirse varios errores si no se generan certificados de identidad de carga de trabajo gestionada. Para comprobar si estos certificados existen en volúmenes montados en pods, haz lo siguiente:
Conéctate al pod.
# Open the pod sh interface kubectl exec -it $pod_name -n $pod_namespace -- sh
Lista e inspecciona los archivos de credenciales.
# Look up the volume contents: ls -la /var/run/secrets/workload-spiffe-credentials cat /var/run/secrets/workload-spiffe-credentials/certificates.pem cat /var/run/secrets/workload-spiffe-credentials/ca_certificates.pem cat /var/run/secrets/workload-spiffe-credentials/private_key.pem cat /var/run/secrets/workload-spiffe-credentials/trust_bundles.json
También puedes inspeccionar el estado de aprovisionamiento del certificado de un pod consultando los registros de k8s_container
del contenedor `gke-metadata-server` a través de la consola.Trusted Cloud
No se cumple la condición previa al emitir el certificado
La descripción del pod puede incluir el siguiente mensaje:
Failed precondition while issuing the certificate: failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition
Este error se ha producido porque el grupo de identidades de carga de trabajo no se ha configurado con una configuración de emisión de certificados (CIC).
Para solucionar este error, crea un CIC y úsalo para actualizar el grupo de identidades de carga de trabajo.