Registrar un clúster de Kubernetes fuera Google Cloud requiere los siguientes pasos además de completar los requisitos previos generales .
Garantizar la conectividad de la red
Para registrar correctamente su clúster, debe asegurarse de que los dominios a continuación sean accesibles desde su clúster de Kubernetes.
-
cloudresourcemanager.googleapis.com
resuelve los metadatos relacionados con el Google Cloud Proyecto al que se está conectando el clúster. -
oauth2.googleapis.com
para obtener tokens OAuth de corta duración para operaciones del agente contragkeconnect.googleapis.com
. -
gkeconnect.googleapis.com
para establecer el canal utilizado para recibir solicitudes de Google Cloud y emite respuestas. -
gkehub.googleapis.com
para crear Google CloudRecursos de membresía de la flota del lado que corresponden al clúster con el que se está conectando Google Cloud. -
www.googleapis.com
para autenticar tokens de servicio entrantes Google Cloud solicitudes de servicio. -
gcr.io
ystorage.googleapis.com
para extraer la imagen del agente de GKE Connect.
Si desea registrar el clúster mediante Fleet Workload Identity , los siguientes dominios también deben ser accesibles:
-
securetoken.googleapis.com
-
iamcredentials.googleapis.com
-
sts.googleapis.com
Si está utilizando un proxy para Connect, también debe actualizar la lista de permitidos del proxy con los dominios relevantes.
Si usa gcloud para registrar su clúster de Kubernetes, estos dominios también deben ser accesibles en el entorno donde ejecuta los comandos de gcloud.
Uso de controles de servicio de VPC
Si desea utilizar controles de servicio de VPC para mayor seguridad de datos en su aplicación, debe asegurarse de que los siguientes servicios estén en su perímetro de servicio:
- API del administrador de recursos (
cloudresourcemanager.googleapis.com
) - API de conexión de GKE (
gkeconnect.googleapis.com
) - API de flota (
gkehub.googleapis.com
)
Si desea registrar su clúster con la identidad de carga de trabajo de flota habilitada, también necesitará los siguientes servicios:
- API de credenciales de cuenta de servicio de IAM (
iamcredentials.googleapis.com
) - API del servicio de token de seguridad (
sts.googleapis.com
)
También debe configurar la conectividad privada para acceder a las API relevantes. Puede encontrar información sobre cómo hacerlo en "Configuración de la conectividad privada" .
Configurar identidad
Todas las opciones de registro de clúster manual fuera Google Cloud Requerirá que configures la autenticación con Google. Esto puede ser:
- Identidad de Carga de Trabajo de Flota (recomendado si está disponible). Puede obtener más información sobre las ventajas de habilitar la Identidad de Carga de Trabajo de Flota en "Usar Identidad de Carga de Trabajo de Flota" .
- A Google Cloud cuenta de servicio
Los clústeres adjuntos se pueden registrar con la Identidad de Carga de Trabajo de flota habilitada si cumplen con nuestros requisitos previos para clústeres adjuntos , como se describe a continuación. De lo contrario, regístrelos con una Google Cloud Cuenta de servicio para autenticación. La siguiente sección muestra cómo crear una cuenta de servicio.
Crear una Google Cloud cuenta de servicio que utiliza gcloud
Para registrar manualmente un clúster mediante un Google Cloud Cuenta de servicio: necesita un archivo JSON con las credenciales de la cuenta. Para seguir el principio de privilegios mínimos , le recomendamos crear una cuenta de servicio distinta para cada clúster de Kubernetes que registre y vincularla únicamente a roles de IAM para el clúster correspondiente.
Para crear este archivo, realice los siguientes pasos:
nube g
Cree una cuenta de servicio ejecutando el siguiente comando:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME --project=FLEET_HOST_PROJECT_ID
Enumere todas las cuentas de servicio de un proyecto ejecutando el siguiente comando:
gcloud iam service-accounts list --project=FLEET_HOST_PROJECT_ID
Si está creando una cuenta de servicio distinta para cada clúster de Kubernetes que registre, vincule la función de IAM gkehub.connect a la cuenta de servicio para su clúster correspondiente con una condición de IAM en el nombre de membresía del clúster:
MEMBERSHIP_NAME=MEMBERSHIP_NAME
FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID
SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \
--member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/gkehub.connect" \
--condition "expression=resource.name == \
'projects/${FLEET_HOST_PROJECT_ID}/locations/global/memberships/${MEMBERSHIP_NAME}',\
title=bind-${SERVICE_ACCOUNT_NAME}-to-${MEMBERSHIP_NAME}"
De lo contrario, vincule la función a la cuenta de servicio para todos los clústeres del proyecto sin la condición.
FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID
gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \
--member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/gkehub.connect"
Descargue el archivo JSON de la clave privada de la cuenta de servicio. Este archivo se utiliza al registrar un clúster :
FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID
gcloud iam service-accounts keys create LOCAL_KEY_PATH \
--iam-account=SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com \
--project=${FLEET_HOST_PROJECT_ID}
dónde:
- FLEET_HOST_PROJECT_ID es el Google Cloud ID del proyecto donde desea registrar los clústeres. Aprenda a encontrar este valor .
- SERVICE_ACCOUNT_NAME es el nombre para mostrar que elige para la [Cuenta de servicio].
- MEMBERSHIP_NAME es el nombre de membresía que usted elige para representar de forma única el clúster al registrarlo .
- LOCAL_KEY_PATH es la ruta de archivo local donde desea guardar la clave privada de la cuenta de servicio, un archivo JSON. Le recomendamos que asigne al archivo el nombre de la cuenta de servicio y el ID de su proyecto, por ejemplo,
/tmp/creds/[SERVICE_ACCOUNT_NAME]-[FLEET_HOST_PROJECT_ID].json
.
Requisitos previos del clúster adjunto
Según el tipo de clúster de Kubernetes de terceros que desee registrar como clúster adjunto , es posible que deba cumplir algunos requisitos adicionales para instalar el Agente de conexión o usar la Identidad de carga de trabajo de la flota.
Configurar restricciones de contexto de seguridad (SCC) (clústeres OpenShift)
En los clústeres de OpenShift OKE y OKD , los administradores pueden usar los SCC para controlar los permisos de los pods. Para permitir la instalación del Agente de Connect en el clúster, debe crear un SCC personalizado.
La siguiente definición de SCC de ejemplo especifica el conjunto de condiciones que debe ejecutar Connect Agent para ser aceptado en el clúster:
# Connect Agent SCC apiVersion: security.openshift.io/v1 kind: SecurityContextConstraints metadata: name: gke-connect-scc allowPrivilegeEscalation: false # This is redundant with non-root + disallow privilege escalation, # but we provide it for defense in depth. requiredDropCapabilities: - ALL runAsUser: type: MustRunAsNonRoot seLinuxContext: type: RunAsAny supplementalGroups: type: MustRunAs ranges: - min: 1 max: 65535 fsGroup: type: MustRunAs ranges: - min: 1 max: 65535 volumes: - secret - projected readOnlyRootFilesystem: true seccompProfiles: - docker/default users: groups: # Grants all service accounts in the gke-connect namespace access to this SCC - system:serviceaccounts:gke-connect
Suponiendo que haya guardado su definición de SCC como gke-connect-scc.yaml
, use la herramienta de línea de comandos OpenShift oc
para crear el SCC gke-connect-scc
para su clúster, de la siguiente manera:
$ oc create -f gke-connect-scc.yaml
Para verificar que se ha creado el SCC personalizado, ejecute el siguiente comando oc
:
$ oc get scc | grep gke-connect-scc
Requisitos de identidad de la carga de trabajo de la flota
Puede registrar clústeres conectados con la identidad de carga de trabajo de flota habilitada si su plataforma crea un punto final OIDC público para su clúster (o le permite crear uno), o si tiene habilitada la detección de emisores de cuentas de servicio de Kubernetes para el clúster. Si no puede cumplir estos requisitos, debe registrar los clústeres conectados con una Google Cloud cuenta de servicio para autenticación.
Para tipos de clúster específicos, consulte lo siguiente:
- Clústeres OpenShift : se pueden registrar con la identidad de carga de trabajo de flota habilitada después de haber configurado su SCC personalizado , como se describe anteriormente.
- Clústeres de tipo : Requiere que la detección de emisores de cuentas de servicio esté habilitada para usar la identidad de carga de trabajo de la flota. Esta función está habilitada de forma predeterminada desde la versión 1.20 de Kubernetes. Si necesita habilitarla, siga las instrucciones en "Proyección del volumen de tokens de cuentas de servicio" . La detección de emisores de cuentas de servicio se habilita automáticamente cuando se habilita el proyecto de volumen de tokens de cuentas de servicio.
¿Que sigue?
Siga las instrucciones para registrar un clúster .