Instalar noutras distribuições do Kubernetes


Esta página mostra como instalar o Config Connector numa distribuição do Kubernetes que não seja o Google Kubernetes Engine (GKE) no Google Cloud, por exemplo, oGKE na AWS.

Antes de começar

Antes de começar, certifique-se de que realizou as seguintes tarefas:

Instalar o Config Connector

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

Criar um ClusterRoleBinding

O Config Connector precisa de autorização para criar funções do Kubernetes antes de poder criar recursos.

Confirme que pode criar funções executando o seguinte comando:

kubectl auth can-i create roles

Se o resultado for yes, avance para a secção Criar uma identidade.

Se o resultado for no, crie um ClusterRoleBinding no cluster, o que lhe permite criar funções:

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

Substitua ACCOUNT_EMAIL pelo email que usa para iniciar sessão na sua conta de faturação do Google Cloud.

O resultado deve conter a expressão cluster-admin-binding created. Se essa frase não aparecer, contacte o administrador da conta de faturação do Google Cloud ou do cluster do GKE acerca das autorizações.

Criar uma identidade

O Config Connector precisa de um Cloud ID para comunicar com outros recursos. Para configurar a identidade, crie uma conta de serviço do IAM e uma chave da conta de serviço. Depois disso, importa as credenciais da chave como um segredo em cada cluster que execute o Config Connector.

No conjunto de instruções seguinte, vai importar uma chave de Google Cloud credenciais da conta de serviço para o cluster do Kubernetes. A importação de credenciais de contas de serviço diretamente para um cluster é geralmente considerada insegura, especialmente se executar cargas de trabalho personalizadas ou de terceiros no mesmo cluster. Esta abordagem pode tirar partido de potenciais lacunas de escalada do nó para o cluster e roubar a identidade da Google Cloud conta de serviço através deste segredo. Se estiver a usar um cluster do GKE, recomendamos que use a Federação do Workload Identity para o GKE.

Criar uma conta de serviço

Para criar uma conta de serviço, conclua os passos seguintes:

  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 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 o artigo Criar e gerir contas de serviço.

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

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

    Substitua o seguinte:

    • PROJECT_ID com o seu Google Cloud ID do projeto.
    • SERVICE_ACCOUNT_NAME com o nome da sua conta de serviço.
  3. Crie uma chave de conta de serviço e exporte as respetivas credenciais para um ficheiro com o nome key.json:

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

    Substitua o seguinte:

    • SERVICE_ACCOUNT_NAME com o nome da sua conta de serviço.
    • PROJECT_ID com o seu Google Cloud ID do projeto.

Aplicar as credenciais ao cluster

Para aplicar as credenciais ao cluster onde quer executar o Config Connector, conclua os seguintes passos:

  1. Crie o espaço de nomes cnrm-system:

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

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

    Substitua SECRET_NAME pelo nome que quer dar ao seu segredo.

  3. Remova as credenciais do seu sistema:

    rm key.json
    

Instalar o operador do Config Connector

Conclua os passos seguintes para instalar o operador do Config Connector:

  1. Transfira o ficheiro tar do operador do Config Connector mais recente:

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

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

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

Configurar o Config Connector

Para configurar o Config Connector através do operador, cria um ficheiro de configuração para o ConfigConnector CustomResource e, em seguida, aplica-o através do comando kubectl apply.

Para configurar o Config Connector através do operador:

  1. Copie o seguinte 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
      # instance installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    spec:
      mode: cluster
      credentialSecretName: SECRET_NAME
      stateIntoSpec: Absent
    

    Substitua SECRET_NAME pelo nome do segredo que criou anteriormente.

  2. Aplique a configuração ao cluster com kubectl apply:

    kubectl apply -f configconnector.yaml
    

Especificar onde criar os recursos

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

Antes de criar recursos com o Config Connector, tem de configurar onde criar os seus recursos. Para determinar onde criar o recurso, o Config Connector usa uma anotação na configuração do recurso ou num espaço de nomes existente. Para mais informações, consulte o artigo Organizar recursos.

Se não tiver um espaço de nomes para este fim, crie um com kubectl.
kubectl create namespace NAMESPACE

Substitua NAMESPACE pelo nome do seu espaço de nomes. Por exemplo config-connector.

Selecione um separador para escolher onde quer que o Config Connector crie recursos.

Projeto

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

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

Substitua o seguinte:

  • NAMESPACE com o nome do seu espaço de nomes.
  • PROJECT_ID com o seu Google Cloud ID do projeto.

Pasta

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

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

Substitua o seguinte:

  • NAMESPACE com o nome do seu espaço de nomes.
  • FOLDER_ID com o ID da pasta Google Cloud .

Organização

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

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

Substitua o seguinte:

  • NAMESPACE com o nome do seu espaço de nomes.
  • ORGANIZATION_ID com o ID da sua Google Cloud organização.

Quando anota o seu espaço de nomes, o Config Connector cria recursos no projeto, na pasta ou na organização correspondente. Para saber mais sobre como o Config Connector usa os espaços de nomes do Kubernetes, consulte os artigos Espaços de nomes do Kubernetes e Google Cloud projetos.

Validar a instalação

O Config Connector executa todos os respetivos componentes num espaço de nomes denominado cnrm-system. Pode verificar se os pods estão prontos executando o seguinte comando:

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

Se o Config Connector estiver instalado corretamente, o resultado é semelhante ao seguinte:

pod/cnrm-controller-manager-0 condition met

Atualizar o Config Connector

Para atualizar o Config Connector, transfira e instale a versão mais recente do operador do Config Connector:

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

Desinstalar o Config Connector

Use kubectl delete para remover os CRDs do Config Connector juntamente com 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

O que se segue?