Skip to content

Akoflow Client - Auto Installer de Cluster no Google Cloud #5

@ovvesley

Description

@ovvesley

O Akoflow Client deve ser expandido para incluir uma funcionalidade adicional no namespace akoflow install on gke. Essa funcionalidade permitirá:

  1. Verificação de Credenciais: Validar as credenciais fornecidas do Google Cloud Platform (GCP), garantindo que possuem os acessos necessários para operar recursos do Google Kubernetes Engine (GKE).
  2. Criação e Gerenciamento de Clusters: Verificar se o cluster especificado já existe. Caso contrário, criar um novo cluster no GKE.
  3. Deploy do Akoflow Engine: Após a criação do cluster, realizar automaticamente a instalação do Akoflow Engine e retornar o IP público da aplicação para o cliente.

Requisitos

  1. Namespace Dedicado:

    • Todos os comandos e parâmetros dessa funcionalidade devem ser agrupados no namespace akoflow install on gke.
    • No futuro, esse namespace será estendido para suportar outros provedores de nuvem (AWS, Azure, etc.).
  2. Verificação de Credenciais:

    • Validar as credenciais do GCP.
    • Garantir que as permissões necessárias estão presentes para criar e gerenciar clusters no GKE.
  3. Verificação e Criação de Cluster:

    • Conferir se o cluster já existe.
    • Caso não exista, criar um novo cluster com as configurações fornecidas.
  4. Deploy e Instalação do Akoflow Engine:

    • Realizar o deploy do Akoflow Engine no cluster recém-criado.
    • Monitorar o processo até a conclusão e retornar o IP público do serviço.
  5. Design Escalável:

    • A solução deve ser modular e extensível, pronta para suportar novos provedores de nuvem no futuro.

Entregáveis

  • Implementação de uma nova funcionalidade no Akoflow Client dentro do namespace akoflow install on gke.
  • Validação e retorno detalhado de todas as etapas, incluindo logs do processo de instalação.
  • Preparação do código para suportar múltiplos provedores de nuvem com mínimo esforço de adaptação.

O Akoflow Client deverá permitir o fornecimento das credenciais do Google Cloud através de um arquivo JSON, utilizando o seguinte formato de comando:

akoflow install on gke --credentials=file.json

Esse arquivo JSON corresponderá a uma Service Account com todos os acessos necessários para criação e gerenciamento de clusters no GKE.

Detalhes Técnicos

  1. Formato do Comando:

    • O parâmetro --credentials será utilizado para especificar o caminho do arquivo JSON contendo as credenciais da Service Account.
    • Exemplo: akoflow install on gke --credentials=/path/to/service-account.json
  2. Validação de Credenciais:

    • O Akoflow Client deverá validar se o arquivo JSON fornecido contém uma Service Account válida.
    • Verificar se as permissões necessárias estão presentes para criar clusters no GKE.
  3. Gerenciamento de Acessos (Futuro):

    • Futuramente, o Akoflow Client poderá incluir uma funcionalidade para gerenciar e verificar todos os acessos necessários diretamente, alertando o usuário sobre permissões ausentes ou incorretas.

Além de fornecer as credenciais, o Akoflow Client deverá permitir a definição de detalhes específicos sobre o cluster e os nodes que serão criados. Os parâmetros necessários e as opções padrão para a criação do cluster serão descritos abaixo.

Parâmetros para Configuração do Cluster

  1. Nome do Cluster

    • Parâmetro: --cluster-name
    • Descrição: Define o nome do cluster que será criado.
    • Exemplo: --cluster-name=akoflow-cluster
  2. Número de Máquinas

    • Parâmetro: --num-nodes
    • Descrição: Define a quantidade de máquinas (nodes) que o cluster terá.
    • Exemplo: --num-nodes=3
  3. Tipo de Máquina

  4. Zona do Cluster

    • Parâmetro: --zone
    • Descrição: Especifica a zona onde o cluster será criado.
    • Exemplo: --zone=us-central1-a

Comando Exemplo

akoflow install on gke --credentials=file.json --cluster-name=akoflow-cluster --num-nodes=3 --machine-type=e2-medium --zone=us-central1-a

Comportamento Padrão

  • Node Pool Padrão:
    • O Akoflow Client sempre criará um Node Pool inicial com os parâmetros definidos pelo usuário.
    • O cluster será configurado com os nodes especificados no comando.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions