Antes de começar
Vista geral
O seu cluster do GKE tem de cumprir os seguintes requisitos:
Opcional, mas recomendado. O cluster deve ser dedicado ao Kf. Recomendamos que instale apenas o Kf e as respetivas dependências para garantir que a matriz de compatibilidade é mantida.
Pelo menos, quatro nós. Se precisar de adicionar nós, consulte o artigo Redimensionar um cluster.
O tipo de máquina mínimo que tem, pelo menos, quatro vCPUs, como
e2-standard-4. Se o tipo de máquina do seu cluster não tiver, pelo menos, quatro CPUs virtuais, altere o tipo de máquina conforme descrito no artigo Migrar cargas de trabalho para diferentes tipos de máquinas.Opcional, mas recomendado, inscreva o cluster num canal de lançamento. Siga as instruções em Inscrever um cluster existente num canal de lançamento se tiver uma versão estática do GKE.
Workload Identity ativado.
Artifact Registry ativado.
O Tekton está instalado. Consulte a matriz de dependências da versão.
Uma conta de serviço Google com a seguinte política de IAM (instruções de criação indicadas abaixo):
roles/iam.serviceAccountAdminserviceAccount:${CLUSTER_PROJECT}.svc.id.goog[kf/controller](para o membroserviceAccount:${CLUSTER_PROJECT}.svc.id.goog[kf/controller])
A secção Limpar tem instruções sobre como eliminar o cluster.
Ative o suporte para o Compute Engine
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Ative a API Compute Engine.
- Ative a API Google Kubernetes Engine. Ative a API Google Kubernetes Engine
- Se quiser usar a CLI gcloud para esta tarefa,
instale-a e, em seguida,
inicialize-a. Se instalou anteriormente a CLI gcloud, execute o comando
gcloud components updatepara obter a versão mais recente. As versões anteriores da CLI gcloud podem não suportar a execução dos comandos neste documento. Crie a conta de serviço que o Kf vai usar.
gcloud iam service-accounts create ${CLUSTER_NAME}-sa \ --project=${CLUSTER_PROJECT_ID} \ --description="GSA for Kf ${CLUSTER_NAME}" \ --display-name="${CLUSTER_NAME}"Permitir que a conta de serviço modifique a respetiva política. O controlador Kf usa esta opção para adicionar novos espaços de nomes à política, o que permite a reutilização para a identidade de carga de trabalho.
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"Atribua a função de métricas de monitorização para acesso de escrita ao 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"Atribua a função de registo para acesso de escrita ao 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"Crie um Artifact Registry para armazenar imagens de contentores.
gcloud artifacts repositories create ${CLUSTER_NAME} \ --repository-format=docker \ --location=${COMPUTE_REGION}Conceda autorização à conta de serviço no repositório do 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'Configure a autenticação local.
gcloud auth configure-docker ${COMPUTE_REGION}-docker.pkg.devInstale o Tekton:
kubectl apply -f "https://github.com/tektoncd/pipeline/releases/download/${TEKTON_VERSION}/release.yaml"Consulte o artigo Crie e prepare um cluster do GKE para o Kf para criar um cluster preparado para executar o Kf.
Selecione e tome nota da versão do Kf pretendida. Consulte a página Kf Downloads para ver as versões disponíveis
Instalar CLI:
Linux
Esta ação instala o
kfpara todos os utilizadores no sistema. Siga as instruções no separador do Cloud Shell para o instalar apenas para si.gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-linux /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfMac
Esta ação instala o
kfpara todos os utilizadores no sistema.gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-darwin /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfCloud Shell
Isto instala o
kfna sua instância do Cloud Shell se usar obash. As instruções podem ter de ser modificadas para outras shells.mkdir -p ~/bingcloud storage cp gs://kf-releases/${KF_VERSION}/kf-linux ~/bin/kfchmod a+x ~/bin/kfecho "export PATH=$HOME/bin:$PATH" >> ~/.bashrcsource ~/.bashrcWindows
Esta ação transfere
kfpara o diretório atual. Adicione-o ao caminho se quiser chamá-lo a partir de qualquer outro local que não seja o diretório atual.gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-windows.exe kf.exeInstale os componentes do servidor:
Linux e Mac
Esta ação transfere o ficheiro kf.yaml para o diretório atual.
gcloud storage cp gs://kf-releases/${KF_VERSION}/kf.yaml /tmp/kf.yamlkubectl apply -f /tmp/kf.yamlWindows
Esta ação transfere o ficheiro kf.yaml para o diretório atual.
gcloud storage cp gs://kf-releases/${KF_VERSION}/kf.yaml kf.yamlkubectl apply -f kf.yamlSegredos de configuração:
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 -Configure as predefinições do Kf. Pode alterar estes valores mais tarde. O exemplo abaixo usa modelos de domínio com um fornecedor de DNS de caráter universal para fornecer a cada espaço o seu próprio nome de domínio:
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}\"}}"Validar instalação:
kf doctor --retries 10
- O Kf está instalado num cluster do GKE compatível. Consulte Instale o Kf para ver instruções.
- Um
.kubeconfiga segmentar o cluster Kf. Se criou o cluster de acordo com as instruções neste documento, este passo já está concluído. Pode gerar explicitamente a configuração comgcloud container clusters get-credentials ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION} - A CLI
kfestá instalada e no seu caminho. Consulte Instale o Kf para ver instruções. - A CLI
gitestá instalada e no seu caminho. Criar novo espaço:
kf create-space test-space
Segmente o espaço:
kf target -s test-space
Clone o repositório test-app:
git clone https://github.com/cloudfoundry-samples/test-app go-test-app cd go-test-app
Envie a app:
kf push test-app
Encontre o URL da aplicação:
Use a formatação de saída para obter apenas o trajeto:
kf app test-app --output 'jsonpath={.status.urls[0]}'Em alternativa, pode usar esta abordagem de CF mais tradicional:
kf apps
Abra o URL no navegador.
Elimine o cluster do GKE:
gcloud container clusters delete ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}Elimine a conta de serviço Google:
gcloud iam service-accounts delete ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.comElimine vinculações de políticas de IAM:
gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.admin" gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountAdmin" gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"Elimine o repositório de imagens de contentores:
gcloud artifacts repositories delete ${CLUSTER_NAME} \ --location=${COMPUTE_REGION}
Ative e configure o GKE
Antes de começar, certifique-se de que realizou as seguintes tarefas:
Crie e prepare um novo cluster do GKE
Configure variáveis de 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.2.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.2.0 Set-Variable -Name TEKTON_VERSION -Value v0.19.0
Configuração da conta de serviço
Crie uma conta de serviço do GCP (GSA) que vai ser associada a uma conta de serviço do Kubernetes através do Workload Identity. Isto evita a necessidade de criar e injetar uma chave de conta de serviço.
Crie um cluster do 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"Defina regras de firewall
O Kf requer que algumas portas da firewall estejam abertas. O nó principal tem de conseguir comunicar com pods nas portas 80, 443, 8080, 8443 e 6443.
Ative o Workload Identity
Agora que tem uma conta de serviço e um cluster do GKE, associe o espaço de nomes de identidade do cluster ao 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 do GKE de destino
Configure o acesso à linha de comandos kubectl executando o seguinte comando.
gcloud container clusters get-credentials ${CLUSTER_NAME} \
--project=${CLUSTER_PROJECT_ID} \
--zone=${CLUSTER_LOCATION}Crie um repositório do Artifact Registry
Instale dependências de software no cluster
Instale o Kf
Enviar uma aplicação
Pré-requisitos
Para concluir esta secção, são necessários os seguintes elementos:
Prepare o espaço
Envie a app de teste do Cloud Foundry
Limpar
Estes passos devem remover todos os componentes criados na secção Crie e prepare um novo cluster do GKE.