Cuestionario de AWS Controllers for Kubernetes (ACK)
Estas preguntas conservan los 15 temas originales utilizando el comportamiento revisado del controlador.
1. ¿Cuál es el propósito principal de ACK?
Mostrar respuesta
Gestionar de forma declarativa los recursos de AWS a través de las APIs de Kubernetes y de recursos personalizados (custom resources). No garantiza ahorros de costos automáticos ni disponibilidad inmediata.
2. ¿Qué componente se instala para cada servicio?
Mostrar respuesta
Un controlador de servicio, con sus CRDs. Seleccione los servicios necesarios e inspeccione los recursos y campos compatibles en las CRDs versionadas.
3. ¿Cómo deben recibir los controladores las credenciales de AWS?
Mostrar respuesta
Configure una identidad de carga de trabajo (workload identity) como IRSA o EKS Pod Identity compatible. Verifique la confianza/asociación de OIDC, el ServiceAccount, la compatibilidad del SDK/agente y los permisos IAM mínimos. No almacene claves de acceso en ConfigMaps ni utilice credenciales de root.
4. ¿Qué valor conserva los recursos de AWS después de eliminar el CR?
Mostrar respuesta
services.k8s.aws/deletion-policy: retain. El runtime actual no acepta orphan. La precedencia es el CR, la anotación específica del servicio en el namespace y, después, el valor predeterminado del controlador. Los recursos de AWS conservados siguen requiriendo propiedad y operación.
5. ¿Cómo se adoptan los recursos existentes?
Mostrar respuesta
Utilice adoption-policy: adopt de ResourceAdoption y los adoption-fields específicos del servicio, verificando las condiciones de habilitación (gates), los identificadores, la región y la cuenta. resource-imported:true no es esta configuración; adopt-or-create puede crear un recurso inexistente. La reconciliación posterior puede modificar los recursos, así que distinga la adopción del comportamiento de solo lectura.
6. ¿Qué establece el estado GA?
Mostrar respuesta
Identifica la etapa oficial de madurez del controlador, no la compatibilidad con todas las APIs de AWS ni con todos los requisitos operativos. Distinga la madurez de la cadena v1alpha1 de una CRD y verifique los campos, las versiones publicadas y la idoneidad operativa.
7. ¿Qué condición indica sincronización y cuáles son sus límites?
Mostrar respuesta
ACK.ResourceSynced=True describe la sincronización del controlador. No es prueba de que la aplicación esté lista, de la conectividad con la base de datos ni de la entrega de mensajes. Inspeccione otras condiciones y el estado del servicio de AWS.
8. ¿Separar los namespaces de los equipos completa el aislamiento?
Mostrar respuesta
No. El valor predeterminado installScope=cluster observa los CRs en todos los namespaces. Restrinja conjuntamente watchNamespace/installScope, el ServiceAccount/IAM/RBAC y el comportamiento entre namespaces y de CARM. El modo namespace todavía puede tener permisos de lectura a nivel de clúster para la caché de su namespace.
9. ¿Qué patrón alinea el estado deseado y el estado observado en AWS?
Mostrar respuesta
El bucle de reconciliación procesa repetidamente los campos compatibles y la lógica del controlador. Los errores transitorios y las cuotas de AWS lo afectan; no repara de inmediato toda posible desviación (drift).
10. ¿Qué extensión de Kubernetes define las entradas de los recursos?
Mostrar respuesta
Las CRDs. El ejemplo de S3 usa Bucket.spec.policy. Las versiones revisadas no tienen CRDs separadas de BucketPolicy ni de RolePolicyAttachment de IAM; verifique los kinds y esquemas reales.
11. ¿Dónde se puede encontrar el ARN?
Mostrar respuesta
Cuando se proporciona para el recurso, utilice status.ackResourceMetadata.arn, incluidos NLB y TargetGroup. Los campos de status adicionales varían según el recurso.
12. ¿En qué se diferencia CARM de las referencias entre clústeres?
Mostrar respuesta
CARM configura un controlador para gestionar otra cuenta de AWS mediante la asunción de un rol de destino, lo que requiere confianza, permisos de AssumeRole, mapeos y ajustes del controlador. No hace que sea seguro que varios clústeres realicen mutaciones en competencia. Separe la propiedad de las mutaciones de las referencias de solo lectura.
13. ¿Qué debe incluir un ejemplo de S3 Bucket etiquetado como Development?
Mostrar respuesta
Utilice un nombre globalmente único, la región real, tagging.tagSet, los cuatro ajustes de Block Public Access y cifrado. El principal/IAM Role debe existir antes de aplicar la política del bucket. Reemplace los nombres e IDs de cuenta de ejemplo.
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
name: app-data
namespace: infra
annotations:
services.k8s.aws/deletion-policy: retain
spec:
name: replace-with-globally-unique-bucket-name
createBucketConfiguration:
locationConstraint: us-west-2
publicAccessBlock:
blockPublicACLs: true
blockPublicPolicy: true
ignorePublicACLs: true
restrictPublicBuckets: true
encryption:
rules:
- applyServerSideEncryptionByDefault:
sseAlgorithm: AES256
tagging:
tagSet:
- key: Environment
value: Development
policy: "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"\
Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::123456789012:role/MyApplicationRole\"\
\n },\n \"Action\": \"s3:GetObject\",\n \"Resource\": \"arn:aws:s3:::replace-with-globally-unique-bucket-name/*\"\
\n }\n ]\n}"14. ¿Cómo se inspecciona el chart de ACK para S3 y qué precede a la instalación?
Mostrar respuesta
El comando renderiza sin conexión un chart OCI con versión fijada. Prepare infra, su ServiceAccount, IRSA/Pod Identity y los permisos IAM antes de una instalación/actualización real. El renderizado no es una verificación del despliegue en AWS.
helm template ack-s3 \
oci://public.ecr.aws/aws-controllers-k8s/s3-chart \
--version 1.12.1 --namespace infra \
--set aws.region=us-west-2 \
--set installScope=namespace --set watchNamespace=infra \
--set enableCARM=false --set enableCrossNamespace=false \
--set serviceAccount.create=false \
--set serviceAccount.name=ack-s3-controller \
--set metrics.service.create=true --set deletionPolicy=retain15. ¿Qué estado y qué logs se deben inspeccionar?
Mostrar respuesta
Especifique el namespace y los kinds completamente cualificados; inspeccione las condiciones/eventos, la imagen y los logs del controlador, la cuenta/región/permisos reales y las referencias. La etiqueta del chart es app.kubernetes.io/instance=ack-s3. Eliminar los finalizers no es una solución rutinaria.
kubectl get buckets.s3.services.k8s.aws -n infra
kubectl get bucket.s3.services.k8s.aws app-data -n infra -o json
kubectl describe bucket.s3.services.k8s.aws app-data -n infra
kubectl logs -n infra \
-l app.kubernetes.io/instance=ack-s3 --all-containers --tail=100
kubectl get events -n infra \
--field-selector involvedObject.name=app-data