top of page

Primeiros passos trabalhando com Acorn



Este post é o primeiro passo de uma série onde abordaremos diferentes funcionalidades e aplicações da solução Acorn. Aqui, vamos explicar como é feita a instalação da solução no cluster Kubernetes e como provisionar a primeira aplicação usando a solução.


 

Do ponto de vista de um desenvolvedor, o processo de provisionamento de uma aplicação em ambiente Kubernetes é complexo e trabalhoso: além do conhecimento de diferentes componentes ser necessário, também é relevante o conhecimento de diversas ferramentas e processos para a configuração de pipelines.


Em um processo tradicional trabalhando com Helm, as seguintes etapas precisam ser executadas para que uma aplicação mínima seja provisionada em um ambiente Kubernetes.

  • Construção da imagem de container

  • Publicação da imagem em um container registry

  • Construção de um Helm Chart com todos os templates necessários

  • Atualização do arquivo de Values referenciando as imagens construídas

  • Provisionamento do Helm Chart no ambiente Kubernetes.


Por que Acorn?


Dada a complexidade do provisionamento de aplicações, a Acorn tem trabalhado para simplificar este processo para desenvolvedores, eliminando a necessidade de conhecimento de arquitetura e objetos Kubernetes e unificando o processo de construção das imagens de container e provisionamento da aplicação.


A solução permite o empacotamento de todas as imagens de container, configuração e especificações de provisionamento em uma única Acorn image que pode ser provisionada dentro de qualquer ambiente Kubernetes. Todo esse processo é feito a partir da definição de um único arquivo Acornfile.



Como instalar a solução Acorn?


Requisitos

  • Kubernetes 1.23 ou mais recente.

  • Privilégio de administrador para a instalação do Acorn

  • Ingress Controller configurado no cluster

  • Comunicação kubectl com o cluster a partir da estação de trabalho utilizada


Para a instalação basta executar (Mac OS)

brew install acorn-io/cli/acorn

ou (Mac OS e Linux)

curl https://get.acorn.io |sh

ou Windows

scoop install acorn

Após essa etapa basta executar o seguinte comando para que o Acorn APIServer e o Controller sejam configurados dentro do cluster Kubernetes.

acorn install

Com isso, será executado automaticamente todo o processo de validação e instalação dos componentes necessários.


✔ Running Pre-install Checks

✔ Installing ClusterRoles

✔ Installing APIServer and Controller

✔ Waiting for controller deployment to be available

✔ Waiting for API server deployment to be available

✔ Waiting for registry server deployment to be available

✔ Running Post-install Checks

✔ Installation done


Provisionamento de Aplicação


Para fins de demonstração, vamos utilizar a seguinte aplicação em python:


Crie um arquivo app.py com o seguinte conteúdo:

from flask import Flask, render_template_string

# HTML Jinja2 Template which will be shown in the browser
page_template = '''
        <div style="margin: auto; text-align: center;">
        <h1>O3S - Acorn!</h1>
        </div>
        '''

# Defining the Flask Web App
app = Flask(__name__)

# Define the root path to display Hello World!
@app.route('/')
def root():
    return render_template_string(page_template)

Em seguida, crie um arquivo requirements.txt apenas com a informação abaixo:

flask

Para a Definição da imagem de container vamos criar o seguinte arquivo Dockerfile

FROM python:3-alpine
WORKDIR /app
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
ADD requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["flask", "run"]

Diferentemente do processo trabalhando com Helm, a partir desse ponto a Acorn requer apenas a definição de um arquivo Acornfile.


Acornfile


O Acornfile descreve todo o processo de construção dos containers e encapsula todo o processo de provisionamento da aplicação no ambiente Kubernetes. Com isso, toda a etapa de definição de arquivos yaml de Deployment, Service, Ingress, Secret e etc é eliminado.


Para o provisionamento da aplicação criada anteriormente, vamos definir o seguinte arquivo Acornfile dentro do mesmo diretório.

containers: {
  app: {
    build: "."
    ports: publish: "5000/http"
  }
}

Pronto, para provisionarmos essa aplicação dentro do ambiente Kubernetes necessitamos agora apenas executar o seguinte comando:


acorn run .

Com isso, a imagem de container e os objetos necessários serão construídos e compilados dentro de uma única imagem Acorn que será provisionada dentro do cluster Kubernetes conectado. A aplicação ficará imediatamente disponível a partir da entrada de ingress que será configurada automaticamente.



Neste exemplo, os seguintes componentes foram provisionados dentro do cluster:

  • Namespace

  • Deployment

  • Service

  • Ingress

  • ServiceAccount


A criação desses mesmos componentes manualmente ou via Helm Chart requer a definição de centenas de linhas de arquivos yaml, além da definição de arquivos de Values e todo o controle de atualização da aplicação via pipeline. Além disso, todo o processo de construção de imagem de container está fora do escopo do Helm Chart e precisa ser feito em um processo separado.


A Acorn simplifica todo esse processo a um único arquivo Acornfile que, no nosso exemplo, necessitou de apenas de 6 linhas de informações para a construção da imagem e definição dos componentes necessários. Essa redução de complexidade permite que o provisionamento no cluster seja feita com pouco ou nenhum conhecimento de arquitetura Kubernetes, necessitando apenas da declaração dos parâmetros do Acornfile.


Nos próximos posts iremos explorar diversas outras funcionalidades da solução, como a definição de múltiplas imagens, configuração de secrets, volumes persistentes, integração com registry e etc.


Para mais informações entre em contato via site O3S.



21 visualizações

Posts Relacionados

Ver tudo
bottom of page