Instalar o Config Connector manualmente

Esta página explica como instalar manualmente o Config Connector. A instalação manual é uma opção flexível que oferece controle sobre a versão instalada e o cronograma de upgrade.

Para mais informações sobre as diferentes opções de instalação, consulte Como escolher um tipo de instalação.

Na maioria dos casos de uso, recomendamos instalar manualmente o Config Connector no modo com namespace. A alternativa é o modo de cluster. O modo com namespace é mais escalonável e oferece melhor isolamento de permissões, o que é ideal para casos de uso multi-inquilinos ou ao gerenciar recursos de vários projetos.

Se você preferir uma única conta de serviço em todo o cluster, siga as instruções para instalação no modo de cluster.

Antes de começar

Antes de instalar manualmente o operador do Config Connector, conclua as etapas a seguir:

Instalar o operador do Config Connector

O Config Connector usa um operador do Kubernetes para manter a instalação atualizada. A instalação do operador é necessária, seja no modo com namespace ou no modo de cluster.

Para instalar o operador do Config Connector, siga estas etapas:

  1. Faça o download do arquivo .tar mais recente do operador do Config Connector:

    gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
    
  2. Extraia o arquivo tar:

    tar zxvf release-bundle.tar.gz
    
  3. Instale o operador do Config Connector no cluster:

    Piloto automático

    kubectl apply -f operator-system/autopilot-configconnector-operator.yaml
    

    Padrão

    kubectl apply -f operator-system/configconnector-operator.yaml
    
  4. Para configurar o operador do Config Connector para ser executado no modo com namespace, siga estas etapas:

    1. Crie um manifesto chamado configconnector.yaml com o seguinte conteúdo:

      apiVersion: core.cnrm.cloud.google.com/v1beta1
      kind: ConfigConnector
      metadata:
        # the name is restricted to ensure that there is only ConfigConnector resource installed in your cluster
        name: configconnector.core.cnrm.cloud.google.com
      spec:
        mode: namespaced
        stateIntoSpec: Absent
      
    2. Aplique o manifesto ao cluster:

      kubectl apply -f configconnector.yaml
      

Instalar o Config Connector no modo com namespace

Nas seções a seguir, o projeto em que você instala o Config Connector é o projeto host. Os outros projetos em que o Config Connector pode gerenciar recursos são os projetos gerenciados. O projeto host e o gerenciado podem ser o mesmo se você quiser que o Config Connector crie recursos apenas no mesmo projeto do cluster.

Criar um namespace

Crie um namespace executando o seguinte comando:

kubectl create namespace NAMESPACE

Substitua NAMESPACE por um namespace.

Criar uma identidade

Crie uma conta de serviço do Identity and Access Management (IAM) e uma vinculação entre a conta de serviço do IAM e a conta de serviço do Config Connector do Kubernetes seguindo estas etapas:

  1. Crie uma conta de serviço do IAM. Se você tiver uma conta de serviço atual, poderá usá-la em vez de criar uma nova. Use gcloud para criar a conta de serviço executando o seguinte comando:

    gcloud iam service-accounts create NAMESPACE_GSA --project HOST_PROJECT_ID
    

    Substitua:

    • NAMESPACE_GSA pelo nome da conta de serviço do Google (GSA), vinculada ao namespace;
    • HOST_PROJECT_ID pelo ID do projeto host.

    Para saber mais sobre como criar contas de serviço, consulte Como criar e gerenciar contas de serviço.

  2. Conceda à conta de serviço do IAM permissões elevadas no projeto gerenciado:

    gcloud projects add-iam-policy-binding MANAGED_PROJECT_ID \
        --member="serviceAccount:NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/owner"
    

    Substitua MANAGED_PROJECT_ID pelo ID do projeto gerenciado.

  3. Crie uma vinculação de política do IAM entre a conta de serviço do IAM e a conta de serviço do Config Connector do Kubernetes:

    gcloud iam service-accounts add-iam-policy-binding \
        NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com \
        --member="serviceAccount:HOST_PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager-NAMESPACE]" \
        --role="roles/iam.workloadIdentityUser"
    
  4. Conceda à conta de serviço do IAM permissões para publicar métricas do Prometheus no Google Cloud Observability no projeto host:

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member="serviceAccount:NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    

Crie um ConfigConnectorContext

Para criar recursos Google Cloud , configure o Config Connector para monitorar o namespace adicionando um objeto ConfigConnectorContext a ele.

Para criar um ConfigConnectorContext, conclua as etapas a seguir.

  1. Crie um manifesto chamado configconnectorcontext.yaml com o seguinte conteúdo:

    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnectorContext
    metadata:
      # you need one ConfigConnectorContext per namespace
      name: configconnectorcontext.core.cnrm.cloud.google.com
      namespace: NAMESPACE
    spec:
      googleServiceAccount: "NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com"
      stateIntoSpec: Absent
    
  2. Aplique o manifesto ao cluster:

    kubectl apply -f configconnectorcontext.yaml
    
  3. Verifique se o operador do Config Connector criou uma conta de serviço do Kubernetes para o namespace executando o seguinte comando:

    kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE  -n cnrm-system
    
  4. Verifique se o pod do controlador do Config Connector está em execução para seu namespace:

    kubectl wait -n cnrm-system \
        --for=condition=Ready pod \
        -l cnrm.cloud.google.com/component=cnrm-controller-manager \
        -l cnrm.cloud.google.com/scoped-namespace=NAMESPACE
    

    Se o controlador do Config Connector estiver em execução, a saída será semelhante a:

    cnrm-controller-manager-abcdefghijk-0 condition met.
    

Parar de gerenciar recursos em um namespace

Se você quiser que o Config Connector pare de gerenciar recursos em um namespace, remova todos os recursos do Config Connector e o objeto ConfigConnectorContext nesse namespace.

  1. Para encontrar todos os recursos do Config Connector no namespace, liste todos os recursos para cada definição de recurso personalizado do Config Connector.

    kubectl get gcp -n NAMESPACE
    

    A saída desse comando lista todas as definições de recursos personalizados (CRDs, na sigla em inglês) que representam um recurso gerenciado pelo Config Connector nesse namespace, incluindo o nome e o tipo do Kubernetes desse recurso.

  2. Para remover todos os recursos do Config Connector, execute o seguinte comando para cada recurso na saída da etapa anterior:

    kubectl delete -n NAMESPACE KIND NAME
    

    Substitua:

    • KIND: o tipo do recurso do Kubernetes.
    • NAME: o nome do recurso.
  3. Exclua o objeto ConfigConnectorContext no seu namespace.

    kubectl delete -n NAMESPACE ConfigConnectorContext configconnectorcontext.core.cnrm.cloud.google.com
    

Desinstalar o Config Connector

Para desinstalar o Config Connector, siga estas etapas:

  1. Para remover as CRDs e os componentes do controlador do Config Connector, execute o seguinte comando:

    kubectl delete ConfigConnectorContext --all -A –wait=false
    
    kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
        --wait=true
    
  2. Para desinstalar o operador do Config Connector, execute o seguinte comando:

    kubectl delete -f operator-system/configconnector-operator.yaml  --wait=true
    

Instalar no modo de cluster

Talvez você prefira instalar e gerenciar o Config Connector no modo de cluster se quiser gerenciar recursos em um único projeto e não precisar da separação de permissões fornecida pelo modo com namespace.

Criar uma identidade

O Config Connector cria e gerencia recursos do Google Cloud usando a autenticação com uma conta de serviço do Identity and Access Management (IAM) e a federação de identidade da carga de trabalho para o GKE para vincular contas de serviço do IAM a contas de serviço do Kubernetes.

Para criar a identidade, conclua as etapas a seguir:

  1. Crie uma conta de serviço do IAM. Se você quiser, poderá usar uma conta de serviço atual e pular esta etapa:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    

    Substitua SERVICE_ACCOUNT_NAME por um nome para a conta de serviço.

    Para saber mais sobre como criar contas de serviço, consulte Como criar e gerenciar contas de serviço.

  2. Conceda à conta de serviço do IAM permissões elevadas no projeto:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/editor"
    

    Substitua PROJECT_ID pela ID do seu projeto.

  3. Crie uma vinculação de política do IAM entre a conta de serviço do IAM e a conta de serviço predefinida do Kubernetes que o Config Connector executa:

    gcloud iam service-accounts add-iam-policy-binding \
    SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --member="serviceAccount:PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager]" \
      --role="roles/iam.workloadIdentityUser"
    

Configurar o Config Connector

Para concluir a instalação, crie um arquivo de configuração para o CustomResource ConfigConnector e, em seguida, aplique-o usando o comando kubectl apply. O operador do Config Connector instala CRDs de recursosGoogle Cloud e componentes do Config Connector no cluster.

Para configurar o operador como modo de cluster, siga estas etapas:

  1. Copie o seguinte arquivo 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: "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"
      # Setting `stateIntoSpec` to `Absent` is recommended. It means setting `cnrm.cloud.google.com/state-into-spec`
      # annotation to `absent` for all Config Connector resources created in the cluster in the future.
      # It prevents Config Connector from populating unspecified fields into the spec.
      stateIntoSpec: Absent
    Substitua:
    • SERVICE_ACCOUNT_NAME pelo nome da conta de serviço.
    • PROJECT_ID pelo código do projeto;
  2. Aplique a configuração ao cluster com kubectl apply:
      kubectl apply -f configconnector.yaml

Como especificar o local para criar os recursos

O Config Connector pode organizar recursos por projeto, pasta ou organização, da mesma forma que você organizaria recursos com o Google Cloud.

Antes de criar recursos com o Config Connector, você precisa configurar onde criar seus recursos. Para determinar onde criar o recurso, o Config Connector usa uma anotação na configuração do recurso ou em um namespace atual. Para mais informações, consulte Como organizando recursos.

Se você não tiver um namespace para essa finalidade, crie um com kubectl.
kubectl create namespace NAMESPACE

Substitua NAMESPACE pelo nome do namespace. Por exemplo: config-connector.

Selecione uma guia para escolher onde quer que o Config Connector crie recursos.

Projeto

Para criar recursos em determinado projeto, execute o seguinte comando:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/project-id=PROJECT_ID

Substitua:

  • NAMESPACE pelo nome do namespace;
  • PROJECT_ID com seu Google Cloud ID do projeto.

Pasta

Para criar recursos em determinada pasta, execute o seguinte comando:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/folder-id=FOLDER_ID

Substitua:

  • NAMESPACE pelo nome do namespace;
  • FOLDER_ID com o ID da sua Google Cloud pasta.

Organização

Para criar recursos em determinada organização, execute o seguinte comando:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/organization-id=ORGANIZATION_ID

Substitua:

  • NAMESPACE pelo nome do namespace;
  • ORGANIZATION_ID pelo ID da sua Google Cloud organização.

Quando você anota o namespace, o Config Connector cria recursos no projeto, na pasta ou na organização correspondente. Para saber mais sobre como o Config Connector usa namespaces do Kubernetes, consulte Namespaces do Kubernetes e projetos do Google Cloud .

Verificar a instalação

Todos os componentes do Config Connector são executados em um namespace chamado cnrm-system. Para verificar se os pods estão prontos, execute o comando a seguir:

kubectl wait -n cnrm-system \
      --for=condition=Ready pod --all

Se o Config Connector estiver instalado corretamente, o resultado será semelhante a este:

pod/cnrm-controller-manager-0 condition met

Desinstalar o Config Connector

Para desinstalar o Config Connector, siga estas etapas:

  1. Para remover as CRDs e os componentes do controlador do Config Connector, execute o seguinte comando:

    kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
        --wait=true
    
  2. Para desinstalar o operador do Config Connector, execute o seguinte comando:

    kubectl delete -f operator-system/configconnector-operator.yaml  --wait=true
    

Fazer upgrade do Config Connector

Para fazer o download e instalar a versão mais recente do operador do Config Connector, execute o seguinte comando:

gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
tar zxvf release-bundle.tar.gz
kubectl apply -f operator-system/configconnector-operator.yaml

Fazer downgrade do Config Connector

Não é possível fazer downgrade completo do Config Connector. Para fazer downgrade do operador e dos CRDs do Config Connector, desinstale, reinstale o Config Connector e aplique novamente os recursos.

Na versão 1.123.1 e mais recentes do Config Connector, é possível reverter da versão do operador para instalações que usam o modo com namespace. Em cada namespace que tem um operador que você quer reverter, defina o campo spec.version no objeto ConfigConnectorContext para a versão anterior do Config Connector.

É possível reverter do controlador do Config Connector em no máximo três versões secundárias. Sempre faça reverter para a versão de patch mais recente de uma determinada versão secundária.

Fazer upgrade de instalações que não são de operador

O Config Connector 1.33.0 e versões mais recentes são compatíveis apenas com a instalação por meio do complemento do GKE ou do operador.

Para fazer upgrade para o operador (e manter todos os recursos do Config Connector), é preciso remover todos os componentes do sistema do Config Connector, exceto os CRDs, e instalar o operador.

  1. Execute os seguintes comandos para remover os componentes do sistema do Config Connector que não são CRD:

    kubectl delete sts,deploy,po,svc,roles,clusterroles,clusterrolebindings --all-namespaces -l cnrm.cloud.google.com/system=true --wait=true
    kubectl delete validatingwebhookconfiguration abandon-on-uninstall.cnrm.cloud.google.com --ignore-not-found --wait=true
    kubectl delete validatingwebhookconfiguration validating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true
    kubectl delete mutatingwebhookconfiguration mutating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true
    
  2. Instale o Config Connector usando o complemento do GKE ou o operador.

Migrar do complemento para uma instalação manual

Quando instalado como um complemento, a versão do Config Connector é vinculada diretamente à versão do GKE instalada.

A instalação manual permite atualizações mais rápidas ao custo de upgrades manuais.

Para mudar os métodos de instalação e manter seus recursos em segurança, siga estas etapas:

  1. Desative o complemento sem excluir nenhum objeto ConfigConnector ou ConfigConnectorContext:

    gcloud container clusters update CLUSTER_NAME --update-addons ConfigConnector=DISABLED
    

    Substitua CLUSTER_NAME pelo nome do cluster em que você instalou o Config Connector.

  2. Instale o operador manual da versão escolhida.

    Para evitar possíveis erros de validação de CRD (por exemplo, KNV2009: Invalid value: "v1beta1": must appear in spec.versions), a versão escolhida do operador manual precisa ser igual ou mais recente que a versão usada para o complemento. Fazer downgrade da versão do operador manual pode causar erros (por exemplo, KNV2009) porque o complemento do GKE já pode ter feito upgrade de determinados CRDs para uma versão mais recente do Config Connector.

A seguir