Preparar redes de AWS

Para configurar un balanceador de carga orientado hacia el exterior con GKE en AWS, debes etiquetar tu VPC y tu subred pública con el ID de tu clúster. Si ya has etiquetado tu VPC y tu subred, ve a Habilitar el acceso.

Antes de empezar

Antes de empezar a usar GKE en AWS, asegúrate de haber completado las siguientes tareas:

GKE en AWS requiere etiquetas en las subredes que contienen endpoints de balanceadores de carga. GKE en AWS etiqueta automáticamente todas las subredes especificadas en el campo spec.Networking.ServiceLoadBalancerSubnetIDs del recurso AWSCluster.

Si quieres añadir más subredes a tu clúster de usuario o necesitas volver a aplicar etiquetas a las subredes que ya tienes, sigue estos pasos.

  1. En tu directorio de anthos-aws, usa anthos-gke para cambiar el contexto a tu servicio de gestión.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. Obtén el ID de la VPC de AWS de tu clúster con kubectl y guárdalo como variable.

     export VPC_ID=$(\
     env HTTPS_PROXY=http://localhost:8118 \
     kubectl get awscluster cluster-0 -o jsonpath='{.spec.networking.vpcID}')
    
  3. Comprueba el contenido de las variables con echo. La salida se parece a vpc-12345678abcdef0.

    echo $VPC_ID
    
  4. Guarda el ID de tu clúster en una variable de entorno.

    export CLUSTER_ID=$(\
    env HTTPS_PROXY=http://localhost:8118 \
    kubectl get awscluster cluster-0 -o jsonpath='{.status.clusterID}')
    

    Puedes consultar la variable con echo:

    echo $CLUSTER_ID
    

    La respuesta incluye el ID de tu clúster.

    gke-12345678
    
  5. Si has instalado GKE en AWS en una VPC específica, puedes usar la herramienta de línea de comandos aws para obtener el ID de la subred.

    Selecciona entre las siguientes opciones:

    • Público, si quieres exponer servicios en tu subred pública.
    • Privada, si quieres exponer servicios en tu subred privada.
    • Varias subredes, si quieres exponer servicios en varias subredes.

    Público

     export SUBNET_ID=$(aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \
     --query "Subnets[*].SubnetId" \
     --output text)
    

    El resultado es un objeto que contiene el ID de tu subred. Se parece a subnet-1234abcdefg. Puedes consultar la variable con echo:

    echo $SUBNET_ID
    

    La respuesta incluye el ID de tu subred.

    subnet-012345678abcdef
    

    Privado

     export SUBNET_ID=$(aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
     --query "Subnets[*].SubnetId" \
     --output text)
    

    El resultado es un objeto que contiene el ID de tu subred. Se parece a subnet-1234abcdefg. Puedes consultar la variable con echo:

    echo $SUBNET_ID
    

    La respuesta incluye el ID de tu subred.

    subnet-012345678abcdef
    

    Varias subredes

    Si usas varias subredes para tus AWSNodePools (por ejemplo, si usas varias zonas de disponibilidad), debes etiquetar tus IDs de subred individualmente.

    Consulta tu lista de IDs de subred con aws ec2 describe-subnets.

    Para obtener una lista de todas las subredes públicas, ejecuta el siguiente comando:

    aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \
     --query "Subnets[*].SubnetId" \
     --output text
    

    Para obtener una lista de todas las subredes privadas, ejecuta el siguiente comando:

    aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
     --query "Subnets[*].SubnetId" \
     --output text
    

    La respuesta incluye los IDs de tus subredes.

    subnet-012345678abcdef
    subnet-abcdef123456789
    subnet-123456789abcdef
    
  6. Etiqueta tu subred con el ID de tu clúster. Si tienes varias subredes, selecciona Varias subredes.

    Subred única

    aws ec2 create-tags \
    --resources $SUBNET_ID \
    --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared
    

    Varias subredes

    Ejecuta el siguiente comando en cada una de tus subredes:

    aws ec2 create-tags \
    --resources subnet-ids \
    --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared
    

    Sustituye subnet-ids por la lista de IDs de subredes, separados por espacios. Por ejemplo, subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef.