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 equipos físicos.
Si ya estás familiarizado con el proceso de instalación de Kf en un clúster de GKE en Google Cloud, las principales diferencias para el procedimiento local son las siguientes:
- No tienes que instalar Config Connector para una instalación local.
- En el procedimiento local, se usan credenciales de Docker en lugar de Workload Identity.
Antes de comenzar
Requisitos de Google Distributed Cloud
Un clúster de usuario que cumpla con los requisitos de Cloud Service Mesh.
Configurado para el registro y la supervisión.
Registrados en una flota:
Requisitos de Kf
Tekton para que lo use Kf. Este no es un servicio orientado al usuario.
Una Cuenta de servicio de Google dedicada.
Prepara un nuevo clúster local y servicios relacionados
Configura 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
WindowsPowerShell
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
Configura la cuenta de servicio
Crea la cuenta de servicio de Google Cloud (GSA) y la clave de la cuenta de servicio que se usa para que las compilaciones se lean o escriban desde Container Registry. Este paso es diferente si usas un registro de contenedores diferente porque podría tener una forma diferente de obtener las credenciales para acceder al registro.
Crea la cuenta de servicio que Kf usa:
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 la función
storage.admin
requerida para leer y escribir desde 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}
Instala dependencias de software en el clúster
Instala Cloud Service Mesh.
Sigue la guía de instalación de Cloud Service Mesh para instalar Cloud Service Mesh.
Si usas Google Distributed Cloud, configura
loadBalancerIP
en una IP asignada al clúster como se describe en Configura direcciones IP externas para Google Distributed Cloud.
Instala Tekton:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.47.1/release.yaml"
Instala Kf
Instala la CLI de Kf:
Linux
Con este comando, se instala la CLI de Kf para todos los usuarios del sistema. Sigue las instrucciones de la pestaña de Cloud Shell para instalarlo tú mismo.
gcloud storage cp gs://kf-releases/v2.11.21/kf-linux /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Mac
Con este comando, se instala
kf
para todos los usuarios del sistema.gcloud storage cp gs://kf-releases/v2.11.21/kf-darwin /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Cloud Shell
Este comando instalará
kf
en tu instancia de Cloud Shell si usasbash
. Es posible que tengas que modificar las instrucciones para otros shells.mkdir -p ~/bin
gcloud storage cp gs://kf-releases/v2.11.21/kf-linux ~/bin/kf
chmod a+x ~/bin/kf
echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
Windows
Con este comando, se descarga
kf
en el directorio actual. Agrégalo a la ruta si deseas llamar desde cualquier otro lugar que no sea el directorio actual.gcloud storage cp gs://kf-releases/v2.11.21/kf-windows.exe kf.exe
Instala el operador:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.21/operator.yaml"
Configura el operador para Kf:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.21/kfsystem.yaml"
Crea 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 creaste antes en Configuración de la cuenta de servicio. Luego, aplica un parche al secreto de Kubernetes en la implementación de subresource-apiserver
para las cargas de origen.
Habilita y actualiza el operador de Kf para que use Container Registry como el registro de contenedores.
export CONTAINER_REGISTRY=${COMPUTE_REGION}-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME} kubectl patch \ kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'featureFlags': {'enable_appdevexperience_builds': true}, 'spaceContainerRegistry': '${CONTAINER_REGISTRY}', 'secrets':{'workloadidentity':{'googleserviceaccount':'${CLUSTER_NAME}-sa', 'googleprojectid':'${CLUSTER_PROJECT_ID}'}}}}}]"
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 espacio de nombres
kf
que creó el operador Kf. Esto puede tardar unos minutos en completarse.kubectl get namespace kf
Crea un secreto de Kubernetes para usar con los 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}'}}}}}]"
Valida la instalación
kf doctor --retries=20