Instale o Config Connector no modo com espaço de nomes


Esta página explica como instalar o Config Connector no modo com espaço de nomes.

A instalação no modo de espaço de nomes é uma extensão da instalação do Config Connector. O modo com espaço de nomes suporta a gestão de vários projetos, cada um com as suas próprias Google Cloud identidades.

Antes de começar

Antes de configurar o Config Connector para ser executado no modo com espaço de nomes, certifique-se de que instalou o Config Connector.

Configure o Config Connector para ser executado no modo com espaço de nomes

Para ativar o modo com espaço de nomes, conclua os seguintes passos:

  1. Copie o seguinte manifesto YAML para um ficheiro com o nome configconnector.yaml:

    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 a configuração ao cluster com kubectl apply:

    kubectl apply -f configconnector.yaml
    

Configure o Config Connector para gerir recursos nos seus espaços de nomes

Nas secções seguintes, o Google Cloud projeto onde instala o Config Connector é conhecido como o projeto anfitrião ou HOST_PROJECT_ID. Os outros projetos nos quais gere recursos são conhecidos como projetos geridos ou MANAGED_PROJECT_ID. Pode ser o mesmo projeto se pretender usar o Config Connector apenas para criar recursos no mesmo projeto que o seu cluster. Google Cloud

Criar um espaço de nomes

Pode ignorar este passo se já tiver um espaço de nomes para usar na organização dosGoogle Cloud recursos.

Use kubectl para criar um novo espaço de nomes executando o seguinte comando:

kubectl create namespace NAMESPACE

Substitua NAMESPACE por um nome para o espaço de nomes.

Criar uma identidade

Crie uma conta de serviço de gestão de identidade e de acesso (IAM) e crie uma associação entre a conta de serviço de IAM e a conta de serviço do Kubernetes do Config Connector:

  1. Crie uma conta de serviço do IAM. Se tiver uma conta de serviço existente, pode usá-la em vez de criar uma nova conta de serviço. 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 o seguinte:

    • NAMESPACE_GSA com o nome da conta de serviço Google (GSA) associada ao seu espaço de nomes.
    • HOST_PROJECT_ID com o ID do projeto anfitrião.

    Para saber mais sobre como criar contas de serviço, consulte o artigo Criar e gerir contas de serviço.

  2. Conceda autorizações elevadas à conta de serviço do IAM no seu projeto gerido.

    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 seu projeto gerido.

  3. Crie uma associação de política IAM entre a conta de serviço IAM e a conta de serviço do Kubernetes do Config Connector. Associe as contas de serviço executando o seguinte comando gcloud:

    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"
    

    Substitua NAMESPACE pelo seu espaço de nomes.

  4. Conceda autorizações à conta de serviço do IAM para publicar métricas do Prometheus no Google Cloud Observability no seu projeto de anfitrião.

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

Criar um ConfigConnectorContext

Para criar Google Cloud recursos, tem de configurar o Config Connector para monitorizar o seu espaço de nomes adicionando um objeto ConfigConnectorContext no espaço de nomes que quer usar.

Para criar um ConfigConnectorContext, conclua os seguintes passos:

  1. Copie o seguinte manifesto YAML para um ficheiro com o nome configconnectorcontext.yaml:

    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnectorContext
    metadata:
      # you can only have 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
    

    Substitua o seguinte:

    • NAMESPACE com o nome do seu espaço de nomes.
    • NAMESPACE_GSA com o nome da conta de serviço Google associada ao seu espaço de nomes.
    • HOST_PROJECT_ID com o ID do projeto anfitrião.
  2. Aplique o ficheiro ao cluster com kubectl:

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

    kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE  -n cnrm-system
    

    Substitua NAMESPACE pelo nome do seu espaço de nomes.

  4. Verifique se o pod do controlador do Config Connector está em execução para o seu espaço de nomes com kubectl executando o seguinte comando:

    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
    

    Substitua NAMESPACE pelo nome do seu espaço de nomes.

    Se o controlador do Config Connector estiver em execução, o resultado é semelhante ao seguinte:

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

Configure o Config Connector para deixar de gerir recursos no seu espaço de nomes

Para configurar o Config Connector de modo a deixar de gerir o seu espaço de nomes, remova todos os recursos do Config Connector no seu espaço de nomes e elimine o ConfigConnectorContext no seu espaço de nomes.

Remova os recursos do Config Connector no seu espaço de nomes

Para finalizar a remoção do serviço ConfigConnectorContext, remova todos os recursos do Config Connector do seu espaço de nomes.

  1. Para descobrir todos os recursos do Config Connector no seu espaço de nomes, para cada definição de recursos personalizados do Config Connector, liste todos os recursos.

    kubectl get gcp -n NAMESPACE
    

    Substitua NAMESPACE pelo nome do seu espaço de nomes.

  2. Para remover todos os recursos do Config Connector, para cada recurso no resultado do passo anterior, emita um comando de eliminação.

    kubectl delete -n NAMESPACE KIND NAME
    

    Substitua o seguinte:

    • NAMESPACE: o nome do seu espaço de nomes
    • KIND: o tipo de recurso descoberto no passo anterior
    • NAME: o nome do recurso descoberto no passo anterior

Remova o ConfigConnectorContext

Para configurar o Config Connector de forma a deixar de gerir os recursos do Config Connector no seu espaço de nomes, elimine ConfigConnectorContext no seu espaço de nomes.

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

Substitua NAMESPACE pelo nome do seu espaço de nomes.

A eliminação do ConfigConnectorContext não é finalizada até que todos os recursos do Config Connector sejam removidos do seu espaço de nomes.

Desinstalar o Config Connector

Não use os passos seguintes para desinstalar um cluster do Config Controller.

Use kubectl delete para remover os CRDs do Config Connector juntamente com os componentes do controlador:

kubectl delete ConfigConnectorContext --all -A –wait=false

kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
    --wait=true

Para desinstalar o operador do Config Connector, execute o seguinte comando:

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

O que se segue?