Antes de começar
Informações gerais
Requisitos de cluster do GKE.
Opcional, mas é recomendado que o cluster seja dedicado ao Kf. Recomendamos que você instale apenas o Kf e as dependências dele para garantir que a matriz de compatibilidade seja mantida.
No mínimo, quatro nós. Se for preciso adicionar nós, veja Como 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 cluster não tiver pelo menos quatro vCPUs, altere o tipo de máquina conforme descrito em Como migrar cargas de trabalho para diferentes tipos de máquina.Como opção recomendada, inscreva o cluster em um canal de lançamento. Siga as instruções em Como registrar um cluster existente em um canal de lançamento se você tiver uma versão estática do GKE.
Identidade da carga de trabalho ativada.
Requisitos do Kf. A matriz de dependências lista as versões específicas.
Tekton para uso pelo Kf. Este não é um serviço direcionado ao usuário.
Uma conta de serviço dedicada do Google.
Ativar 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.
-
Make sure 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.
-
Make sure that billing is enabled for your Google Cloud project.
- Ative a API Compute Engine.
Ativar suporte para o Artifact Registry
- Ative a API Artifact Registry.
Ativar e configurar o GKE
Antes de começar, veja se você realizou as seguintes tarefas:
- Ative a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a CLI do Google Cloud para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a gcloud CLI anteriormente, instale a versão
mais recente executando
gcloud components update
.
Preparar um novo cluster do GKE e os serviços relacionados
Configurar 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
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
Configuração da conta de serviço
Crie uma conta de serviço do GCP (GSA) que será associada a uma conta de serviço do Kubernetes por meio da Identidade da carga de trabalho. Isso evita a necessidade de criar e injetar uma chave de conta de serviço.
Crie a conta de serviço que o Kf usará.
gcloud iam service-accounts create ${CLUSTER_NAME}-sa \ --project=${CLUSTER_PROJECT_ID} \ --description="GSA for Kf ${CLUSTER_NAME}" \ --display-name="${CLUSTER_NAME}"
Crie um novo papel de IAM personalizado.
gcloud iam roles create serviceAccountUpdater \ --project=${CLUSTER_PROJECT_ID} \ --title "Service Account Updater" \ --description "This role only updates members on a GSA" \ --permissions iam.serviceAccounts.get,iam.serviceAccounts.getIamPolicy,iam.serviceAccounts.list,iam.serviceAccounts.setIamPolicy
Permita que a conta de serviço modifique sua própria política. O controlador Kf usará esse parâmetro para adicionar novos (nomes) espaços à política, permitindo a reutilização da Identidade da carga de trabalho.
gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="projects/${CLUSTER_PROJECT_ID}/roles/serviceAccountUpdater"
Dê o papel de métricas de monitoramento para acesso de gravação 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"
Dê o papel de geração de registros para acesso de gravação no 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"
Criar cluster do GKE
gcloud container clusters create ${CLUSTER_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --zone=${CLUSTER_LOCATION} \ --num-nodes=${NODE_COUNT} \ --machine-type=${MACHINE_TYPE} \ --disk-size "122" \ --network=${NETWORK} \ --addons HorizontalPodAutoscaling,HttpLoadBalancing,GcePersistentDiskCsiDriver \ --enable-dataplane-v2 \ --enable-stackdriver-kubernetes \ --enable-ip-alias \ --enable-autorepair \ --enable-autoupgrade \ --scopes cloud-platform \ --release-channel=regular \ --workload-pool="${CLUSTER_PROJECT_ID}.svc.id.goog" \ --service-account="${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"
Definir regras de firewall
O Kf requer a abertura de algumas portas de firewall. O nó mestre precisa ser capaz de se comunicar com pods nas portas 80, 443, 8080, 8443 e 6443.
Ativar a Identidade da carga de trabalho
Agora que você tem uma conta de serviço e um cluster do GKE, associe o namespace de identidade do cluster ao cluster.
gcloud iam service-accounts add-iam-policy-binding \ --project=${CLUSTER_PROJECT_ID} \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[kf/controller]" \ "${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" gcloud iam service-accounts add-iam-policy-binding \ --project=${CLUSTER_PROJECT_ID} \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[cnrm-system/cnrm-controller-manager]" \ "${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"
Cluster do GKE de destino
Use o comando a seguir para configurar o acesso à linha de comando kubectl.
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --zone=${CLUSTER_LOCATION}
Crie um repositório do Artifact Registry
Crie um Artifact Registry para armazenar as imagens de contêiner.
gcloud artifacts repositories create ${CLUSTER_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --repository-format=docker \ --location=${COMPUTE_REGION}
Conceda permissão à conta de serviço no repositório do Artifact Registry.
gcloud artifacts repositories add-iam-policy-binding ${CLUSTER_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --location=${COMPUTE_REGION} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role='roles/artifactregistry.writer'
Instalar dependências de software no cluster
Instale o Cloud Service Mesh.
Instale o Config Connector.
Faça o download do arquivo .tar exigido do operador do Config Connector:
Extraia o arquivo tar:
tar zxvf release-bundle.tar.gz
Instale o operador do Config Connector no cluster.
kubectl apply -f operator-system/configconnector-operator.yaml
Configure o operador do Config Connector.
Copie o seguinte YAML para um arquivo chamado
configconnector.yaml
.# configconnector.yaml apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnector metadata: # the name is restricted to ensure that there is only one # ConfigConnector resource installed in your cluster name: configconnector.core.cnrm.cloud.google.com spec: mode: cluster googleServiceAccount: "KF_SERVICE_ACCOUNT_NAME" # Replace with the full service account resolved from ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
Aplique a configuração a seu cluster.
kubectl apply -f configconnector.yaml
Verifique se o Config Connector está totalmente instalado antes de continuar.
Todos os componentes do Config Connector são executados em um namespace chamado
cnrm-system
. Execute o comando a seguir para verificar se os pods estão prontos:kubectl wait -n cnrm-system --for=condition=Ready pod --all
Se o Config Connector estiver instalado corretamente, você verá um resultado semelhante a este:
pod/cnrm-controller-manager-0 condition met pod/cnrm-deletiondefender-0 condition met pod/cnrm-resource-stats-recorder-86858dcdc5-6lqzb condition met pod/cnrm-webhook-manager-58c799b8fb-kcznq condition met pod/cnrm-webhook-manager-58c799b8fb-n2zpx condition met
Configure a identidade da carga de trabalho.
kubectl annotate serviceaccount \ --namespace cnrm-system \ --overwrite \ cnrm-controller-manager \ iam.gke.io/gcp-service-account=${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
Instale o Tekton:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.23.0/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.5.4/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.5.4/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.5.4/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.5.4/kf-windows.exe kf.exe
Instale o operador:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.5.4/operator.yaml"
Configure o operador para Kf:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.5.4/kfsystem.yaml"
Configure secrets e padrões:
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': {'spaceContainerRegistry': '${CONTAINER_REGISTRY}', 'secrets':{'workloadidentity':{'googleserviceaccount':'${CLUSTER_NAME}-sa', 'googleprojectid':'${CLUSTER_PROJECT_ID}'}}}}}]"
Como validar a instalação
kf doctor --retries=20
Limpar
Essas etapas precisam remover todos os componentes criados na seção Criar e preparar um novo cluster do GKE.
Exclua a conta de serviço do Google:
gcloud iam service-accounts delete ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
Exclua as vinculações da política do 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"
Excluir repositório de imagens de contêiner:
gcloud artifacts repositories delete ${CLUSTER_NAME} \ --location=${COMPUTE_REGION}
Exclua o cluster do GKE:
gcloud container clusters delete ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}