Neste documento, descrevemos como instalar o Kf e as dependências dele em um cluster no local criado como parte do Google Distributed Cloud, seja no VMware ou em bare metal.
Se você já estiver familiarizado com o processo de instalação do Kf em um cluster do GKE no Google Cloud, as principais diferenças no procedimento local são:
- Não é necessário instalar o Config Connector para uma instalação local.
- O procedimento local usa as credenciais do Docker em vez da identidade da carga de trabalho.
Antes de começar
Requisitos do Google Distributed Cloud
Um cluster de usuário que atende aos requisitos do Cloud Service Mesh.
Configurado para geração de registros e monitoramento.
Registrado em uma frota:
Requisitos do Kf
Analise e entenda as permissões de acesso dos componentes no Kf na página de dependências e arquitetura do Kf.
Tekton para uso pelo Kf. Este não é um serviço direcionado ao usuário.
Uma conta de serviço dedicada do Google.
Preparar um novo cluster local e os serviços relacionados
Configure as variáveis de ambiente
Linux e 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 conta de serviço
Crie a conta de serviço do Google Cloud (GSA) e a chave da conta de serviço usada para que os builds leiam/gravem no Container Registry. Essa etapa é diferente se você estiver usando um registro de contêiner diferente, porque ele pode ter uma maneira diferente de conseguir as credenciais para acessar o registro.
Crie a conta de serviço usada pelo Kf:
gcloud beta iam service-accounts create ${SA_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --description="gcr.io admin for ${CLUSTER_NAME}" \ --display-name="${CLUSTER_NAME}"
Atribua à conta de serviço o papel
storage.admin
necessário para ler/gravar no 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"
Crie a chave da conta de serviço:
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 dependências de software no cluster
Instale o Cloud Service Mesh v1.12.
Depois de instalar o Cloud Service Mesh, crie um gateway de entrada usando o guia de instalação de gateway.
Se estiver no Google Distributed Cloud, defina
loadBalancerIP
como um IP alocado ao cluster, conforme descrito em Configure endereços IP externos para o Google Distributed Cloud.
Instale o Tekton:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.32.1/release.yaml"
Instalar o Kf
Instale a CLI do Kf:
Linux
Este comando instala a CLI do Kf para todos os usuários no sistema. Siga as instruções na guia do Cloud Shell para instalá-lo só para você.
gcloud storage cp gs://kf-releases/v2.9.0/kf-linux /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Mac
Este comando instala
kf
para todos os usuários no sistema.gcloud storage cp gs://kf-releases/v2.9.0/kf-darwin /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Cloud Shell
Este comando instala
kf
na instância do Cloud Shell se você usarbash
. Talvez as instruções precisem ser modificadas para outros shells.mkdir -p ~/bin
gcloud storage cp gs://kf-releases/v2.9.0/kf-linux ~/bin/kf
chmod a+x ~/bin/kf
echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
Windows
Este comando faz o download de
kf
para o diretório atual. Adicione-o ao caminho se você quiser chamar de outro local que não seja diretório atual.gcloud storage cp gs://kf-releases/v2.9.0/kf-windows.exe kf.exe
Instale o operador:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.9.0/operator.yaml"
Configure o operador para Kf:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.9.0/kfsystem.yaml"
Criar um secret do Kubernetes para credenciais do Docker
Crie um secret do Kubernetes no namespace Kf para credenciais do Docker
que você criou acima em Configuração da conta de serviço. Em seguida, corrija o
secret do Kubernetes na implantação subresource-apiserver
para uploads de origem.
Ative e atualize o operador Kf para usar o Container Registry como o Container Registry.
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}'}}}]"
Verifique se o namespace
kf
foi criado pelo operador Kf. Isso pode levar alguns minutos para ser concluído.kubectl get namespace kf
Crie um secret do Kubernetes para uso com registros do 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}"
Atualize o operador Kf para especificar o secret que contém as credenciais do Docker.
kubectl patch kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'config': {'secrets':{'build':{'imagePushSecrets':'${secret_name}'}}}}}]"
Como validar a instalação
kf doctor --retries=20