Ce document explique comment installer Kf et ses dépendances sur un cluster sur site créé dans le cadre de Google Distributed Cloud, sur VMware ou sur Bare Metal.
Si vous connaissez déjà le processus d'installation de Kf sur un cluster GKE dans Google Cloud, les principales différences avec la procédure sur site sont les suivantes :
- Vous n'avez pas besoin d'installer Config Connector pour une installation sur site.
- La procédure sur site utilise les identifiants Docker au lieu de Workload Identity.
Avant de commencer
Exigences concernant Google Distributed Cloud
Un cluster d'utilisateur répondant aux exigences de Cloud Service Mesh
Configuré pour la journalisation et la surveillance.
Enregistré dans un parc :
Prérequis pour Kf
Tekton, pour une utilisation par Kf. Il ne s'agit pas d'un service destiné aux utilisateurs.
Un compte de service Google dédié.
Préparer un nouveau cluster sur site et les services associés
Configurer des variables d'environnement
Linux et 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
Configurer un compte de service
Créez le compte de service Google Cloud (GSA) et la clé de compte de service utilisés pour les lectures et les écritures à partir de Container Registry. Cette étape est différente si vous utilisez un autre registre de conteneurs, car la procédure permettant d'obtenir des identifiants pour accéder au registre peut être différente.
Créez le compte de service utilisé par Kf :
gcloud beta iam service-accounts create ${SA_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --description="gcr.io admin for ${CLUSTER_NAME}" \ --display-name="${CLUSTER_NAME}"
Attribuez au compte de service le rôle
storage.admin
requis pour lire/écrire à partir de 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"
Créez la clé du compte de service :
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}
Installer des dépendances logicielles sur le cluster
Installez Cloud Service Mesh.
Suivez le guide d'installation de Cloud Service Mesh pour installer Cloud Service Mesh.
Si vous utilisez Google Distributed Cloud, définissez
loadBalancerIP
sur une adresse IP allouée au cluster, comme décrit dans la section Configurer des adresses IP externes pour Google Distributed Cloud.
Installez Tekton :
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.47.1/release.yaml"
Installer Kf
Installez la CLI Kf :
Linux
Cette commande installe la CLI Kf pour tous les utilisateurs du système. Suivez les instructions de l'onglet Cloud Shell pour l'installer juste pour vous.
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
Cette commande installe
kf
pour tous les utilisateurs du système.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
kf
sera installé sur votre instance Cloud Shell si vous utilisezbash
, et vous devrez peut-être modifier les instructions pour les autres interfaces système.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
Cette commande télécharge
kf
dans le répertoire actuel. Si vous souhaitez l'appeler depuis un emplacement autre que le répertoire actuel, ajoutez-le au chemin d'accès.gcloud storage cp gs://kf-releases/v2.11.21/kf-windows.exe kf.exe
Installez l'opérateur :
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.21/operator.yaml"
Configurez l'opérateur pour Kf :
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.21/kfsystem.yaml"
Créer un secret Kubernetes pour les identifiants Docker
Créez un secret Kubernetes dans l'espace de noms Kf pour les identifiants Docker que vous avez créés plus haut dans la section Configurer un compte de service. Appliquez ensuite le secret Kubernetes au déploiement subresource-apiserver
pour les importations sources.
Activez et mettez à jour l'opérateur Kf pour utiliser Container Registry en tant que registre de conteneurs.
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}'}}}]"
Vérifiez que l'espace de noms
kf
a été créé par l'opérateur Kf. Cette opération peut prendre quelques minutes.kubectl get namespace kf
Créez un secret Kubernetes à utiliser avec les registres 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}"
Mettez à jour l'opérateur Kf pour spécifier le secret contenant les identifiants Docker.
kubectl patch kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'config': {'secrets':{'build':{'imagePushSecrets':'${secret_name}'}}}}}]"
Valider l'installation
kf doctor --retries=20