Como instalar em outras distribuições do Kubernetes


Nesta página, mostramos como instalar o Config Connector em uma distribuição do Kubernetes diferente do Google Kubernetes Engine (GKE) no Google Cloud, por exemplo, GKE na AWS.

Antes de começar

Antes de começar, veja se você realizou as seguintes tarefas:

Como instalar o Config Connector

Para instalar o Config Connector em outro ambiente do Kubernetes, depois de criar ou identificar um cluster do Kubernetes, crie uma conta de serviço do gerenciamento de identidade e acesso (IAM) e instale os componentes do Config Connector no cluster.

Como criar uma ClusterRoleBinding

O Config Connector precisa de permissão para criar Papéis do Kubernetes antes de poder criar recursos.

Verifique se é possível criar Papéis executando o comando a seguir:

kubectl auth can-i create roles

Se a saída for yes, vá até a seção Como criar uma identidade.

Se a saída for no, crie um ClusterRoleBinding no cluster, que permite criar papéis:

kubectl create clusterrolebinding cluster-admin-binding \
    --clusterrole cluster-admin \
    --user ACCOUNT_EMAIL

Substitua ACCOUNT_EMAIL pelo e-mail que você usa para fazer login na conta do Cloud Billing.

A saída precisa conter a frase cluster-admin-binding created. Se essa frase não aparecer, entre em contato com a conta do Cloud Billing ou com o administrador do cluster do GKE sobre permissões.

Como criar uma identidade

O Config Connector precisa de uma identidade do Cloud Identity para se comunicar com outros recursos. Para configurar a identidade, crie uma conta de serviço do IAM e uma chave da conta de serviço. Em seguida, importe as credenciais da chave como um Secret em cada cluster que executa o Config Connector.

No próximo conjunto de instruções, você importará uma chave de credenciais da conta de serviço do Google Cloud para o cluster do Kubernetes. Geralmente, a importação de credenciais de conta de serviço diretamente para um cluster é considerada não segura, especialmente se você executar cargas de trabalho personalizadas ou de terceiros no mesmo cluster. Essa abordagem pode aproveitar as brechas de encaminhamento de nó para cluster e personificar a conta de serviço do Google Cloud por meio desse secret. Se você estiver usando um cluster do GKE, recomendamos o uso da Identidade da carga de trabalho.

Como criar uma conta de serviço

Para criar uma conta de serviço, conclua estas etapas:

  1. Criar 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 a CLI gcloud para criar a conta de serviço executando o seguinte comando:

     gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    

    Substitua SERVICE_ACCOUNT_NAME pelo nome da sua 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/owner"
    

    Substitua:

    • PROJECT_ID pelo ID do projeto do Google Cloud.
    • SERVICE_ACCOUNT_NAME pelo nome da conta de serviço.
  3. Crie uma Chave de conta de serviço e exporte as credenciais para um arquivo chamado key.json.

    gcloud iam service-accounts keys create --iam-account \
        SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com key.json
    

    Substitua:

    • SERVICE_ACCOUNT_NAME pelo nome da conta de serviço;
    • PROJECT_ID pelo ID do projeto do Google Cloud.

Como aplicar as credenciais ao cluster

Para aplicar as credenciais ao cluster em que você quer executar o Config Connector, conclua estas etapas:

  1. Crie o namespace cnrm-system

    kubectl create namespace cnrm-system
    
  2. Importe as credenciais da chave como um Secret.

    kubectl create secret generic SECRET_NAME \
        --from-file key.json \
        --namespace cnrm-system
    

    Substitua SECRET_NAME pelo nome que você quer fornecer ao secret.

  3. Remova as credenciais do sistema.

    rm key.json
    

Como instalar o operador do Config Connector

Conclua estas etapas para instalar o operador do Config Connector:

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

    gsutil 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:

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

Como configurar o Config Connector

Para instalar o Config Connector usando o operador, crie um arquivo de configuração para o ConfigConnector CustomResource e aplique-o usando o comando kubectl apply.

Para configurar o Config Connector usando o operador:

  1. Copie o seguinte YAML para um arquivo chamado configconnector.yaml.

    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnector
    metadata:
      # the name is restricted to ensure that there is only ConfigConnector
      # instance installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    spec:
     mode: cluster
     credentialSecretName: SECRET_NAME
    

    Substitua SECRET_NAME pelo nome do secret que você criou anteriormente.

  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 pelo ID do projeto do Google Cloud.

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 pelo ID da pasta do Google Cloud.

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 organização do Google Cloud.

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.

Como 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, a saída será semelhante a esta:

pod/cnrm-controller-manager-0 condition met

Como fazer upgrade do Config Connector

Para fazer upgrade do Config Connector, faça o download e instale a versão mais recente do operador do Config Connector:

gsutil 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

Como desinstalar o Config Connector

Use kubectl delete para remover as CRDs do Config Connector e os componentes do controlador:

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

A seguir