Installazione di kf

Questo documento descrive come configurare un cluster GKE, quindi installare Kf e le relative dipendenze.

Prima di iniziare

Panoramica

Abilitare il supporto di Compute Engine

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Abilita l'API Compute Engine

    Abilita l'API

  7. Abilitare e configurare GKE

    Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

    • Attiva l'API Google Kubernetes Engine.
    • Attiva l'API Google Kubernetes Engine
    • Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo gcloud components update.

    Crea e prepara un nuovo cluster GKE

    Configura le variabili di ambiente

    Linux

    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}
    export NODE_COUNT=4
    export MACHINE_TYPE=e2-standard-4
    export NETWORK=default
    export KF_VERSION=v2.1.0
    export TEKTON_VERSION=v0.19.0
    

    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
    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 KF_VERSION -Value v2.1.0
    Set-Variable -Name TEKTON_VERSION -Value v0.19.0
    

    Configurazione del service account

    Crea un account di servizio Google (GSA) che verrà associato a un service account Kubernetes tramite Workload Identity. In questo modo non è necessario creare e inserire una chiave del account di servizio.

    1. Crea il account di servizio che verrà utilizzato da Kf.

      gcloud iam service-accounts create ${CLUSTER_NAME}-sa \
        --project=${CLUSTER_PROJECT_ID} \
        --description="GSA for Kf ${CLUSTER_NAME}" \
        --display-name="${CLUSTER_NAME}"
    2. Consenti al account di servizio di modificare il proprio criterio. Il controller Kf lo utilizzerà per aggiungere nuovi spazi dei nomi al criterio, consentendo il riutilizzo per Workload Identity.

      gcloud iam service-accounts add-iam-policy-binding ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com \
        --project=${CLUSTER_PROJECT_ID} \
        --role="roles/iam.serviceAccountAdmin" \
        --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"
    3. Assegna il ruolo di metriche di monitoraggio per l'accesso in scrittura a Cloud Monitoring.

      gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \
        --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    4. Assegna il ruolo di logging per l'accesso in scrittura a Cloud Logging.

      gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \
        --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
        --role="roles/logging.logWriter"

    Crea un cluster GKE

    gcloud container clusters create ${CLUSTER_NAME} \
      --project=${CLUSTER_PROJECT_ID} \
      --zone=${CLUSTER_LOCATION} \
      --num-nodes=${NODE_COUNT} \
      --machine-type=${MACHINE_TYPE} \
      --network=${NETWORK} \
      --addons=HttpLoadBalancing,HorizontalPodAutoscaling,NetworkPolicy \
      --enable-stackdriver-kubernetes \
      --enable-ip-alias \
      --enable-network-policy \
      --enable-autorepair \
      --enable-autoupgrade \
      --scopes=https://www.googleapis.com/auth/cloud-platform \
      --release-channel=regular \
      --workload-pool="${CLUSTER_PROJECT_ID}.svc.id.goog" \
      --service-account="${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"

    Imposta regole firewall

    Kf richiede l'apertura di alcune porte firewall. Il nodo master deve essere in grado di comunicare con i pod sulle porte 80, 443, 8080, 8443 e 6443.

    Abilita Workload Identity

    Ora che hai un account di servizio e un cluster GKE, associa lo spazio dei nomi dell'identità del cluster al cluster.

    gcloud iam service-accounts add-iam-policy-binding \
      "${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
      --project=${CLUSTER_PROJECT_ID} \
      --role="roles/iam.workloadIdentityUser" \
      --member="serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[kf/controller]"

    Cluster GKE di destinazione

    Configura l'accesso alla riga di comando kubectl eseguendo il seguente comando.

    gcloud container clusters get-credentials ${CLUSTER_NAME} \
        --project=${CLUSTER_PROJECT_ID} \
        --zone=${CLUSTER_LOCATION}

    Crea un repository Artifact Registry

    1. Crea un Artifact Registry per archiviare le immagini container.

      gcloud artifacts repositories create ${CLUSTER_NAME} \
        --repository-format=docker \
        --location=${COMPUTE_REGION}
    2. Concedi all'account di servizio l'autorizzazione sul repository Artifact Registry.

      gcloud artifacts repositories add-iam-policy-binding ${CLUSTER_NAME} \
        --location=${COMPUTE_REGION} \
        --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
        --role='roles/artifactregistry.writer'
    3. Configura l'autenticazione locale.

      gcloud auth configure-docker ${COMPUTE_REGION}-docker.pkg.dev

    Installa le dipendenze software sul cluster

    1. Installa Service Mesh.

    2. Installa Tekton:

      kubectl apply -f "https://github.com/tektoncd/pipeline/releases/download/${TEKTON_VERSION}/release.yaml"

    Installazione di kf

    1. Consulta Crea e prepara un cluster GKE per Kf per creare un cluster pronto per l'esecuzione di Kf.

    2. Seleziona e annota la release di Kf che preferisci. Consulta la pagina Kf Downloads per le versioni disponibili

    3. Installa l'interfaccia a riga di comando:

      Linux

      Verrà installato kf per tutti gli utenti del sistema. Segui le istruzioni nella scheda Cloud Shell per installarlo solo per te.

      gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-linux /tmp/kf
      chmod a+x /tmp/kf
      sudo mv /tmp/kf /usr/local/bin/kf

      Mac

      Verrà installato kf per tutti gli utenti del sistema.

      gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-darwin /tmp/kf
      chmod a+x /tmp/kf
      sudo mv /tmp/kf /usr/local/bin/kf

      Cloud Shell

      In questo modo verrà installato kf nell'istanza Cloud Shell se utilizzi bash, le istruzioni potrebbero dover essere modificate per altre shell.

      mkdir -p ~/bin
      gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-linux ~/bin/kf
      chmod a+x ~/bin/kf
      echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc
      source ~/.bashrc

      Windows

      Verrà scaricato kf nella directory corrente. Aggiungilo al percorso se vuoi chiamarlo da una directory diversa da quella corrente.

      gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-windows.exe kf.exe
    4. Installa i componenti del server:

      Linux e Mac

      Verrà scaricato kf.yaml nella directory corrente.

      gcloud storage cp gs://kf-releases/${KF_VERSION}/kf.yaml /tmp/kf.yaml
      kubectl apply -f /tmp/kf.yaml

      Windows

      Verrà scaricato kf.yaml nella directory corrente.

      gcloud storage cp gs://kf-releases/${KF_VERSION}/kf.yaml kf.yaml
      kubectl apply -f kf.yaml
    5. Configura i secret:

      export WI_ANNOTATION=iam.gke.io/gcp-service-account=${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
      
      kubectl annotate serviceaccount controller ${WI_ANNOTATION} \
      --namespace kf \
      --overwrite
      
      echo "{\"apiVersion\":\"v1\",\"kind\":\"ConfigMap\",\"metadata\":{\"name\":\"config-secrets\", \"namespace\":\"kf\"},\"data\":{\"wi.googleServiceAccount\":\"${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com\"}}" | kubectl apply -f -
    6. Configura i valori predefiniti di Kf. Questi valori possono essere modificati in un secondo momento. L'esempio seguente utilizza modelli di dominio con un provider DNS jolly per fornire a ogni spazio il proprio nome di dominio:

      export CONTAINER_REGISTRY=${COMPUTE_REGION}-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME}
      export DOMAIN='$(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.io'
      
      kubectl patch configmaps config-defaults \
      -n=kf \
      -p="{\"data\":{\"spaceContainerRegistry\":\"${CONTAINER_REGISTRY}\",\"spaceClusterDomains\":\"- domain: ${DOMAIN}\"}}"
    7. Convalida l'installazione:

      kf doctor --retries 10