Ce document explique comment installer Kf et ses dépendances sur un cluster Google Distributed Cloud ou Google Distributed Cloud sur site.
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 pour Google Distributed Cloud qui répond aux exigences de Cloud Service Mesh.
Configuré pour la journalisation et la surveillance.
Enregistré dans votre parc GKE Enterprise :
Accéder aux clusters GKE Enterprise
Découvrez comment enregistrer un cluster.
Prérequis pour Kf
Examiner et comprendre les autorisations d'accès des composants dans Kf sur la page Dépendances et architecture de 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 Google Distributed Cloud 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.comWindows 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.comConfigurer un compte de service
Créez le Google Cloud compte de service (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.adminrequis 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.jsongcloud 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
loadBalancerIPsur 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.26.0/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.6.1/kf-linux /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfMac
Cette commande installe
kfpour tous les utilisateurs du système.gcloud storage cp gs://kf-releases/v2.6.1/kf-darwin /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfCloud Shell
kfsera 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 ~/bingcloud storage cp gs://kf-releases/v2.6.1/kf-linux ~/bin/kfchmod a+x ~/bin/kfecho "export PATH=$HOME/bin:$PATH" >> ~/.bashrcsource ~/.bashrcWindows
Cette commande télécharge
kfdans 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.6.1/kf-windows.exe kf.exeInstallez l'opérateur :
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.6.1/operator.yaml"
Configurez l'opérateur pour Kf :
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.6.1/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=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
kfa é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