En este documento se describe cómo instalar Kf y sus dependencias en un clúster local creado como parte de Google Distributed Cloud, ya sea en VMware o en Bare Metal.
Si ya conoces el proceso de instalación de Kf en un clúster de GKE en Google Cloud, las principales diferencias con el procedimiento local son las siguientes:
- No es necesario instalar Config Connector para una instalación local.
- El procedimiento local usa credenciales de Docker en lugar de Workload Identity.
Antes de empezar
Requisitos de Google Distributed Cloud
Un clúster de usuario que cumpla los requisitos de Cloud Service Mesh.
Configurado para el registro y la monitorización.
Registrado en una flota:
Requisitos de Kf
Consulta los permisos de acceso de los componentes de Kf en la página de dependencias y arquitectura de Kf.
Tekton para usar con Kf. No es un servicio orientado a los usuarios.
Una cuenta de servicio de Google específica.
Preparar un nuevo clúster local y los servicios relacionados
Configurar variables de entorno
Linux y Mac
export PROJECT_ID=YOUR_PROJECT_ID export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID export CLUSTER_NAME=kf-cluster export COMPUTE_ZONE=us-central1-a export COMPUTE_REGION=us-central1 export CLUSTER_LOCATION=${COMPUTE_ZONE} # Replace ZONE with REGION to switch export NODE_COUNT=4 export MACHINE_TYPE=e2-standard-4 export NETWORK=default export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID export CLUSTER_NAME=kf-cluster export DOCKER_SERVER=YOUR_DOCKER_SERVER_URL export SA_NAME=${CLUSTER_NAME}-sa export SA_EMAIL=${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
Windows PowerShell
Set-Variable -Name PROJECT_ID -Value YOUR_PROJECT_ID Set-Variable -Name CLUSTER_PROJECT_ID -Value YOUR_PROJECT_ID Set-Variable -Name CLUSTER_NAME -Value kf-cluster Set-Variable -Name COMPUTE_ZONE -Value us-central1-a Set-Variable -Name COMPUTE_REGION -Value us-central1 Set-Variable -Name CLUSTER_LOCATION -Value $COMPUTE_ZONE # Replace ZONE with REGION to switch Set-Variable -Name NODE_COUNT -Value 4 Set-Variable -Name MACHINE_TYPE -Value e2-standard-4 Set-Variable -Name NETWORK -Value default Set-Variable -Name CLUSTER_PROJECT_ID -Value YOUR_PROJECT_ID Set-Variable -Name CLUSTER_NAME -Value kf-cluster Set-Variable -Name DOCKER_SERVER -Value YOUR_DOCKER_SERVER_URL Set-Variable -Name SA_NAME -Value ${CLUSTER_NAME}-sa Set-Variable -Name SA_EMAIL -Value ${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
Configurar una cuenta de servicio
Crea la cuenta de servicio (GSA) y la clave de cuenta de servicio que se usan para que las compilaciones lean o escriban en Container Registry. Google Cloud Este paso es diferente si usas otro registro de contenedores, ya que podría tener otra forma de obtener las credenciales para acceder al registro.
Crea la cuenta de servicio que usa Kf:
gcloud beta iam service-accounts create ${SA_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --description="gcr.io admin for ${CLUSTER_NAME}" \ --display-name="${CLUSTER_NAME}"
Asigna a la cuenta de servicio el rol
storage.admin
necesario para leer o escribir en Container Registry:gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.admin"
Crea la clave de la cuenta de servicio:
temp_dir=$(mktemp -d)
key_path=${temp_dir}/key.json
gcloud iam service-accounts keys create --iam-account ${SA_EMAIL} ${key_path}
key_json=$(cat ${key_path})
rm -rf ${temp_dir}
Instalar dependencias de software en un clúster
Instala Cloud Service Mesh v1.23.3-asm.1+config1.
Después de instalar Cloud Service Mesh, debes crear una pasarela de entrada siguiendo la guía de instalación de pasarelas.
Si usas Google Distributed Cloud, asigna a
loadBalancerIP
una IP asignada al clúster, tal como se describe en Configurar direcciones IP externas para Google Distributed Cloud.
Instala Tekton:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.68.0/release.yaml"
Instalar Kf
Instala la CLI de Kf:
Linux
Este comando instala la CLI de Kf para todos los usuarios del sistema. Sigue las instrucciones de la pestaña Cloud Shell para instalarlo solo para ti.
gcloud storage cp gs://kf-releases/v2.11.28/kf-linux /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Mac
Este comando instala
kf
para todos los usuarios del sistema.gcloud storage cp gs://kf-releases/v2.11.28/kf-darwin /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Cloud Shell
Este comando instala
kf
en tu instancia de Cloud Shell si usasbash
. Si usas otro shell, es posible que tengas que modificar las instrucciones.mkdir -p ~/bin
gcloud storage cp gs://kf-releases/v2.11.28/kf-linux ~/bin/kf
chmod a+x ~/bin/kf
echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
Windows
Este comando descarga
kf
en el directorio actual. Añádela a la ruta si quieres llamarla desde cualquier otro directorio que no sea el actual.gcloud storage cp gs://kf-releases/v2.11.28/kf-windows.exe kf.exe
Instala el operador:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.28/operator.yaml"
Configura el operador de Kf:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.28/kfsystem.yaml"
Crear un secreto de Kubernetes para las credenciales de Docker
Crea un secreto de Kubernetes en el espacio de nombres de Kf para las credenciales de Docker que has creado anteriormente en Configuración de la cuenta de servicio. A continuación, parchea el secreto de Kubernetes en la implementación de subresource-apiserver
para subir las fuentes.
Habilita y actualiza el operador de Kf para que use Container Registry como registro de contenedores.
export CONTAINER_REGISTRY=gcr.io/${CLUSTER_PROJECT_ID}
kubectl patch kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'spaceContainerRegistry':'${CONTAINER_REGISTRY}'}}}]"
Verifica que el operador de Kf haya creado el espacio de nombres
kf
. Este proceso puede tardar unos minutos.kubectl get namespace kf
Crea un secreto de Kubernetes para usarlo con registros de Docker.
export secret_name=kf-gcr-key-${RANDOM}
kubectl -n kf create secret docker-registry ${secret_name} \ --docker-username=_json_key --docker-server ${DOCKER_SERVER} \ --docker-password="${key_json}"
Actualiza el operador de Kf para especificar el secreto que contiene las credenciales de Docker.
kubectl patch kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'config': {'secrets':{'build':{'imagePushSecrets':'${secret_name}'}}}}}]"
Validar la instalación
kf doctor --retries=20