From 97d7348c94fa7a7a17d9d522250cf2500807911b Mon Sep 17 00:00:00 2001 From: "Kauan T. Eiras" <43351064+kauaneiras@users.noreply.github.com> Date: Sun, 24 Nov 2024 22:36:48 -0300 Subject: [PATCH 01/11] (#6) update: pre-requisitos --- docs/1-Setup/1-Pre_requisitos.md | 426 +++++++++++++++++++++++++++++-- 1 file changed, 407 insertions(+), 19 deletions(-) diff --git a/docs/1-Setup/1-Pre_requisitos.md b/docs/1-Setup/1-Pre_requisitos.md index 33df196..b07c236 100644 --- a/docs/1-Setup/1-Pre_requisitos.md +++ b/docs/1-Setup/1-Pre_requisitos.md @@ -1,37 +1,425 @@ # Pré-requisitos -## Instalar golang +Para colaborar com o projeto [External Secrets Operator (ESO)](https://external-secrets.io/latest/), é necessário instalar algumas ferramentas no computador. Neste guia, será explicado o que é cada ferramenta, por que é necessária, a versão recomendada e como instalá-la no sistema operacional correspondente. -- Instalar golang seguindo os passos em [link instalação golang](https://go.dev/doc/install). +## Sistemas Operacionais Suportados -## Instalar helm +Para colaborar com o projeto **External Secrets Operator (ESO)**, é recomendado utilizar sistemas operacionais baseados em Unix, como **Linux** e **macOS**. O ambiente de desenvolvimento do ESO é principalmente voltado para esses sistemas, e muitas das ferramentas e scripts utilizados no desenvolvimento são projetados para funcionar neles. -```bash -curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 +### É possível desenvolver no Windows? -chmod 700 get_helm.sh +É possível utilizar o Windows para o desenvolvimento, mas há considerações importantes a serem feitas. Como o ambiente de desenvolvimento do ESO não é otimizado para o Windows, podem surgir pro blemas de incompatibilidade com ferramentas como **Make**, **Tilt** e scripts shell. Os scripts de automação e comandos presentes no projeto são escritos para ambientes Unix, utilizando bash scripting, o que pode não ser compatível com o Windows sem adaptações. Este tutorial não cobrirá a instalação e configuração de ferramentas no Windows devido à complexidade e falta de testes. -./get_helm.sh -``` +--- -- Outras opções de download checar [link](https://helm.sh/docs/intro/install/). +## Instalar Go (Golang) + +
+ Sobre o Golang +

O que é Go?

+

Go, também conhecido como Golang, é uma linguagem de programação criada pelo Google. É conhecida por ser eficiente, fácil de aprender e excelente para desenvolver aplicativos rápidos e escaláveis.

+

Por que é necessário Go?

+

No projeto External Secrets Operator, Go é utilizado para desenvolver partes fundamentais do código. É necessário para compilar, executar e contribuir com o código-fonte do projeto.

+
+ +
+ Instalação do Golang +

Versão Necessária

+

Versão mínima: Go 1.20 ou superior.

+

Versão recomendada: Go 1.23.3

+
Durante o desenvolvimento deste guia, a versão mais recente do Go é a 1.23.3, a qual funcionou perfeitamente com o projeto External Secrets Operator. Versões anteriores apresentaram falhas nos testes da aplicação. Antes de testar o projeto, verifique sua versão do Go.
+ +

Como Instalar Go

+ +
+ Instalação no Linux +

1. Baixar o arquivo de instalação do Go:

+

Acesse o site oficial ou use o comando abaixo:

+
wget https://golang.org/dl/go1.23.3.linux-amd64.tar.gz
+

2. Remover instalações anteriores do Go:

+
sudo rm -rf /usr/local/go
+

3. Extrair o novo arquivo do Go para `/usr/local`:

+
sudo tar -C /usr/local -xzf go1.23.3.linux-amd64.tar.gz
+

4. Atualizar o PATH adicionando `/usr/local/go/bin`:

+

Edite o arquivo `~/.profile` ou `/etc/profile` e adicione:

+
export PATH=$PATH:/usr/local/go/bin
+

Ou execute diretamente no terminal para a sessão atual:

+
export PATH=$PATH:/usr/local/go/bin
+

5. Aplicar as alterações do PATH imediatamente:

+
source ~/.profile
+

6. Verificar a instalação do Go e se está na versão suportada:

+
go version
+
Nota: Para Debian/Ubuntu, é possível instalar o Go utilizando o Snap: +
sudo snap install --classic go
+
+ +
+ Instalação no macOS +

1. Baixar o arquivo de instalação do Go:

+ Apple macOS (ARM64), macOS 11 ou superior + Apple macOS (Intel), macOS 10.15 ou superior +

2. Executar o arquivo baixado e seguir as instruções de instalação.

+

O pacote instala a distribuição do Go em `/usr/local/go`. O instalador deve adicionar o diretório `/usr/local/go/bin` à variável de ambiente `PATH`. Pode ser necessário reiniciar qualquer sessão aberta do Terminal para que a alteração entre em vigor.

+

3. Verificar a instalação do Go e se está na versão suportada:

+
go version
+
+ +

Quaisquer dúvidas ou problemas com a instalação do Go, consulte a documentação oficial.

+ +
+ +## Instalar Helm + +
+ Sobre o Helm +

O que é o Helm?

+

O Helm é um gerenciador de pacotes para Kubernetes, a plataforma que automatiza a implantação, escalonamento e gerenciamento de aplicativos em contêineres.

+ +

Por que é necessário o Helm?

+

No projeto External Secrets Operator, o Helm é utilizado para simplificar a instalação e gerenciamento de aplicações dentro do Kubernetes, automatizando processos complexos de configuração e implantação.

+
+ +
+ Instalação do Helm +

Versão Necessária

+

Versão recomendada: Helm 3 (versão mais recente do Helm 3).

+

Como Instalar o Helm

+ +
+ Instalação no Linux +

1. Baixar o script de instalação:

+
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
+

2. Tornar o script executável:

+
chmod 700 get_helm.sh
+

3. Executar o script de instalação:

+
./get_helm.sh
+

4. Verificar a instalação do Helm:

+
helm version
+
+ +
+ Instalação no macOS +

1. Usando o Homebrew:

+
brew install helm
+

2. Verificar a instalação do Helm:

+
helm version
+
+ +

Para outras opções de instalação e mais detalhes, consulte o guia oficial de instalação do Helm.

+
+ +--- ## Instalar yq -- Instalar binario do yq pelo [link](https://github.com/mikefarah/yq/releases/tag/v4.44.3) e descompactar. +
+ Sobre o yq +

O que é o yq?

+

O yq é uma ferramenta de linha de comando para ler, manipular e escrever arquivos YAML, amplamente utilizados para configurações.

+ +

Por que é necessário o yq?

+

No projeto External Secrets Operator, o yq é utilizado para automatizar a edição de arquivos de configuração YAML, facilitando ajustes e implementações.

+
+ +
+ Instalação do yq +

Versão Necessária

+

Versão recomendada: yq v4.44.3 ou superior.

+ +

Como Instalar o yq

+ +
+ Instalação no Linux +

1. Baixar o binário do yq:

+
wget https://github.com/mikefarah/yq/releases/download/v4.44.3/yq_linux_amd64.tar.gz
+

2. Extrair o arquivo baixado:

+
tar xvf yq_linux_amd64.tar.gz
+

3. Mover o binário para /usr/local/bin e tornar executável:

+
sudo mv yq_linux_amd64 /usr/local/bin/yq
+
sudo chmod +x /usr/local/bin/yq
+

4. Verificar a instalação do yq:

+
yq --version
+
+ Alternativa: Caso encontre problemas, instale via Snap: +
sudo snap install yq
+
+
+ +
+ Instalação no macOS +

1. Usando o Homebrew:

+
brew install yq
+

2. Verificar a instalação do yq:

+
yq --version
+
+ +

Para outras opções de instalação e mais detalhes, consulte o repositório oficial do yq.

+
+ +--- + +## Instalar jq + +
+ Sobre o jq +

O que é o jq?

+

O jq é uma ferramenta de linha de comando para processar e manipular dados em formato JSON.

+ +

Por que é necessário o jq?

+

No projeto External Secrets Operator, o jq é essencial para trabalhar com dados JSON, permitindo filtrar e transformar informações de forma eficiente.

+
+ +
+ Instalação do jq +

Versão Necessária

+

Versão recomendada: jq 1.6 ou superior.

+ +

Como Instalar o jq

+ +
+ Instalação no Linux +

1. Para Debian/Ubuntu:

+
sudo apt-get install jq
+

2. Para Fedora:

+
sudo dnf install jq
+

3. Verificar a instalação do jq:

+
jq --version
+
+ +
+ Instalação no macOS +

1. Usando o Homebrew:

+
brew install jq
+

2. Verificar a instalação do jq:

+
jq --version
+
+ +

Para outras opções de instalação e mais detalhes, consulte o site oficial do jq.

+
+ + +--- + +## Instalar Docker + +
+ Sobre o Docker +

O que é o Docker?

+

O Docker é uma plataforma que permite criar, implantar e executar aplicativos em contêineres. Os contêineres permitem empacotar uma aplicação com todas as suas dependências em uma unidade padrão para desenvolvimento e implantação.

+ +

Por que é necessário o Docker?

+

No projeto External Secrets Operator, o Docker é usado para criar imagens de contêineres e executar serviços em ambientes isolados. É essencial para o desenvolvimento, teste e implantação da aplicação dentro de um ambiente Kubernetes.

+
+ +
+ Instalação do Docker +

Como Instalar o Docker

+ +
+ Instalação no Linux +

1. Atualizar os pacotes existentes:

+
sudo apt-get update
+

2. Instalar pacotes necessários:

+ sudo apt-get install \ + ca-certificates \ + curl \ + gnupg \ + lsb-release +

3. Adicionar a chave GPG oficial do Docker:

+
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
+

4. Adicionar o repositório do Docker:

+
echo \
+"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
+https://download.docker.com/linux/ubuntu \
+$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
+
+

5. Instalar o Docker Engine:

+
sudo apt-get update
+sudo apt-get install docker-ce docker-ce-cli containerd.io
+

6. Verificar a instalação do Docker:

+
sudo docker run hello-world
+
+ +
+ Instalação no macOS +

1. Baixar o Docker Desktop para macOS:

+

Acesse o site oficial e baixe o Docker Desktop:

+ +

2. Instalar o Docker Desktop:

+
    +
  1. Abra o arquivo Docker.dmg.
  2. +
  3. Arraste o ícone do Docker para a pasta Applications.
  4. +
  5. Inicie o Docker Desktop a partir da pasta Applications.
  6. +
+

3. Verificar a instalação do Docker:

+
docker --version
+
+ +

Para outras opções de instalação e mais detalhes, consulte a documentação oficial do Docker.

+
+ +
+ Configuração necessária no Docker +

Configurar Docker para Uso sem Root

+

Por padrão, o Docker requer privilégios de superusuário (root) para executar. Para facilitar o uso, é recomendado adicionar o usuário atual ao grupo docker para executar comandos sem sudo.

+ +
+ Passos para configurar o Docker sem root no Linux +

1. Criar o grupo docker (se não existir):

+
sudo groupadd docker
+

2. Adicionar o usuário atual ao grupo docker:

+
sudo usermod -aG docker $USER
+

3. Aplicar as alterações de grupo sem fazer logout:

+
newgrp docker
+

4. Verificar se é possível executar o Docker sem sudo:

+
docker run hello-world
+

Se o comando funcionar sem erros, a configuração foi bem-sucedida.

+
+
+ +--- + +## Instalar kubectl + +
+ Sobre o kubectl +

O que é o kubectl?

+

O kubectl é a ferramenta de linha de comando para gerenciar clusters Kubernetes. Permite executar comandos no cluster, gerenciar recursos e depurar aplicações.

+

Por que é necessário o kubectl?

+

No projeto External Secrets Operator, o kubectl é usado para interagir com o cluster Kubernetes local ou remoto, aplicar configurações e verificar o estado dos recursos implantados.

+
+ +
+ Instalação do kubectl +

Versão Necessária

+

Versão compatível com a versão do Kubernetes instalada (geralmente a versão estável mais recente).

+

Como Instalar o kubectl

+
+ Instalação no Linux +

1. Baixar a versão mais recente do kubectl:

+
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
+

2. Tornar o binário executável:

+
chmod +x kubectl
+

3. Mover o binário para o PATH:

+
sudo mv kubectl /usr/local/bin/
+

4. Verificar a instalação do kubectl:

+
kubectl version --client
+
+ +
+ Instalação no macOS +

1. Usando o Homebrew:

+
brew install kubectl
+

2. Verificar a instalação do kubectl:

+
kubectl version --client
+
+ +

Para outras opções de instalação e mais detalhes, consulte a documentação oficial do kubectl.

+
+ +--- + +## Instalar ctlptl e criar um cluster Kind com registro local + +
+ Sobre o ctlptl +

O que é o ctlptl?

+

O ctlptl (Control Plane Tool) é uma ferramenta para gerenciar clusters locais de desenvolvimento Kubernetes. Ele facilita a criação e gerenciamento de clusters como o Kind (Kubernetes in Docker) e a configuração de registros locais de contêiner.

+

Por que é necessário o ctlptl?

+

No projeto External Secrets Operator, o ctlptl é usado para criar e gerenciar um cluster Kubernetes local usando o Kind, além de configurar um registro local de contêiner para armazenar imagens Docker durante o desenvolvimento.

+
+ +
+ Instalação do ctlptl +

Versão Necessária

+

Versão mais recente disponível do ctlptl.

+ +

Como Instalar o ctlptl

+ +
+ Instalação no Linux +

1. Baixar o binário do ctlptl:

+
curl -s https://api.github.com/repos/tilt-dev/ctlptl/releases/latest \
+| grep "browser_download_url.*linux_amd64.tar.gz" \
+| cut -d '"' -f 4 \
+| wget -i -
+

2. Extrair o arquivo baixado:

+
tar xvf ctlptl*_linux_amd64.tar.gz
+

3. Mover o binário para /usr/local/bin:

+
sudo mv ctlptl /usr/local/bin/
+

4. Verificar a instalação do ctlptl:

+
ctlptl version
+
+ +
+ Instalação no macOS +

1. Usando o Homebrew:

+
brew install tilt-dev/tap/ctlptl
+

2. Verificar a instalação do ctlptl:

+
ctlptl version
+
+
+ +

Criar um Cluster Kind com Registro Local

+ +
+ Sobre o Kind +

O Kind (Kubernetes in Docker) é uma ferramenta para executar clusters Kubernetes locais usando contêineres Docker como nós do cluster.

+
+ +
+ Como Criar um Cluster Kind com Registro Local +

1. Criar um registro local de contêiner:

+
docker run -d --restart=always -p "5000:5000" --name kind-registry registry:2
+

2. Criar um cluster Kind usando o ctlptl e conectá-lo ao registro local:

+
ctlptl create cluster kind --registry=kind-registry
+

Isso criará um cluster Kind configurado para usar o registro local em localhost:5000.

+

3. Verificar se o cluster está funcionando:

+
kubectl cluster-info --context kind-kind
+

4. Listar os clusters gerenciados pelo ctlptl:

+
ctlptl get clusters
+
+ +--- -- Problemas podem ocorrer instalando pelo binário, caso ocorram tente instalar pelo homebrew ou snap com os comandos: +## Instalar Tilt -```bash -brew install yq +
+ Sobre o Tilt +

O que é o Tilt?

+

O Tilt é uma ferramenta que agiliza o desenvolvimento em ambientes Kubernetes. Automatiza a construção, implantação e monitoramento do código, permitindo um ciclo de desenvolvimento mais rápido.

+

Por que é necessário o Tilt?

+

No projeto External Secrets Operator, o Tilt é utilizado para desenvolver e testar alterações no código de forma eficiente, refletindo mudanças quase instantaneamente no ambiente Kubernetes local.

+
-ou +
+ Instalação do Tilt +

Versão Necessária

+ -snap install yq -``` +

Como Instalar o Tilt

-Para mais opções de download checar [repositório oficial yq.](https://github.com/mikefarah/yq) +
+ Instalação no Linux +

1. Baixar e executar o script de instalação:

+
curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh | bash
+

2. Verificar a instalação do Tilt:

+
tilt version
+
-## Instalar tilt +
+ Instalação no macOS +

1. Usando o Homebrew:

+
brew install tilt-dev/tap/tilt
+

2. Verificar a instalação do Tilt:

+
tilt version
+
-- Instalar tilt para poder desenvolver e verificar modificações no código seguindo o [link](https://tilt.dev/). \ No newline at end of file +

Para outras opções de instalação e mais detalhes, consulte o guia oficial de instalação do Tilt.

+
\ No newline at end of file From f55f2a1c8240cd5b80d117ede753669f4cfed385 Mon Sep 17 00:00:00 2001 From: "Kauan T. Eiras" <43351064+kauaneiras@users.noreply.github.com> Date: Mon, 25 Nov 2024 00:04:52 -0300 Subject: [PATCH 02/11] (#6): update install ctlptl --- docs/1-Setup/1-Pre_requisitos.md | 57 ++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/docs/1-Setup/1-Pre_requisitos.md b/docs/1-Setup/1-Pre_requisitos.md index b07c236..6b2e0bc 100644 --- a/docs/1-Setup/1-Pre_requisitos.md +++ b/docs/1-Setup/1-Pre_requisitos.md @@ -339,20 +339,49 @@ sudo apt-get install docker-ce docker-ce-cli containerd.io

Como Instalar o ctlptl

-
- Instalação no Linux -

1. Baixar o binário do ctlptl:

-
curl -s https://api.github.com/repos/tilt-dev/ctlptl/releases/latest \
-| grep "browser_download_url.*linux_amd64.tar.gz" \
-| cut -d '"' -f 4 \
-| wget -i -
-

2. Extrair o arquivo baixado:

-
tar xvf ctlptl*_linux_amd64.tar.gz
-

3. Mover o binário para /usr/local/bin:

-
sudo mv ctlptl /usr/local/bin/
-

4. Verificar a instalação do ctlptl:

-
ctlptl version
-
+
+ Instalação no Linux +

1. Instalar o ctlptl via Go:

+

Certifique-se de que o Go está instalado no seu sistema. Se não estiver, siga as instruções no site oficial do Go.

+

+go install github.com/tilt-dev/ctlptl/cmd/ctlptl@latest
+  
+ +

2. Adicionar o diretório $GOPATH/bin ao PATH (se necessário):

+

+export PATH=$PATH:$(go env GOPATH)/bin
+  
+ +

3. Verificar a instalação do ctlptl:

+

+ctlptl version
+  
+
+ +
+ Instalação Manual +

1. Baixar o binário do ctlptl:

+

Substitua vX.Y.Z pela versão desejada. Consulte a página de releases para verificar a versão mais recente.

+

+wget https://github.com/tilt-dev/ctlptl/releases/download/vX.Y.Z/ctlptl.vX.Y.Z.linux.x86_64.tar.gz
+  
+ +

2. Extrair o arquivo baixado:

+

+tar -xzf ctlptl.vX.Y.Z.linux.x86_64.tar.gz
+  
+ +

3. Mover o binário para /usr/local/bin:

+

+sudo mv ctlptl /usr/local/bin/
+sudo chmod +x /usr/local/bin/ctlptl
+  
+ +

4. Verificar a instalação do ctlptl:

+

+ctlptl version
+  
+
Instalação no macOS From 45dd269a57504546d20b6ca6f8ebb081dcd96a37 Mon Sep 17 00:00:00 2001 From: "Kauan T. Eiras" <43351064+kauaneiras@users.noreply.github.com> Date: Mon, 25 Nov 2024 00:10:04 -0300 Subject: [PATCH 03/11] (#6) update ctlptl install --- docs/1-Setup/1-Pre_requisitos.md | 36 +++++++++++++------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/docs/1-Setup/1-Pre_requisitos.md b/docs/1-Setup/1-Pre_requisitos.md index 6b2e0bc..a9cf7f2 100644 --- a/docs/1-Setup/1-Pre_requisitos.md +++ b/docs/1-Setup/1-Pre_requisitos.md @@ -341,43 +341,35 @@ sudo apt-get install docker-ce docker-ce-cli containerd.io
Instalação no Linux -

1. Instalar o ctlptl via Go:

-

Certifique-se de que o Go está instalado no seu sistema. Se não estiver, siga as instruções no site oficial do Go.

+

1. Instalar o ctlptl:

+

Use o comando abaixo para instalar a versão 0.8.36 do ctlptl diretamente em /usr/local/bin. Substitua 0.8.36 por outra versão, se necessário.


-go install github.com/tilt-dev/ctlptl/cmd/ctlptl@latest
-  
- -

2. Adicionar o diretório $GOPATH/bin ao PATH (se necessário):

-

-export PATH=$PATH:$(go env GOPATH)/bin
+CTLPTL_VERSION="0.8.36"
+curl -fsSL https://github.com/tilt-dev/ctlptl/releases/download/v$CTLPTL_VERSION/ctlptl.$CTLPTL_VERSION.linux.x86_64.tar.gz | sudo tar -xzv -C /usr/local/bin ctlptl
   
-

3. Verificar a instalação do ctlptl:

+

2. Verificar a instalação do ctlptl:


 ctlptl version
   
- Instalação Manual -

1. Baixar o binário do ctlptl:

-

Substitua vX.Y.Z pela versão desejada. Consulte a página de releases para verificar a versão mais recente.

-

-wget https://github.com/tilt-dev/ctlptl/releases/download/vX.Y.Z/ctlptl.vX.Y.Z.linux.x86_64.tar.gz
-  
+ Instalação via Go +

1. Certifique-se de que o Go está instalado:

+

Se o Go não estiver instalado, siga as instruções no site oficial do Go.

-

2. Extrair o arquivo baixado:

+

2. Instale o ctlptl via Go:


-tar -xzf ctlptl.vX.Y.Z.linux.x86_64.tar.gz
+go install github.com/tilt-dev/ctlptl/cmd/ctlptl@latest
   
- -

3. Mover o binário para /usr/local/bin:

+ +

3. Adicione o diretório $GOPATH/bin ao PATH (se necessário):


-sudo mv ctlptl /usr/local/bin/
-sudo chmod +x /usr/local/bin/ctlptl
+export PATH=$PATH:$(go env GOPATH)/bin
   
-

4. Verificar a instalação do ctlptl:

+

4. Verifique a instalação do ctlptl:


 ctlptl version
   
From 85fdcb694649c05775e465a294c94e5cdac38453 Mon Sep 17 00:00:00 2001 From: CarolCoCe Date: Wed, 27 Nov 2024 12:30:38 -0300 Subject: [PATCH 04/11] =?UTF-8?q?Come=C3=A7ando=20o=20gloss=C3=A1rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/pictures/Glossario1.png | Bin 0 -> 51206 bytes docs/5-Glossario/glossario.md | 130 +++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 assets/pictures/Glossario1.png create mode 100644 docs/5-Glossario/glossario.md diff --git a/assets/pictures/Glossario1.png b/assets/pictures/Glossario1.png new file mode 100644 index 0000000000000000000000000000000000000000..dc0a98ed05ba646a7bbcc07f2612b068042d3c26 GIT binary patch literal 51206 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 cjz_r0(Vi z+7G#<`+Bjv=@Ls89el}X)m9~jD}m$1XGp}jKwpef61poXT<->vTNm&;(aJ4hX2yCVHLZ$$i_(pHfq%mx>5hF0&ssr<8y`J)?a|-r<%Ku zM`Ss7khdkzDa15AC6GX8-ei&%RwME&$ZVT$MmR5Q~r*3E9KPBU+DAA0LHkQm-< zw($x`aOvaXU=E$!hsdfW6{Ap)=gP<_TWCEjN`*POhc!()%AV|5`sW^UUX9?E0b*#e z6pZWsI`?UYF-qEaTuj|!d9_=cw$$18oAm1Pctj2RIRx0ed<9Qm^;&k+cjK2eQ zZhWa&WPLPI@8X`xDmOEmtXxRRgxR+n{Ph{tsxe)7U!=s+frfM-&6MOW0|oB>}M9^&0FVgz()V zOs#FXSrva21&`E;C3?uYu-R?IZ>zZN%tLuQR6!|oQQ|IEHk}~>(WKt;~q)L-ZCm)?ta8JtYY$5adneH7w`~8Pe@k8a}Sl+@42H}cZr8dD1*Zw zU=7H%jSR;xiW{Nx3DVTuYJM~kotV-eoI2%O7C_ni$X+TqG@y)a8uji-;46FW04GNZ zKL{Dva3Np5*i!W)sCrtfP7;SArey4ITXeC8!o#c4YJomq#B|+r7d8;19X_}0qzaOO zs*hI3a7TVxy0~Z3CNSZcF`x}MnOEj023m%w;gCsJ8*jt2*kOjD+q13Uc0+Wa6%YP zKBUvEA%cR85p-RTE8l@({SAG6lTcCH!fQtXqEUmD-q`^X=5()r?!KJE-ppr}&7#(>{)dN~ z4rCv{+@MVSK!4?;>rs_)4Qy-H5Z@wg|DIE*tB2gcd(bu97UTl4xeI1)k!q zE|4#GCz-iBhf@@zfAY0B5}&=@(#v@NWN5DLGGV+~TUC_oucW1ZT+Aw!LM(xq&O|Kk z^EoKy=v-DvbP6T=GH;`ig(}PuGt_y)v?*3i%47T!D8W6VjSLhwFw}IjEKG;UN%B~U z#VN4>>7}r>w6&~^5B;69Gf?z7ixb1jsR%;MFKAUmM@-JYFR8ZB5it=_a8Qtwi%%F{UBC+)V$Kfct-q{vCwsMP5`=Mngrf+jRK2%;PdkP-JdniPohYd+aM? zmYn%4_6-m^4d(D866X?cdTs#mEuGUCG*XinH@D&X%dSTiQo{+eJg>=b|L8rGc@1D6 zcp7cmmN8<4I9G)kiOmLMMHwCGY;imA-hdT|raV`A&uI4BXHLsx2C5XJs>O|Sa^34?cj zAt{W?bRxW(UkZEH9ZGUcfZtHxWUc`1?RZL zlB>j%GDIE5WrGGL19Z6Y^sb;-R*S@Zb5>e;*|PwegRT6us3=#^&SmQJi?upB`%;&b zmd}aT*v1Fe%>#kR&pZ)WT6teXzk?Bp3#7qh@UVPbxYS~|s?wkXUQZ+eNZ4HV>RwNo zg_I12sSbyOS$daGif}~2S!-D$82Tj*zs_zl>u9FYDR`yTHl>r*FgH z##rf+FVNSI<}a&&Jjg=utshFbw@}X#9PiTx51`_*B!4nIgN;EIxe* ziDNL_Jsib1yoa-w)%+QHGovC<>coQ{*mqj13q`cI98}c}vV=*+!T-M4CM6%PsqLr>qM?`-@u! zdyvxK%{hHUom!!COw-}gX}M$$9q9|I>QVPP=Y0%T6R9X?s!zC+F#gx4s-eYTn4MJ4 zl(RXq$Ed)sHOl(z}>A&+NG3SH@P?v^fkc zNX%?N3Sz_HGJ)#;88;sL^T;6jOm2eM4B6J%d z!~BSu(0a20S@kmAyKb*@7;Qc8@aRtnL?GjY}4N{ag$5D92q_mc6UH> z=tfa58onrg8-x3q`Wtd)bss7%!gG}r_knoL6eej9{U2 z9%Tdx(-MQS+^Klp=Zym$9`T)!qy zx^I3ySATGc>h5qLd3m%s;h%)d{LW!W>AXSgbWopj5_-33#G0CJArj3OY{O+9Q_0-o zL!a}D5(Wc?Hry2z3uphozh#^ju$-Q5;~NvxeL0)uX7#MYBez3mMG>b%+qQ`LLRRYp z<>hytJz4M$V^7=D9f(4NWBSY>!CN-;NH#R=)HrWUS&6l<1(eeSB;=*OG-oiQ6#@UzO_*HXwdW+M!a$$yq{1nOxg&=Z4o^A!%O8FRNs zr806gzdax0f1Yq)kes|Zb~(|lTpJ7vW7V0p-GzZQL*2EuY@Eeq)9;$|@oBw1XK;Tw z6=1kK>GEv3UU9mf-O**8J+969@;Yp&x82ounpJXA&KAqpED`ys;4xFp1~1q^yNY(Q;TJs)wzettd`c&rxm z+l22*B-G!!b;7MosCeQ0V3{Vbdvr9TSe_tP*hMt6+>)Y^-zVp55t*&8MFZk-~UAF{1H9*pyWaO}!d-xqmINxM-ztrS# z++kdReREy;m+#Z^;U~E7P)}5XM7-okzF%5oS$!z zf?eRHjr-_FHB+JU>}vz*sA^vy(rdqMzdx3glUu`UI1X@Ndf(F{y6U_*0=yc5;GW_6 zsh|V);i-)!XCZ^`{%@{FYBe2HbaC)iu zdzwZKa$oMAYyJe3{o0jlQWcmYbnB@mRb~m=%r1X24}l+m+StP;wo*{bNy{SUQMdQ! zT?Rcu-@sysYY(_^FVXs6?jU?k-d@pZ34w!WXgeEhY~=K4d-O5_)~z@T-E{9TBd2om-I@WYYdYT7Za$F_klxGqQiO zp7A*$d+8wSua58%j0Gu>Y@&|--IJ4C|9TUyhDonm`+Wt(y@xF=UV^X(=-n9T?_OTV z9PM@mBL=r4BpoX?mXWcEk01Zz^9>t8IS1HO)A-HR8P3)`d$6-{oj%=z%#~w%NVt}R zE`~4QHLT;ZJU%{ibuI8*mecf_4H`-iyzymHf8ngYJ8?+D^Kjc|C6UR{v9`InKenr$ zE|}YU(pK-3%ahS7^Cy}E=wEdVp(fY6a|zX4>wgTrgDpI z4%c@`Gen@wk_*o%MkHj~m>6P+4CzwC09C;Q!(&IR*nNoew`G3wjmGuvK&F5XXlpU^ zNA)o9+kqlkNHe7e`}@K|Q2cMhm_kRk9b16B5Uj?JXE92wg+?zC39Wk{m~%dY>v^s_ zy?5A%LtoT!$Rp~y=A+a4!*O}67Gmp8DySIf`d^m8uq0-J6@dh`)AK*{1TwL((CpT` z55lF7kB3+N3VD0IH{gw~Y7!yEZld|th&eh=-R_K8m|M@kxEA6G2|D{h_qDHJ+6GOby? zyYu4&K!(j&`b8;i0er)TI5?kwSY;hrmYd5ng46c$op3*pM90OMSE z7O}!yjzTrdjU#e#rnTE)WUzUodo5V&e0t+AGKG^H6g&+*O7QJZCSJyvmQ!POQPaSl zT{bb4X)?NS;te@iU#x#TJkeCZB1@4(u=+$PBsKqUSd^To#gq#Y5p(qWI zQ?W!fn|_EB#TP2JEKqST%GP}l+EJ32ltBA6?to1(23x%Y=_d#%l3Xvfe8x6UW;f`m zyjFwQ-uzhy_(iZZh`wNB%1Oj@I_dx(%BX1lyEm_7!)2XY_=t$sm0*4xKk>@tJwIh^ z*j+kaUCP!P)OZ}S*=0uPddY_kAKcOqqYB^oPAv)39Vxy$6Jx3fOm#LOZ0f9vWk$~J zBe$?fDDK)Y_`TDo31vz(dV6zf2$Vl@@%bjoK-&S}lnb_fMJXa|!$Zf_>=M9PsmdC+ zsG}S-#a18tV6Q%Kbf`hy5QA!9Ch^`~zl>L1jP1k3rh#I#`5+(JSs9!CspkBYl%is3 zV1Br%+UVb$v%G1yL)rI4G?u$@TN{^R)kK1dc@Nsn2Y}!V>fqEo=ucc+!6@(&#K2@X z|3zB|Rgm{sFcUxHOZHYtQ3*8$P5#8;{`J$<)m7<5?bt`CyRTu|a`72*`)(HJN(mW3 zl<4s%Hqiq24RcyT&bYm9k~@xtaaV10t6DZ**Rbtt#MQfDOwo$*YU3ghj@4!1Fr~1V zR{8}!Iix2Q8QQN|$V`rEw(e~-Bvcj_+cpxeJ#w!F*PHef%YZNEV8k)mTNS* zEe!7g2)e-KXB7%lS7+tW7OxK4j{uVD@?ZoZdYbuCna|X;aUBq`!?NsL(Ys?0e%=Hu z1${2Q^Yl5_A6}Q)zkjbOi6a}*;$`)g^tvxfuGfC0ZgC?&Z!T(z)72zjT_Ptz+2Edm z;p7o%MtJk83;jm(HD?az4xpx~mP{YpX5zf0iMBT6307Gu`DaggnaMCLl$PZ_fyp)E zPAcSVddL`Aix&-2J#IQ>l>i^k%ncIzMWJHreD$|Fyx~o$ z%8P<2aK@B^m}5pP{fs&Xt{Ae$B=BY{l&ab!p@Umd-1a<0)#9qtF=7)VHLi-H@mZKR$ZIgTaV-lAde zO#Pw7T?qDJB@LcGYIE5zs;Tz*X0KkD>DySz*+0Svy#y&N zrqOwgnP;hNGf6-w5N!$$!lEdVQ-!A*tlA1YWv+<%EzCn>EP)xi&z1wBq(xHw{WZ~G zlaecfiaM_+Ml6q==ZK56KaA5E@fWMH3SFJ^i~lC)EX*tKnfQ-r9Isy@;T)-C#TbwC zLtK#vtPmu&#q#-?)n9C4E-SjSDy4oI8+>=hP8N1V*pIUA9kU^V;u zDL(!)oaw;(*c4GhM{ud@nNpzTOG1|u{$j_~Rw;ZVlADTO10^Xb{B9CNML_zqvck{$ z@|)GpyDO=eYtm`iq{fZcT6Pk{p9an}5$EF?UUyLCItjSyq5<~uSPFX_P3tOM)5st_ zPh`cSVL3y-o&W>R;#}jaKI|i^IEJ#HV$(k6cs-qe=|4d1OC7(ZT{imvX_@1;^I_fWk;pdFe#F?aYtc!~!3Bf>uvUUtfRtd()zSW4huDEes7@9fFxotkP3H{%a&r{3Ca65Nhw zZwC(Y7fq|wREOLIJQdLB0=mVOl+I_$78`6jv5Xc||Mn&eB5>G<`S?aG>eebh{l}Px(oZ%a zMOR=`nH~)(6IY<*@gF6WvE!bsmH%FuUp+vwMR=mHqE0?@93{d18(sOQOt-^a8Rj`r zQ?9v03;Rbxnhy8SXdIFiO@@+%U?!XtX}u<&{>Gx>C~h8O`-`3B4N1xH@DUoda<}^< zvXhRE{HiL~-9K5ti7buNZllp|bIH1)*I?Y~(Q#Sw13$k*$Y)a2V9^IJh@IW(U>ptb z2-o#Ety9y}VRgIsEluBKd%VOoKd(_7^3scg1{RbtiUdX6)mM*oIpUExydMAND?hWt zx9l-{9f|dDd2TFYVUy?>lAN1=X1B4(i${!(ZlymHixLyCCZ#a!2_owq=djtB)e)t` z&!tA+A!!KplZ=EUNX|RF@7$TWYiMvO)o$8PGS!`Hw5uuCDv-}`?Zr?7zRKiORFWzx zqfD@mq4UIWaB%c3ht+_0=y?xHmiogo;GT6m2Duz&VbJ!x#Nb%<@KjWM1q%a>pq!kq zVa1N;@N#z7u&Ocz)KxU%cqju=cyP;KZ>JuzJ3HRW?ddR1IK?ANzpv_l{O1=r#Tt(# z5p37*)rH-ZnsMNcE=<6$eY?2&v?uWFI%3f8DHZN=(f8Z<0vf)1KA5*oI|iB^en6e!(B!LZ3DCv=(O;lH;TFyO%5< zKSmTnr`p>9`##ro+warGbprSEIo^Udm>oA;bPb>iU%#;vFszv;mrcGn(0g{9$fbfj zZ0coroDr6lm7y*o{rdF|D&IA;@%!{(96mmNAuPbJ1y_~Pt*drZX()TKA9PXdXUp3n z`L6m$M}K)dJlw;oSv=aq-Xn;7JIyKL)A77i*pR!)OmIDXWmXH(`#L_Q6wwNFe;TOZZrW>#Ex_DW( z;_Ns3M!+7JxZTNkF0=6jvk&0FJ~_Yfe3Zw*-u}-c5-EGi(TtW29VO-W$IFJ0P^7O*j4yFa zP~cb4wCXIq*XGgLgnd9(q-o|aTn=m9x_#d!haI_8P6ZVvzEi=NloWSxew9^K=`^ZK zOK5_8pe{Ba*?`ve)E5qpHZd0(FgAXn<-ddR4e*9WD9~fXa@#M0xVNp`p6?h=j6q9I z)@s?bfmsb(X)f{cadBCnpdK6Tlw*Z%ZzoMhftSL|D+WwmWktni)3J6G67et`Hn?f5 zLR3`LmqlD|xjtTMT4ZD-qZEYnVkxnW7}RYXAHM9|3D?^b9glZHhK+2pA|e;Tb8c!M${juM}w(d)f z7{B(c;6p=^V&mh%a0A_0r&zTzQ*qm~FH5bYQ$Lna!C zI$HmpNweyRu*p^A=Wl~wAsCHf!>t-R(gBEPOdA%F2+I$5cPrJi70`f!-y|>$70QFS zFR_@~xd0z}?SdI0r>#x)T~d5}fJG`i;2&9AA9wnKPJLP-?0-p3L-rlYdkGn|&5v>g zUm2D4RzLZDL5HD;9fSFA&c^M(_2RF{4Xz}o> zQo7fF!9eZ23+>&wbX#2Hv6bih;kCp=9gQ0v1ILLvLfaC2f zbOya}&=<R;ae@LGP{+1>(uFfJYX7rxrp%otLC!2`(M0d-z6 zb>piW?SYA~^+F;+NaSg-q$K!5Dfaw?rvNq*s7xK+0&js|zbNv;u+R|(47pr9CD%p*bwxs8q)*b;Lew8>cTd90vrgk1`RYwKP_B8hYA_#}6r z0EK3=0h(P%{lzfwxxv5|Ma)8E&d_37m@@n6rW zkI|w$vMzlOFXW71rtZ!)S3v8iP^eTk- z%PLWaXZY5rXiBlizUjZF`AnH|`?E$SHv*_ppGON$AZ4R!mbZTO5=6-)`+ECFlX!TT zs8D91uSo)^R<$wi_8dAz>L&Iwhse!YBnovIN^Ii&x3*if!n-U^PdK`3BrL}jTIHWt zJ@?np`;R_LDoRP_dKd{tp;vQ##uow-(6QQMZO1HjeV;BYv8LPp*5=q~QWR6iXyYSS ziPRe^(X`_oBMMJp;6STC_5*}Wxx>9Bg0V`J?y8{!`6}6oC+71620!WpBNK%CE4G=? z(Mf~WRHo=??nnFM(cenXA7t^fwv8y;1k}5K#?@uF4t_g`1%6f`oAX5>)Aonm3DMlm zJ?l7GRIyk?bRSin=XjOr5R|s_X|M-Ern`bZf1aNr9x8UTCY=3495VDl){uZgI^u+D z{cB=%k=PV_5MqZ>Pc|+!$wf3P3XP-ZrMUh%b~+g z{acl7=>g}zJN;5PG~O}<0zMiu!9O%Ih!S_%A#STLly=$Em7^j>hf|DDDRZH8cyHId z(LXk@xW^$>B$QpeIN6^um++C}9eZ(DT(R zY2k13h~{Rf0-h5cO`km;nTP(`?dLqhSyQqfrxuvz5rdQa3EWX)a$}=xb8~XKts52( z+0k?L%)Vi0U5la1<<#6PQ8jOoT;r&s1Gnjmr&t=x9udeT!?J;G+=eGDFzISBGS2bP zcQWcHI!9Wq4JRz7f zD6`X?mnMF;He@-lM-MZgdExI^yZ*T=7D|$j#iEgM4JEfh`HCg&G76DgBgbo~)El0t z&r)FlFTL+wtg7O{;_DSxn~m6DlKwDJp*#OG>Y8$~eQH_4@;))h8CyHP&KU#4+tqpW zQ?aTF?Ls~75!5Y{r%de{y0aY);d{hjfp+wV%LbrvN-t2va)K!;SMfT4^PJ%fCv9sZ zI=i10{*Y#WyZw7gLGv4H2A8A@=dDZng$wNNLeT;Si<62zKf}RsnG))a=d8MN+?FvV zA}+k2*~r!J6F_yH4w_v-ilqIrJep3BT9pooD2oa6%k)&)h-kWd&}ddM)w;r#r-eJN zh#qPXw{Dvo9{7@*Tc_0x(ZFLS_1qGEj2NQhN3uCVXJGj7__+KJBJfV0ph#Qbq`OKM zIEm3M>pS}W_1~P96q(v1sf)}f2Y2ocWbAWMF|xc|GfsgZkfhhJQF6-4=py| z^~@|V(uj%}rT*DHqPG{o4Glk+hwQ34Pa**E!n}t<7!!G(jI1(g&f8~v?Uq^X1{Qmj zRIz*8{sAr>7M+$`)RM*CAW9-#jg}z~h)Zs%Dr>_)BNm|6zTI(*tWPLE%Q=`<3=U6@0Wj6SA>x!m~>V0aEVsz}jiNcLy zVUv>TbZ{yHuohFZ4xXy}owYZJucltDgwdBc+il(6(_FFS;Z)OP&i0Qu42#?A!^_HQ=Z}}^px22!X=FBfXO|S2|+Qx`<3n z;d&#BA8FF@;eH(%OZtYbA!MT4M57LSH<}$cGnF~^fos?@b)ZpkY9NBpvadfk_turK2~bPyP^pHqu|qgbGjfHfLab6;Gc{T3qzX2> zLr{9>=F-&EC!;X{)!%lbLb&gnbIXXe1QkfVP@~+zOiPx=fv>BxRo{ph)p&Jnx_nIW z4w5-N&7r$g7+2sGNUB(tl%-?F%1$2=BrSrg+3zP4X-EsonDBNW+Pd=WJJEwXq{gfZ zpD-g!ksH?)XD`~5nV=fR9{g=$EFrPa(&x5nBq(KZf_|i_hkek;C<5o|Wg%CUNTf9-Pb{E&DO3MCf!VB=OA2rhUt*A#PZ*jMZJ^N(C zP2A2XJk+?3!W?EW@`J`3F4<+VLy%F-9T(`st*qlZTrZulu0+atMP?h1KGbHNf6zuDm^ZB6YtqTV4dvkh`uty9 zT|KRiey(@xSaZPnfR(cS7#z9HB4Me81bZDD{7erIIl?KK^jaFRBu3Ft)u*O5&ZA1L zDe8{nnEB(4Q+1umMX97BFbuCaSWRN!SyiMpzeelj=sc?QSpATgVY6rhMqC^^H=BBI zB{#(%impJn@euo^Y76SV$Jf6G z-T}dY^5JqD4-3Ux=*;IXRvV}S(HgTAvy5H?F{(TG694k#JR~_4VH7tDyPH*b-)Sde zgU^$(0Yr=3Jzdu#t2dIfj~&;9g^d0`(E`oqnOe(~_^UW;cYf$6D!wyMu5Q+Sa8M}B z)+N22tF=qMqe4nyB$hKuo|>WRM!{w>;v~+?jYmX@{yU{!8%Sj#KLj2+_srHOXXu;i*Dvl}PET=`kG#j|g+%`5+Dp zkBX%9#%jm(oo@$BJt4B*ecp3%lBP9tg?Us(S>z!t`_ad{GhR>8_F|90`%W-iW4_-q zISf-xLi1t5SbrSxDO{`6mnH5EPs!oWiZZx+Uf$9Eg_gfvmr)yLBAy57+ z?55er)l~xR1lk>AOPbc!Md)x*pQ2&8%2?_2ZU?vG2XZcsqZoJOXHph>^;Y392|fzA z^5>!@fsS%1r}HN5QGn~mz_$CVW>HZT-{DI1{vDx7Qk3Yd-&MYb;{@z3(axC*yxI)u z9vs5Zu0yULqhnLbSH62c-HT=IsAA*7w=f%icWOgU9l`3+)3JPq$#aJ;9Q{rqL8@Y?X$FCAbE=3xP#5s7h3~}<_#EVm7Mx9-fAQ;D!d-#pIl`BVv+^S!>x$(d85A75O8wKj|r2ZiPLsu$b%; z-Ii3K!FvXwVAT1!jIQjhG-7@(IR!aI)~CnN?8@Bl`~su)>#oemKl4BN$4n0%s`ja` z3jI@s|1hQoZ$C9kkIj^u%@`Q2LAU()Sf$~}JQ?S1(|~r_WDze*kSB{(&Lpl`k!Bg2 zqQgDOY|4xsP^+natuugSs9@dfk-zmI>GtUp7e#^Z0Zx)nz&4>LthnfW(V))kV({+n z)?2&rhxl7|DoKUUdl*pFld(1{Q#HyGJ1B}6@oB|Iq%>-y(OH#7Vc%3u8kklN+T8gL z7o^LU01eF8j^PEs20+X6{d;^Ynr_OFlUn#U}HQr|b93eOQ1#p@08Z0yU~U ziXkM8SJ~s@GnZj*k&KeS@pRGH-}GexmxZL7S$wCd$l5hRPrA`0F@fp4Y$O{LXK3kx3$nnMr~ zh`Amg!=kb&y#+s^24~{zh|k63n`a|JJ-T*`Fhc$bzO$!L8rv z#00wQ(NQ@u1+4A{Btb~{=~H<*fDF1BUz&&DdOTtVs>i*YJz$fYBB1ygCZG--Wii+*6Ui+a; zV0VNC)P;oNAi(Sv_AOqEaJ)LxFIC%K(^)FzOCy4Pv|DmU&$FlwoDry)@WS6WlTwL>ed*)!r{!4Lp&OPwEKm4PG(p!WUjpB&z@2b?@G@bTMfJATd&*m@vvUv6=s zprAm+i5=o<_k_B$O7Bnm@uJX+YSU3snJ!^y(^ORVF-X;wD|qyQ-$owDlTH8(-0V-U zopGb>7wfJ3{qIdjlGiWA^&c1opN(tgmk1(#up(bdN0`^0$t2Ujb};eXF6)UeCoYqL znSnu9zHACL4GrilQ6s;j)vTqY9%Qjz!b#qup~?1>_%K2#Waomn!K= z!qwH+x>3J#G>u0O%p|?Kaz;1$gd$9>M8x4@ zP5;St&VP+5LUKM%2S=UzeYFl=^NGftba(5^{pkSxui}}|)zhC{Z~m-AAxNT+O+DD zlJCJJj4x_x*Y~T>Ugz7g;AaT{76>^e{QAiVY7#+$cuxAIGi&?5&TPr{4#Hp*Cz`DZ zWr%$zObvm@zxM3xt`pA__uo*DUL{f0ZEcT9rs=MGc?sL2Y3FGtOGoxxUq1fuhSnf> zQ6kPwGMTu{P1a2E=?=R&!|pYEjj*W!(vd8o$G^_U>s37sjbMa75GQBn_RAS9d4Weq zA)#Zy@xjEz4FCV0EX9k2^KP64ua=UD>G-&%!)r4fUbRf~a>T}~CO5Z-RaQBF)rxjx zWaI@P0DbZ3n3&U0y$7S4e_2=$uV3QupD`R9V8-*p1JA>l=IqA)0XDw}7|Ypu++3ns z=Jw39dOHf{(thX`G`<_}Qv^U&51RbLu}cTgvVULmz88-q7_jUA^256>$*|qz1zpIb zAyd^-y1&Y97($HSH2G@kQPHCzCpQxb@puNbo}KNHl=iE-3OX>EGb;;vmE-Xf#r@;U zL-SoPoxd!8mmd?L1Id%i;T0TkBR;=INM#W1LyeAxMZz_y+lXIz#L8!d<|ND4zkBrR z4$4H&kcS0!GB1=qIZ4U80eP?6#}f!-rPUR{4flVtM4WU?%_zp&XEK7Qsi}1#kC!_c zkoL;TfB7lpp5O^4CKS1LZW^Irr=BzvzyueTnrg?T_gLT^Y5!o~b|_;f$r!tit5{O~ z^79(FryfnKJp&`tWG)Aju?zvo@1I0KXO5*}A7A_AEtuKZ_#KP}tpFY22z;K2NhQeh zy`GNe<(94udN$54!6hyh*;zL9S0D+lAs9pH%$kfO^P3Fs_J*!LUUy_bo^E&2z3wt% zfVl#re%DrlUV2oNe#0W0Ebz2#+uoTug(o78`b>##VP>XY|7{+e`gjJtm5GVyl$6Km z3a{G;9_x{zA@M9I*ne`rSY?U)iit!Xn6XlCcD&slS#&;} zdje2SUvIB$5;K{AfB-)~!Kz5cq6-9wswE`{`oeLM2>F-B0V7lcyl8%>{lD<^iD1Oa zr<4ylub^O=^^?W!uhmqQWw=jTDJwAlAGt;`#Cm(tJCz<)OpT3QgpF-}zCBV_TDnlF zKe^I&51PQ*wPx!MV@{u`WR*Ts<&pw?gT+&T2~fsHxptNe#vL3SOokJ|Gx6znH3Bko zRTWcl2m-9F93G5WVF}L{MP|1p&i^{Df+r`Rx$&-sOJy4R!+D?~RfPUyJEv~TuC7g4 zUkc01%ZrQ2k>5EwIn@Ki&*_#)=}%Ia{;)w+Y_GVMTX+nND zSlaw3xqk`O!D%|e1{=KzdZp%#|Mp66I7?NREvEShW;2DFL`nS^WxH9)h|<&M2f@T2 z&K*KsJ8xj-{0YPd?U3R*6`pVPu1&nX!*hC`mpRg$Ht@Dme#qi;$oauw6gN}^ z^h+lBwF-u0%+R^IOS)T{TfX4 z3Z{|L6%z6=$R0Wp|1YX>iXYD9f!qMKV*<6tOGHIQMD;#zcQu1V3jE!F#n#I=TRbXJ z2PGwAF)`r#`10?-*Vi8`vNgGdW?*s>{?XC@K&<{C8aTr_Bd|YHKfZgTsih@592yQ1 zPo-ou@CltXk&%^@?L-#@A4qQ~3T8=lbOYK;L1m5MFy;}ifa@zMu(e-^IXeM4{f~A_ z;E7(+GVJ$r24hZiYfDQ9PCUed*Dzd`j8u90SW!Vlem_xjYDT|za+!u??=}M!76Qy$ zPKpk+;K~lrP~v>sOke<(Xefa;gVF9GXq?0j`xhoo-)~kiPCV;x-%5*$4t947K{th= z0=R3#z40j=!(M{JGEd&W6z}ctH#W+Z5EJX|5iQ6i)uR0LC$5n z_6wka?RJ}e6d4aY01)E=Ctl0CNgqTFJSCae2#0_M0UruJ*w#ezd33ZKOksMyo9z&= z&n4&KxepY0SQo?8iH(T?*y)!H2IQTkE&C?z^4#2909320s8}u3?)hWts@LwOh8 zxgE&5EZIq0STOrw|AHER&ew4J_tnbj^7nX-4gu0j%YgCEy+Z7o!?(xa!sh1fV2UU3 zDEtTKVygg5p4EeRYHB7I8)QCf_%Y>EN@;3pT3GA@3?IbAr|XXA$EyCPO33pQV5l+* zKz&)H{)u*nlz2pM}FCLC_d9xYG0IC=F)%$hNYfsCC+H*%830Nqs zFDbnAK?l!_a%gL@q-10x9Tr}4x`^9Qd^H-<(dHolV;8ttlbtVdSI!Nb==NuAA+6x&(}ou-iSo?3^4hb=*RBlECv~{Q16Pm9dY$^`D3A|A%ueyK%wegUkF)9|UI z?H=)GaqG3f6K{b`#`64%#@wqR`Zg&v1?3(eGI6wufy)FFR5XXl5~g7Cec7g_z9rH= zEH?3Qwk!273Q^Q)F!fdNw2Su_TsyaqOhNDpqQ+4=D-{nYztWOSI~)eD9R?l1^mxMO zn}q!QHZ?uZ%Tz9h#$(9eQZ~hp=;+$+M|IwU3!rG4U0ND!gZgEwSCp4;&g+u~jwj*7 zOxZMG3H<}7fxdC=l^jhZFG#{#)kXu!YzOfS5U!7*O2}Vt6s7!qI@6DjMTv#jz@zBP0(hwISBI_}!37lZ=^lO9rn}8@LgH%+BwMjmN+7YP&gyD4>35T->^XYt zOH)lRE-tp(=<$xu^MX&PZg3IKgHO# zZU+Wa8yU_Y+#jaDGKvcQ(8t^JUsFD^?T`84oijHlnUogeFf&n;`1&I8-~J6 zpXurRu4hKYOx1Y>1!^iPbq&B_M%79qRq{1R+P1HhqB5fArP%SN#zP+9*)sUO(d}4lX}pV1S%?eRY+We^>OL@o=}9 zzrDEl`^E0mlyWh+_KLfm5a*INy}iK-6(ue!v#Pgp=UqZ|Q?zYa&U+cuX!G7b@!dPD zbaxS1_}o00Ml*-R&5I8|B4ublo*W;KJNYUNP`odgOiE8*Sy>rC*!cA?0y-9i04PEk zVtv4~4+}#ehvJjO3Ru5%vs&Cn6b3LRU5V>hI-rL5`w0E_EAZpQ6U`^g)lcp*BG60l zQjr!+<{|#7Trr!SnJNFi73b{@UCiWBH3<_DV!i9tF~*7?Yk(!enfHw>7FF>b7=$5T zT}x}MA^bVZQh1i@6mczQ6e`}B3^lbM+|o$e?9iz>ICc*6q$gM=l3tl5)<0!c?jNX) zSgAt3aN#p^C`luk=~l1?H0G&FkR0SQvT%Tuvs;4(nr35@chYLy@3WlnR{FV(?%zw(&x z(5>C<{q z@DP&@XLsaOOo!P|Jc+r>x+rPb5ec3etfuEnW~{<($|Nrk-$hD?QBCd0F`d`2o|kRw zQdL#-YF5!7+lB6_hR&#~(Q4CpIM|=SvQ$w&0Xv&h{8Ek;Tp_8}eNU zPyG?Ki(q#zrpo)Qo?W9heN?rNgSOlz^)4zVPbCi5P+|}9{AjeLWLCG1iasw}gp`=~qzhk-3Q#RpqQ`R`KgbSEMn`uG?2rLSxm6#4_`6xM&j! zW=b=%m4Gk^P9#J*L7kiLse9}@oITs(#}bZS$YrD%Be5THWQF{LgQ2j04@AapIQ83p zbD>rB)4|N2nKoy}QdA(Ex8)J@N_HM`jfhO!LdeC#nl2YVaCZ@vkzKlQolPVbc{e^| z{=EJ4S*PW0uqndZukolzow1meDz!QBPV>Pu!)YwpjPz}B?82hOs-xP?KwWV9PiFs0 zzki&Y=QIYhj|J`?x8Cp>&G%E!e0Z*&DUX+-Y3_@M8B5qj=JgeAzp8BGML>E-$lkk~ z3kj({v!CpwlY9fUX2f|Y^gbZ&@#v~AEj}w$3@sdH693t2Ig~ta?EFeVGhVZX%qeA$6n|(gu4S8#L$#U7(j0f6-F2(Wt{?uQEQYi^VC|k~H($8wE> z?D`OrA!pa)7=2-JEX|Jq;I{^OI$_GY%m$?qfk$`dN1$}vzryV;V3qPC z!x>{E<{q8|Ffkg3te+zfyOI*-4}M@LKR2JoV4>-^ ziyiF`sl9^jjrz6orfoXhGPByf&ZF-5Ous3p^Qf|4PzY^87S zznU7bkrr6ax3I;h&OV`kC5)!cd^IoRE{x1n7Ap3)s6lI9pt*d9lLciqwfoaX4*V3y zbmdGJ2bJ?pLW!r2z6kI()s2|~_2Y5|B89QwRLHT!g_<{t2Xj9%_+X%LGiz*vsX@Sq zu{JIt8QqcJJ6c#l`q}RxZIyq!`iY;N$IEG9S!V6FoInIaV1=MiH-}ToIWL)CgU^u0 z0)lF^soaVj>u{%|46U``Z-6y5U!%s*W^3ykg2^yB;{xqX=p(_xGYYCum*8h=>YoI9 z15ABZcZB}*W-*n^I2U){?;fk_DrdBFFMsWz?(WIC+ZLSFE7zM5o_)8vx=VweUFwo0 zR2NYQCMk}DtK6k-kR@G+U3_JqH(F*7tUw*$_WHECGQPAG3B8hXNyUoh>ty;hBl=1! zeH90%A8*ZPcj}bY2z{^kr*7dyj>ek!$(z2Gfk-~Vi?qW%39CNzg3L(1Pl}ouG95F& zP$c=9VBS>2i`9Fi=xk4dg-Q`G2eO+(&#UonM+UL(!Za~j)#vxO*h@zbE=S(NeTJKH z!Z-JJCwL_h48`9Tqp!32AD9WL{V5cuaRZccKtm^kZN=XEJ(j@b>n8J$pER|6lPkDs zL>NLE)Jda;{u%8M&hf%P-Pz zTw*r7^6t_nUYcG|-*cPm*ku#kE#5I{*UY6{i9XwY( z;ao;U^`)&8&s;PA!zXU4S!qD{SABI&vxOs@sXQ|o0#Sdk19wT!0_zW#V+(&U`Kat( zREU}SY_uEc-Fy-3m)#{05N{HvMh;ci36)j$AoHfl&+(}X#^N0e3L^(E4`u5w)YkBg z4cl&Q4mp?%w4|&pQJD5ey58Z*d_U~mMoRjiF&*z2Bi?++%tj9?iYUoe6P+J|lZ)!E zP?}99w>fnUGgIyn)&l42a1!Q=*HanF4)W*j<`v-Vh~HynoZ&?}*P|KQnN^`!Euoa{ zfT9-KuHu~gb{{=|vWrcybUCPutUdgJHiPoMHgey|IY|95=418)_AOz7v4MI>Nb9Y6 zq!^^ZFGiuftioZevZ|)W-+kc~%^hRQ>^3K}$r8rN_zJ_Q!pAk3A>>`tE{#}@BRj={ z{;@m+gH_@k9}c+EeN(sh_FnO|K1E0GV8Lbvj3RCQMt;llZi*j#imAwO5FC6ev#PUK{ZhU|_V$8eVXdE;>CCz=;>74aK!h zQh{CZ`j-1nzEQ1kGwM#ZJMGR1`lK1Y*-h1HeZ23=f&ONgZdl9RgDUlN1TCbne8|nV z7`5!H@ggpIaaY<}gFBFxBkNW>CYq1T#$L-~ZkabvW4LQITv~XJwAI*cIz9M`fR!c1 ze!W>lTiwN=bfx=I2sC+)5I=BAYsRM2i!NA)80gn8jQ#N|;Sq)*z4AU~Ahy$p^Fv`? zX~mJ56i$Gcz^b21sed#_)cmE@QL$5i;p=^3dqtscD;3FCll{m2=0>-lmbl3&_D0fY zYFO<}&4U4W<;i<%-R-}QihfN;Cw%T*V9wb1(Un3>Fi5M{y&3)Tw~mQ#CC%A}i?$fk zdydAQ8j<59^i^QgWmbGqSiD-AK?}nOgH5_w)kr`mySnV{@k2;~i(!0|EZUilg5|_qO$y0o`(P zQ-6jczZiE+$N3oU8xgDJZ0a(2%m~lo|DOMNC@5X`r`w(Ty+KKXboSHn5`kj-D5A&5 zu&n)H7whY3*`ILoj)^fo6Cj^=z-jM`n#%38!vNayP9l;A- zmXNGwb~TqTTe`dO<&GXz{QCTK_zhDx_V#nBe^)hb=!DHgRZO%G2Ube^}w>`Y7 zhoj*lRS-h@--li38VH1+V;{@hJeWbKN}K0jgsnb-n1f`oF_R^gFBdSJdhDOyQ>vo946e%Es4jZxVpZ7rt1hS3->fzYSSst zu(r!eR*4||0nKV+Lh>OlHNOY@3H(D>;jbgF9UjlU=~AW1{EeHJ>PthV9=2tL(~&df z5>E6|xvq%2wLHX?AU-!9R*a95V$q$xp^~S9yaqE%VvpPGJYC)qn>lETXNcTbUF(O zeO5k7z%kOC0aXz=H26UWp@B zc)qo?UAr0q0?pZIbRwT07i9N0@B>Occc-)_V`u+#c7ik?&L}sl-)#UaATA+snT4f_ zUgH7Haae=@isq3%;c}NsIR| zJWDsk011lLq#5cRS?`j<5ji-(q577PIZKBbuIfP90OaKfQ@Sp#VoO^sK0y z*M~;Zj?L^0>lv2y3l{!94bQ@qG61b}w6g(CTiN~A@BI1SSdBpZrzzw@v`TQcvt_B^ zQop{Lgu2D%-)ET4N&XiGy|fv2y_voTQ@2INi}mm0ckPzxDM9F1+G_A=maISAh3P-Ia_$xtNZMi4>^_v%`xBUm>ar*B5?*?}o@xCTW4Yg$Hd^$1eZAKyV9B0HH0A%@n`=)~T$i4l^s}cce z2x}6L7%H_Hb8hm`Mr&XuL)Zez8z|CvJ<9KG=*6tQhK7b1&3k*Jq`-=7>v<3aiNK0b z5(vb(zc5jSlR*e%AzL=Iisl0Z0%`qd{>p7W)%9o#mHe9+FPTsEY^TpKdbrcC3d8T&FXB|*0_1baLz2Eos9TcP|nF#ShoYP%oI;z|> zkDu&;6{5HS=RT;wag6jh#%g$a-sMlx98CRMROAHW<6eMV12prt=j)*hlE#uwW3S`G zEhr5iUh-celsgs_706HLm)^M}20aTVWY1B=3+C==RlJpzRWsm@*#LwSex!hjV`Rd4 zks9YV-gr=6L3-q}b9z|oG(gW(AFNcPyr;sB4wB*pr8lTyy91ezb&=V)BdQyYPB+i& z?}IWdQdB?ymFn(a6SW#f3pi2Q79;<{=N*RcQ+!D8w? z36c~|pFdyRIgn6~(YjOn$7S@Wp7-BM=`f1fDuN%`gW9;FQcv~t)~C7PUJJdYxL&P2 zjbm>dt&P^q%v`eDiZobkt5>z8QX&C<00i9^Vo-;>APexIS4|*r9sD!JQg2Y{Y;I^c zly6wtj>VRilq4YbD?KPcqRYz4066DcPL9uXge0Id2e2Da`+*Me}n3+WDWi+5GlH3;dmJD`+gAF{^U<}L?t0>4;Xf`KDTZ^ zzlO#wZ244UFhbb$PEy8XOrxlKQ}=rY#|kmtW=(aC=j9IPp@3|{{hi^#=fbrSyK8#L?r4r$!bgyURj4san#oh$cMWI7=( zZSynvm0+C}*3*#+GUg=G+uvUc5*eR0XV8Sx0M$Da4V(hRk-hbBk?o!T(MJo}D;oz- za4yUG3hH^RW|JESxp{eDWNu2V*3}%Y=M^{*r*8?!Inwt-A^`^HSE9%9c)F{88yOjK z>ofso!RAwA3x>0&n3KyVV)ad(UcIu6p<%CmdK2SGJkunqk?8laY4+>2W1)?_0L{YB z3qeILWTG!L9~@{OqJ?E7*u!d88`o8Mlukh+wG!fr~lw+bg4L4}vn%5Z-f%^MqlUIpKu(lqB^B|6JltO4AMR8Zffep;N>x z#NOWCyor0DgTpAe>*WX~sPt;;C|pqy2Q&^s|FhS?ms0l><)D9ppABZ)&fj-Y11tH_ ziek9RrUfatw#3=X7L-kNJqYr+US@E%?0L1BgHClE9R0DI-<&m@B?m_TUgmMB8XzAj z8vOmBxiU!VR8#9OkwV4!H+n^a4=$*#MJ zLRGiVx;$f?kdlZ5A)J!+Kc!uB<_)L7;vIyWl><%KVD5xZyb0wB*hI-OLcEn#bLQsa zK-gA0KykWkyr$gWSX$ylBpbk5AnD@OaDTZ0fqvvqYu!wnOiFzhJUcyi3QpOfx5wAn z8p^S^@(kJrAE(9#>aWn_h%Zc$Wy-+jwlL ziPUuC@ya0L*q}m^`{jb+8#kAUGyT2^E5x{NEpADUAA)^lN-{O%3kZM$+!`oHO%bm6 zKCv`@q_mds5(A&8oOkZ;>3L>mgbnsM4ytW<%V&HHKO`f#Yv`pO(^Rw`W!cxex6Q^2 z!fl&DT6bBz>GO->yp{Z{{8e#r+euF34xk)kMhuv!khLq%Bh6 z>=%dr@De6&0FI+(5I1fa**iK{jx7QFWdl zF}Exb1%I-Tz+F$j`xIGtnVH3OZGn;iAAXDGg73GrrtXq=;9BCjFGdE}LFV=oq&T;P z#OLVfI3#k)wMsl9_G(k%Le$RAj+eVT02Ei0m)DW^*?`g=o?fBvdNF^6 z<1s_Wk_H+;tV?TZcy8QiTG~Qpw>`T;dqXwHKyYAmwARndLQzqh=aQa6@9;^6d zzn@jQF}WZ%OxrZk0CP@XzL52&y%Qwse~~+v01O82*Pap!uGKAipM*G!d>3Zp2k>~O z@sa`;FI>40;ck5ul>J;dRZQt^BZiO*>UM2&b+2@KzMPNK)6rvMVt$e&4T|oKieBgy zbUt|oqW9z^Bxt&R>oTUWT7ISd9H2RgEjADYprE(hg!11Y&y7T(t*oeDqEMghgi(AX;~=T}dk zfP^5e42|wOjTHwRoQ^mCl9HnSAOu=CeloIfJWc`c0X4J&He=aCIZnFJSO@Koli|l6 zFl_};>k#EKx3G75Pu2OoJY*uXh1VBEYIp{FK@Epf*_{bWP;gz7MXGw)?BJqc zwJt{?59J<6fV=T$AzF!@oo%<(W9(?nl7W5v(H2?!D!;b&24{E@UAZr?f1z;n%5wCm~XM!*GFUgL>-@ zOqqStr05pV2>cHyB32rXk*!NZ6<&asAoCh%PacIO9gVgj%ysx7kq8GdY6j3z=&ttR zw15D>;6hJ>p*s&LuSFN%W~Gh1CG1&c{MPnr)Gm&vk3!oHE2ty-)rSn4?+IX30 zh{MHA^E)ie%!>e$5h4NhBg$&33)_{WoD~dj4?r~#e)_Dw!o|g-jt*WcD?@2%b}~Qs za#Tr_osMKX%ox?00{}yoqTS>59vjvbt=jiI^B0_-G5{;bwfNFNq=Rf~!1_>1zidJ9 zF{=JXl2*Gaj~3ON+%U$C^$p%oN+=BYCC0c+@TG309wuh>)&Y8+dXA>TfSm8s3#|`* z_h0l(H6ycKwkW?Fu0SRN9H}J|<57}U`-r-+x>x~I5{bw%avtQDh9R`pUiImz+C5jj zHlg--auE*N@TFIxwxq;$WY+~S`{d~t(9zL;J^`9hbU-4m1RnM4d*Sg$%<(msz{n;u zIY#+yj|^ofU3M7#;n9@D#u#=AB&B@H+^(caQ~Wf zi($ALRt<;4Nkr(LgNP~&#`O>Pt~Zu;t>hOLCX1RcZZ3rUG|9L@W5&PwQ|!Lo^TkB9 zPH}Z@oJ5w694Fo*g)I~8R1hGKE&o3zzo(andV<^@qUxABC7#R(fz(_+k@@7_Wdo>0 zH|+ag&VDudRq>9sd? zC*ldS&NA-m@lGb3nZW?R!8;>sBI-U-|8ZycL>7W+U4^tdIYv>T=ziDKcYm3O>{mZVsa!1dBw`Cz@G+yse0GAQIcfL#kl zC_wi*>kr;gkcXdl4yYCj=*g=j7*i9Y!nYajB>F?L^2U0GH-&z~H47m(Rpi8bDWJ9% z`~eb|4!<4X9ocdBnrC5-i;b@yaRh$G15V?ce{HLvulO5sw=UQ9$q*~| zLw$XGNEzGPpP$)(oY#D;o_O0nM5Gyw$Q{+K4zMq~yQ}k#i8qTkmQf%J@$-cS$C$+ZUZxFxHv#r(WJ?|iA^@}wV_X9pXE)~ z=cTUda5!bcw0*&|Q^rc~n*0j^KPTK6D1Q1pOfghH0p_!4*(5$yygS@)Pt5|8u7TpR zXIN$h(!g-s%_lINQ=a`AkG9FwL`jd%x){dk)|O%F3IkWMS$x=*I9(mxv%LEU`}hJw z{5T#arMrJvw;+Z_XJ-w!JKDV(#`r8vjBBVod#WP}YO$)@MXOkDgmefU7@euFZ<&Vt6+XL!@WsXQr1ZNN%d|lsIl-Ktb7`O=9X6 zbIFO|qwpcXZwD-JZ8GjX9c>+ncN~BLrc!8lu)WMy^Vbe@7Z_KK=?YLQCnplHx|^>T zHx1-VZ_Ii7b7ITwJO}!SxokCaeDM+MF0*ZuwQIv{p~7s9z$N8o4cHO*VWss&q&=I| zw%_ev+921g90SRS9Bp;9*u|(Kv+DA)EGuWOoQ3@vTO7^DkHHM1CMHYzMF6e*j#)kN z>e)XD64>bt!?-g0)<}#=HR5WGwQbhyEHE*%7}8!i6LWRJM140tPFw?L3Ve<>7bq*r zvBhSq4@^9c%lad5GvST{(j3`i@EW(jCDhUJPP6!GwzPR~W_nLXECWEevkeqRJOt!y z#?h(Kx81g1qh+h6oQgoWc-30l?zyd@;q0$4)em)bbr+WKJDy(jfmK~3luUr{bES|= z={afU(@9QrfmN5T*ME0zSsqgO07lpYmkqeV&eV@AxN9WHNgLJ<3=Bx(^MNDk9sJr2 zF*k6YM!bNzq3pP=H|R)fBpW*TFL7b$d*IQ;B5$Zb&h2Y={v}7A9uC36%{Dhw*7U! zhG%D}Eez#AaCEXS8r7BEoz1rW1ZBH{V9)}&gZr3}S5kL&chuE1lO*i*)(bGzm?gVK zI*l6zAi|uO7@K&=ge?JuaAjmMXGm?v!t;F#+A&W3ux>MbBd(}sYP_N3)(qP%BjR{{ zeO)>E1xqZu=}=|K%qj?qCVIT!a-xv55R@QGtvXLLbNdfy+hm#75BzejbY|1QkIg@uGboF-!PM;R$nu{}j0;z6fgV&PXB8C{ zm1hr>_fG_w%lxsd$`39BSo2{MkKr_|(qr4l>qV1KE9>gGulmTMZf3n)8+F3qQr=laRMgzVpGieRS@So>?orO$FVq081Ba(5hvge~q%y^X$&je|o$3H3aq(C1WPfbwjaUXxc>Cl(aE3yuGRlyO;~nZX`V zpIKa51mTp4pft9Yp9R`j@{xpu#Jl(lXq>d~pErw-8Yf3DTmZ8APEzo6^lx#juYEJ= z+fbPr7t_70YyfZNrLadeZ?6pDWNyCTVcTp!$M~gbiAXE}r{I44%nKn87$*WT0%ux3 zr7j9y^{oZ&oAKwR3R@l?J%73F^?0tPAlXwLygWVWI8!ev;I~Fx3I zGZps2Z1ww%%@A{M?HWv)Kvw$Xt5?_D2Nwe4TW8lXnTR;6_xp-#28Z7>e%CRfCPjl8 zid6&$x!4aQplP7YIG&_VCnC=9Q7Ju?zKi4{lcMnPq1^3mS?Axkt+~ZbHmDEV&S~99 zQ{iEi7KDPz(ebUkSwDoT>np}J*w+zPavq!IYD&6uKa{%)d+ptp(Z`A6m#%pMcV68K zojLG3GR4{Qg;PjPIQ7x^DK$C~c3S189>po;Y(~?HZ)# zSKsLF$?!tLw5N|r+at+7E}5Cl4-A+zFpDk8(yx1T6@YtZVHQ0G-zB|& zhp61di3jA6%B-u#p1U8ML3r$@CmC;lvDfpy=5Mf-%!wu}Y3PXzvdArCW09NL-s(6V zh1%(Kdzp@(_5%}ChwoTSpjols_x<+i1?mcyLh}vNe#;7DNEqwK3u;?e=x$v4XuLDZ zRl8a=>m|Q>|3P4#zn`~8)OZnKpdh|5Gn4ZiT+PIjBvUk?U~y*sOVka$$E7N%Zl?M% zdr37%MU?g2dpf@=EYZ`awoO7{kdUOpLnqrbq5k;x6K&|_a3#f~qp5D;X7{R^d#FBf zLOJ-q_`wDD^@@$%Bj8hn#(rph7Z4D7p-WWV$!^go+)?xr4adMLMvk+hi$D1LrLY%p z_{;8#zTCmqtfn9lMLkVN{L(qjs{l3zq7U)NTfyIj1jI$1cUQ$brZ+$_+GFA1_`4*# z+%B;3yD6rZxCQRT9eg>8`rv@RC>02<7H!j0)kjT}-CtKX26EIY2=g&od`lU&$igN5 z=eTh|{=Q{jm@``Jw)Zhs7#&ZZELP^)Z?u7V5F9E@Jo?p|6Z945z}3Yo+0mdPaqtdoJ^g^QiLr6gU8;nG z%esTc^3=UmWY)rPbe%CbYzCRdw%=V~xIQtJ0?Mw(ZjszBtEg|BKB;V6`scp&Ty)6% z25-`Wmr=l`5a&jkkhit+waDx%A>2F{j{^`~2m;a5Pfk4|0+6-Y0i!t& zI5H`9bN8=(wRJxUMr)U0{rq`sd+W+zIoQ-ay8w|gFDw7yIF1Pbo5O5dtqaG`ab8GF ze3YT&;pI``^+O=(0NCdbEseH8Vu)gz^CR8ZrrGps$M>25M5iE`?!fopuG63;uOKL# z%m39|jyx<-WNl@`a{2Ot@yS!iy?WG+>y&B|mwO*Cixfy5<(H~rvAml9(jaaRR;w63)o~xXtS{b2B+n~Gg*3?lAcY34 z>W_-@@wHIcfj@ae1amWX2@ago&iM)1KHI%n=szhNJJsYmD;)FOaho4pkM>>+6h8y+uM zH8B;gj?26SE@S;dD++iz5AbHFxVXUSEf{qt35k=N0(nz9ya z9+D%UQxn@J;Xq($ho-WYw6oQ#S3=lc_6)+ucgLe(>s`Rp(tZ-sTJZ0QM@}I7e4Je8 z+W3oP>}4|f?U~ML@JvPUZrnh!9KK?7&RGh+nZgAkAWO)dyGC)3tROE`jNk(11!mP` z0TiVjMIm*a*D!LQ7J(by4y-9$>N^wk;GF2pl?L%Hx%uS2`xEs}HETZ)IN4eMQvR^O zWIcv;LYugy&R>8ib{|o{`-wO8A=CL>vJlL@kL zvWQdd7T3<`PLv;|d~r)xpIon*0-xNoP;HSirkhJY6J*i5Baro$>ZggU*H}R7D0nM1 zgr$SADEMJ9Rv7!Ia}H2mor17CY2nqd*rL5*e2cEmNI)wG#SQC}>NB+vWkN0%i%*V? zN6l~S(IsDaL4O)TDkZTf0Q(4!1JtxTGcc6@Wa9kN(p6>=>4Ock!`>f>Vxye&qcG6U zd+D@aZJ}=(PP3TFIn4dx=ki;2@*3OAGdtWbsu(Z(`v=FTnR3VRu<}`kl5~njD9&8w zi3wg>41|5VR|TvHe+&6ku<1C~p0nrF@ud^}AW_#= zRODgL285juk`hhN*uVe=P6-Z+aUcD9?Nrd@Em>LgcW0fBLX%>ZU{HS?QX`Osk&%@h zCI|@d+aWdNK@)VX^|rq~Yj!9o;7CbnFNXqGZiDQ{hu1G$xDaO*!C~|Oj6AJb?}9rb zK5A)Yd8E!G&%sa!jLifGkTHCbp|*j6j+7k}2x`;L@7wLCi*^1G^4n;MNP7y%mybop z%CMS^&E9i`-ONzez~JG7fBjCc^mey3-1``BI$Yr;0s={pU9Yf*FM)3-g@Xh5y+A(| zL@zL$cp;@6l)t?AR zwU}%aTi-a(g(20&9Ub`8ae$L2R$$R8HQVh1_G8}DQ&A>*20Fhc;b0K?v)Co<`l{xI z@&G2Y8Ga8j38H(2 zu<>WL0o7AHpqD`m3Ljqatp8P{2f>7ebTwfBlYsJ$LQlNNv<&JkS&uR!w`Gr3Q%Du{ zL=y2IeQ0|*zR1K6Ppr^Pz2h+So~7DY*iHe$Dm~)3Q#EhmJZCsBceFbVuU`@luYLpk z`;Uw2vghVuWEVMR3LLekU~4F?Pho^8u_l6=jI(Hp7(f5cfEi^UbOSqO4cg>BWKcm)4;PVl=(&y)&pCJE#V=k+PKs;$2-ndr8ks%re6%GZVwU=$HIWIt{bYB9 z-Do`}o6X68=4WUez$(ob)eX<9&91^uys+%O&?>DavOC}v*geqei_?T-*30neJvXm_ z2PQx4sCTHSsGw{EBAIy+cw+sFNe}$^)2C9%5(bFUohH$Ho(opv2S2yuQ%1)rEs~t% zRv57T6IqTQd#bj+u_TMLaqu}d# z_`nSBP1eFgZb-6VvIhQ2c-OjbfEQ(}s{+vNe4NF?cCti-CMLwDIXOm2i^SPX*6JYS#jDq-0G}9T&SjO znV~`J$4aa=m<50T{^MS0oO}TcP!rO@aPoz-vd0z>T=;r%EAlFv4eHL0npvIaT)y^* zqhu@j9EAUdI?l~)qi%P$2=E`1wqfMJJ-4oUAimmwhv=UDz_PZ+6@A0RBvjE7hT*Ld zn2QbHKfhjlM@1Fk;o($hR`1z?l*rSQ=-_gJh*w@1VZ3gUdHh!>;= zcO=z2_s&4=@il9Q_2e?wS$p{5r~@2SPAYYCD=jSzSB^>*^>Gb+@TQC8Rb`wE1>u^A|GnNX6Kjdc zORk^j1H|F#$>O{c61w;ck^77gXDO%z8Ykwtyt}^cVk2UBmF6^Ic$kgt>T{zV<@9G( zgg?wQV8=M2q{NDe{_^FyfsUN7dog}~YflSowMhJsiEnz>iX@wt)Z5zI3v!V+vnGVW zn-LYnuyWJgn?}^3z^1i~xtIp5NE4uf8&G=x)rubkuK&k;@?Rc-T!YVlalHTU2LJcy zO|Lqn14^kucAeGBuAVt@UlkhsLCM139DLOfdNEvy{_Y^ZBSe%|5%+^kzE>v-zMp9N zyR_6V-XZ!4m`8xOZF6%|UOnP}E-ALr)b{nojFVt#RQCb2Tu)EWW9#n!T=%VT3{dIE z#>BWOPzR-_rza;Tmk$i6@ci)tnhoMF8m&@UP$t38j|OB+!E_MLDE=EaGAhu1UW!6y zY~YO5pUaNlh{T1?-@jMA<@kLe37{kznBa@LPNK)!0D!Y^S{0dYDS__*H-g3{WWrr0 zFE{rI&Y(Wfpy z2F1q8ieqC3whhLz%6*|1^bw8n_wP#O<7OJaetb6Kh>|L=t_jmIbF+3c$m7@vRR?>Ev96l()%o~G6{3jQMk|akx=21ZR zzn@aL2CkV-9m0bSVM{d$Qu+UAXNbxs<{RJ>(7J% zi~#}})8)AuIG4i@IARjP&rU-nRw3rJx*7K#k^}&hrG39evaYAMcRkN+Y{pqeq;6)K zE>!VsTLp;NgS1@WthI=`cL;vex$U@oOj44cpPyE_4|~jp83%&a-rjCsSjBfSYSevN z6XmyU+x-4MxUj*TSg+M3f3T@8Nfy5tW#ZN$p{uKlyc=wS2|U`u(@$0}`P$mrnww7o zUaS2g8x&ywf(mfiBl+f!UnhiH=O)vBD;1owpc(kr9VrR+03}vfU_XBjoasIjWO;@a z(7Fs3Tj&GAw80Ge^V|Zra+8Je-6?&?S0BgDy}Z0A3sLpJK!jnj*xJ3hBvAHZByEKp zr3_KA4w{;px^2-SF5U;*nwfSWI{57EEi5cx3f*oU-+-SBpi;^m2>aEPqpe!6acSG$ zUtHwXP@80z7MH)|_YCWmCh;g09y>d`z@6&xQGkigva*2rG^1IBWoj!c2Pd5`fwdQ) zN`8=gT3TB4O`nr@{7AWZqg!E`{!>W%La2xc7seKTuLN=}_`5@OS=knV=hx1IZU3u5 zd5^`-ta(#Wr=M>R4^P&QJ8e`R&*e`~k$gb&CME402bX|M?uJ}gYWc(&Fbm+B?mdq{ z9*?3go}_#Q^5tc*K|sI}013kZSleS~6QnwzFsnbVh}lFGC4WYtNUky*bZEx}&|d%` z0bu?cSqLjbz3ZIek8bq50u)|b+XYJlg@$YGSPl*c+cypT_twHdHbG5h=FG0~_Qpl( zpc(!Ug|z+seZQ3|o92&~0o+wgUD^EEGe^@v4GqV@zz5HtW4cH^;{TSv5H5lq)lu5Y zN+GDm1NfeV4w80Oh5$4L)Jf8i-|7PtFeQNVZhGx3cO-?|X|JcV!^uz&C{#c=s9$Jo zXks!tSm`%jH>bk$l5m&)ST8rM@@Dmkcg(t8W}0DPiQ9)jwnpzvWl3h3B + +
+

Imagem 2 - Organização dos Pods em um cluster

+ +![pods](/assets/pictures/Glossario1.png) + +

Fonte: [Armosec blog](https://www.armosec.io/blog/kubernetes-security-best-practices//)

+ +
+ + + +--- + +### **Secrets** +- **O que é?** +São os dados sensíveis que queremos armazenar, gerenciar e utilizar usando o ESO. + +--- + +### **Tilt** +- **O que é?** + Uma ferramenta que ajuda no desenvolvimento local para Kubernetes, permitindo visualizar e gerenciar rapidamente alterações em aplicativos. +- **Para que serve?** + Facilita o fluxo de desenvolvimento em Kubernetes, atualizando o estado do cluster automaticamente com base nas mudanças no código. Ele tem uma interface e automatiza muitas coisas que teríamos que fazer manualmente também! +- **Links úteis:** + - [Site oficial](https://tilt.dev/) + - [Documentação](https://docs.tilt.dev/) + +--- + +### **yq** +- **O que é?** + Uma ferramenta que vamos instalar para manipular arquivos YAML em linha de comando, semelhante ao jq para JSON. +- **Para que serve?** + Edita, transforma e consulta arquivos YAML. São nos arquivos YAML que vamos escrever como vai ser a configuração das aplicações, serviços ou clusters. +- **Links úteis:** + - [GitHub do yq](https://github.com/mikefarah/yq) + +--- + + + From 37dfcdf41de1d3486fcb0931182db7af6a4e7b78 Mon Sep 17 00:00:00 2001 From: CarolCoCe Date: Wed, 27 Nov 2024 13:03:15 -0300 Subject: [PATCH 05/11] =?UTF-8?q?Adicionando=20mais=20conceitos=20-=20Melh?= =?UTF-8?q?orar=20a=20Documenta=C3=A7=C3=A3o:=20Criar=20Gloss=C3=A1rio=20c?= =?UTF-8?q?om=20os=20principais=20conceitos=20#16?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{5-Glossario => 0-Glossario}/glossario.md | 26 +++++++++++++++++-- mkdocs.yml | 1 + 2 files changed, 25 insertions(+), 2 deletions(-) rename docs/{5-Glossario => 0-Glossario}/glossario.md (66%) diff --git a/docs/5-Glossario/glossario.md b/docs/0-Glossario/glossario.md similarity index 66% rename from docs/5-Glossario/glossario.md rename to docs/0-Glossario/glossario.md index f53aeaa..26e91e2 100644 --- a/docs/5-Glossario/glossario.md +++ b/docs/0-Glossario/glossario.md @@ -26,13 +26,35 @@ Está organizado em ordem alfabética! --- ### **Helm** +- **O que é?** + Um gerenciador de pacotes para Kubernetes que facilita a implantação e o gerenciamento de aplicações usando templates chamados "charts". +- **Para que serve?** + Simplifica a configuração, instalação e atualização de aplicativos no Kubernetes. +- **Links úteis:** + - [Documentação oficial](https://helm.sh/docs/) + - [GitHub do projeto](https://github.com/helm/helm) --- -### **HOA** +### **HPA** +- **O que é?** + Horizontal Pod Autoscaler (HPA) +- **Para que serve?** + É usado para controlar a quantidade de Pods que há em um Deployment. Por exemplo, se o uso de CPU estiver muito alto, o HPA aumentaria a quantidade de pods. Também é possível utilizar o Vertical Pod Autoscaler (VPA), que aumentaria a quantidade de recursos de cada pod em vez de aumentar a quantidade de Pod. + + Fonte: [Leo Michalski](https://github.com/leomichalski/kubernetes-para-devs/blob/main/README.md) --- ### **Ingress** +- **O que é?** + Em um cluster Kubernetes no qual todas as requisições chegam no mesmo IP e na mesma porta, os Ingresses são responsáveis por direcionar (de acordo com o DNS e o endpoint de cada requisição) essas requisições para os Services adequados. Também pode ser usado para outras finalidades. + + Fonte: [Leo Michalski](https://github.com/leomichalski/kubernetes-para-devs/blob/main/README.md) + +- **Para que serve?** + Oferece um ponto de entrada único para rotear tráfego para serviços internos. +- **Links úteis:** + - [Sobre Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) --- @@ -95,7 +117,7 @@ Está organizado em ordem alfabética! - + --- diff --git a/mkdocs.yml b/mkdocs.yml index dcb88b2..ea56d64 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -5,6 +5,7 @@ theme: name: material nav: + - Glossário: ./0-Glossario/glossario.md - Setup: - Pre-Requisitos: ./1-Setup/1-Pre_requisitos.md - Configurar-Kubernetes: ./1-Setup/2-Configurar_Kubernetes.md From 4ef9fc6437aaf4d52e354e9a85b2ff3e578c95e0 Mon Sep 17 00:00:00 2001 From: CarolCoCe Date: Wed, 27 Nov 2024 13:25:22 -0300 Subject: [PATCH 06/11] =?UTF-8?q?Adicionando=20problemas=20enfrentados.=20?= =?UTF-8?q?Issue:=20Melhorar=20a=20Documenta=C3=A7=C3=A3o:=20Criar=20aba?= =?UTF-8?q?=20para=20problemas=20recorrentes=20#10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/4-Common_issues/make-docker_issue.md | 29 +++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 docs/4-Common_issues/make-docker_issue.md diff --git a/docs/4-Common_issues/make-docker_issue.md b/docs/4-Common_issues/make-docker_issue.md new file mode 100644 index 0000000..39ddf58 --- /dev/null +++ b/docs/4-Common_issues/make-docker_issue.md @@ -0,0 +1,29 @@ +# Problemas enquanto executa "make docker.build IMAGE_NAME=external-secrets IMAGE_TAG=latest" + +## Problema 1: + +### ERRO: + test -s /home/meu-user/Área de Trabalho/GCES/external-secrets/bin/tilt || curl -fsSL https://github.com/tilt-dev/tilt/releases/download/v0.33.10/tilt.0.33.10.linux.x86_64.tar.gz | tar -xz -C /home/meu-user/Área de Trabalho/GCES/external-secrets/bin tilt + /bin/bash: linha 1: test: número excessivo de argumentos + tar: de: Não foi encontrado no arquivo-tar + tar: Trabalho/GCES/external-secrets/bin: Não foi encontrado no arquivo-tar + tar: Saindo com status de falha em razão de erros anteriores + make: *** [Makefile:355: de] Erro 2 + + +### Solução e explicação: +Esse "número excessivo de argumentos" era sobre literalmente o nome do diretório "Área de Trabalho". A solução felizmente foi fácil: Colocar a pasta, nesta caso "GCES" em outro diretório como "Documentos" por exemplo. Depois que organizar isso, tente novamente rodar "make docker.build IMAGE_NAME=external-secrets IMAGE_TAG=latest" na pasta do external-secrets no novo diretório. + +--- + +## Problema 2: + +### ERRO: + ./hack/crd.generate.sh: linha 19: jq: comando não encontrado + make: *** [Makefile:136: generate] Erro 127 + + +### Solução e explicação: +Esse erro aconteceu antes da documentação desse repositório estar atualizada, então é improvável que ele volte a acontecer. Se você é sortudo e aconteceu com você, esse comando resolve rapidinho. Depois que ele executar, tente novamente rodar "make docker.build IMAGE_NAME=external-secrets IMAGE_TAG=latest" na pasta do external-secrets. + + sudo apt install jq \ No newline at end of file From 135bc27f7cef3aee35a2c3d24788de34b5703e57 Mon Sep 17 00:00:00 2001 From: Jefferson Franca Date: Wed, 27 Nov 2024 15:54:04 -0300 Subject: [PATCH 07/11] Add ajustes nos comandos ESO --- docs/2-Conectando/Local.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/2-Conectando/Local.md b/docs/2-Conectando/Local.md index 0ce86a7..7f3cffd 100644 --- a/docs/2-Conectando/Local.md +++ b/docs/2-Conectando/Local.md @@ -6,15 +6,21 @@ Aqui será mostrado como criar um POD e fazer a conexão com o ESO. Para fazer t ### Ver pods existentes no namespace "default" +Para executar o comando abaixo, é necessário estar no mesmo repositório onde o seu kubeconfig está. Após fazer essa verificação, execute o comando: + ```bash kubectl get pods --namespace default --kubeconfig kubeconfig ``` +O comando é usado para listar todos os pods no namespace "default" de um cluster Kubernetes. A opção --kubeconfig kubeconfig especifica o arquivo de configuração a ser usado para se conectar ao cluster. ### Criar o Pod definido no arquivo `pod.yaml` +Para executar o comando abaixo, certifique-se de que o caminho para o arquivo `pod.yml` especificado no comando está correto. + ```bash -kubectl apply -f config/pod.yaml --namespace default --kubeconfig kubeconfig +kubectl apply -f ../parte01/pod.yaml --namespace default --kubeconfig kubeconfig ``` +O comando cria ou atualiza os recursos definidos no arquivo `pod.yml` no namespace default, utilizando o arquivo de configuração kubeconfig para se conectar ao cluster. ### Testar acesso ao Postgres From 0ce33712ab276e0024555adadb794f5c7e474a0e Mon Sep 17 00:00:00 2001 From: F1703954 Caio Brandao Santos Date: Wed, 27 Nov 2024 17:04:42 -0300 Subject: [PATCH 08/11] Ajustes no README --- README.md | 18 ++++++++++-------- docs/1-Setup/3-Configurar_ESO.md | 2 ++ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index bbce414..54126c3 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ A documentação está organizada para fornecer uma base sólida, garantindo que É uma linguagem de programação criada pelo Google, muito utilizada para desenvolvimento backend, de microserviços, aplicativos CLI, entre outros. -O Go é utilizado tanto no Kubernetes, quanto no ESO, as duas principais tecnologias envolvidas no trabalho. +O Go é necessário no ESO para compilar, executar e contribuir com o código-fonte do projeto. ### Kubernetes @@ -22,25 +22,27 @@ Com o Kubernetes é possível orquestrar de forma mais fácil múltiplos contêi ### External Secrets Operator (ESO) -O ESO, é uma ferramenta que integra segredos (variáveis sensíveis) de provedores externos, como AWS, Google Cloud, entre outros, com um ambiente kubertenes. +O ESO é um operador Kubernetes que tem como função integrar secrets de sistemas externos, como o AWS Secrets Manager, HashiCorp Vault, etc. -Com ele, é possível, pegar senhas salvas em um ambiente AWS, por exemplo, e subir para um contêiner em um cluster Kubernetes. +O objetivo do ESO é sincronizar secrets sensíveis de APIs externas com o Kubernetes, provendo uma maneira mais fácil e segura de lidar com os eles. + +Imagine que você esteja lidando com dados sensíveis como um acesso ao banco de dados que esteja armazenado em um sistema externo. Com o ESO, esses dados são disponibilizados no Kubernetes como secrets, podendo ser consumidos pela aplicação. Além disso, caso as credenciais sejam atualizadas no AWS Secrets Manager, o ESO sincroniza as mudanças automaticamente com o Kubernetes. ## Estrutura do Repositório As pastas deste repositório foram organizadas de forma a facilitar o processo de configuração e uso do External Secrets Operator (ESO), permitindo que você siga os passos necessários de maneira sequencial e eficiente. A estrutura está dividida da seguinte forma: Setup: Contém os arquivos e instruções para a configuração inicial, incluindo a instalação do Kubernetes, ESO e demais pré-requisitos. -[SETUP](https://github.com/frmiza/GCES-ESO-Doc/tree/docs/eso_docs/docs/1-Setup) +[SETUP](https://github.com/FGA-GCES/ESO-Documentacao/tree/main/docs/1-Setup) -Conectando: Orienta sobre como integrar o ESO ao Kubernetes e outras plataformas, incluindo como conectar com clusters kubernets locais ou por meio de ferramentas de computação em nuvem como a AWS, Google cloud e Azure -[CONECTANDO](https://github.com/frmiza/GCES-ESO-Doc/tree/docs/eso_docs/docs/2-Conectando) +Conectando: Orienta sobre como integrar o ESO ao Kubernetes e outras plataformas, incluindo como conectar com clusters kubernetes locais ou por meio de ferramentas de computação em nuvem como a AWS, Google cloud e Azure +[CONECTANDO](https://github.com/FGA-GCES/ESO-Documentacao/tree/main/docs/2-Conectando) Links Externos: Uma coleção de recursos externos úteis, como artigos, fóruns e documentações oficiais, que podem auxiliar durante o desenvolvimento. -[LINKS](https://github.com/frmiza/GCES-ESO-Doc/tree/docs/eso_docs/docs/3-Links) +[LINKS](https://github.com/FGA-GCES/ESO-Documentacao/tree/main/docs/3-Links) Seção com resolução de problemas encontrados durante o setup do projeto: -[COMMON_ISSUES](https://github.com/frmiza/GCES-ESO-Doc/tree/97a27e5594df9a12945dda4746d4dabacd47b30f/eso_docs/docs/4-Common_issues) +[COMMON_ISSUES](https://github.com/FGA-GCES/ESO-Documentacao/tree/main/docs/4-Common_issues) ## Executar a documentação localmente diff --git a/docs/1-Setup/3-Configurar_ESO.md b/docs/1-Setup/3-Configurar_ESO.md index a79ca0a..cd41840 100644 --- a/docs/1-Setup/3-Configurar_ESO.md +++ b/docs/1-Setup/3-Configurar_ESO.md @@ -1,5 +1,7 @@ # Configurar o External Secrets Operator +Aqui será feita a configuração e utilização do ESO. Para conseguir acompanhar, é preciso ter seguido os passos de configuração inicial dos [pré requisitos](https://github.com/FGA-GCES/ESO-Documentacao/blob/main/docs/1-Setup/1-Pre_requisitos.md). + ## Clonar o repositório ```bash From eb40d04ba1c1966c09f8e2df561abc48a1cae323 Mon Sep 17 00:00:00 2001 From: CarolCoCe Date: Wed, 27 Nov 2024 22:48:51 -0300 Subject: [PATCH 09/11] colocando path no gitpages --- mkdocs.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index dcb88b2..845b6f9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -14,4 +14,5 @@ nav: - Links: - Links Importantes: ./3-Links/Links.md - Common_issues: - - Problema Específico Debian: ./4-Common_issues/Make_issue.md \ No newline at end of file + - Problema Específico Debian: ./4-Common_issues/Make_issue.md + - Problemas ao conectar o ESO: ./4-Common_issues/make-docker_issue.md \ No newline at end of file From e101031839490fa87c1b338ef4b0dae67fba44b2 Mon Sep 17 00:00:00 2001 From: luana Date: Wed, 27 Nov 2024 23:19:15 -0300 Subject: [PATCH 10/11] =?UTF-8?q?Adicionando=20conceitos=20restantes=20-?= =?UTF-8?q?=20Melhorar=20a=20Documenta=C3=A7=C3=A3o:=20Criar=20Gloss=C3=A1?= =?UTF-8?q?rio=20com=20os=20principais=20conceitos=20#16?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/pictures/Glossario2.png | Bin 0 -> 110183 bytes docs/0-Glossario/glossario.md | 86 ++++++++++++++++++++++++++++++++- 2 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 assets/pictures/Glossario2.png diff --git a/assets/pictures/Glossario2.png b/assets/pictures/Glossario2.png new file mode 100644 index 0000000000000000000000000000000000000000..69bd9d91b6a7b4bdd9027722ffac0550243e482a GIT binary patch literal 110183 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 TFhqhasQ@y%Yo=eT>l*(*MaqZ2 literal 0 HcmV?d00001 diff --git a/docs/0-Glossario/glossario.md b/docs/0-Glossario/glossario.md index 26e91e2..646386a 100644 --- a/docs/0-Glossario/glossario.md +++ b/docs/0-Glossario/glossario.md @@ -4,6 +4,21 @@ Está organizado em ordem alfabética! ### **Clusters** +- **O que é?** + É um conjunto de nós (computadores) que executam cargas de trabalho no Kubernetes, isto é, executar aplicações em container. + + É uma técnica que agrupa vários recursos computacionais em uma única unidade lógica. Esses recursos são conectados em rede e trabalham em conjunto para executar tarefas, processar dados e armazenar informações de maneira a melhorar o desempenho de aplicações, garantir alta disponibilidade, reduzir custos e aumentar a escalabilidade, já que os recursos podem ser compartilhados e distribuídos de maneira eficiente para atender às demandas da aplicação em tempo real. Cada computador é um “nó”, sendo que não há limites de quantos nós podem ser interligados. + + O cluster é o que proporciona a principal vantagem do Kubernetes: a capacidade de programar e executar containers em um conjunto de máquinas físicas, virtuais, on-premise ou na nuvem. Os containers do Kubernetes não estão vinculados a máquinas individuais. Na verdade, eles são abstraídos em todo o cluster. + + +- **Para que serve?** + O cluster tem a função de agrupar várias máquinas em um sistema único e eficiente, permitindo que aplicações distribuídas sejam executadas com maior desempenho e escalabilidade. No Kubernetes, ele facilita o gerenciamento de containers de forma a reduzir a complexidade, garantir alta disponibilidade e reduzir custos. O cluster Kubernetes geralmente possui um nó principal que gerencia os pods e o ambiente de execução do sistema. + +- **Links úteis:** + - [Introdução aos Clusters](https://kubernetes.io/docs/concepts/cluster-administration/) + - [O que é um cluster do Kubernetes?](https://aws.amazon.com/pt/what-is/kubernetes-cluster/) + - [Kubernetes Clusters: Everything You Need To Know](https://www.atatus.com/blog/kubernetes-clusters-everything-you-need-to-know/) --- @@ -14,14 +29,41 @@ Está organizado em ordem alfabética! --- ### **Docker** +- **O que é?** + Docker é uma plataforma aberta para o desenvolvimento, envio e execução de aplicações. Ele permite que você separe suas aplicações da infraestrutura, facilitando a entrega de software de forma rápida e eficiente, permitindo criar, compartilhar e executar aplicações e microsserviços containerizados. + +- **Para que serve?** + Possibilita a gestão da infraestrutura ,utilizando suas metodologias para envio, teste e implantação de código. Com isso, é possível reduzir significativamente o tempo entre a escrita do código e a sua execução em produção. + Ele simplifica processos complexos, como mapeamento de portas, preocupações com o sistema de arquivos e outras configurações padrão, permitindo que o foco seja na escrita de código. + Com ele, é possível desenvolver a aplicação e seus componentes de apoio usando containers. Neste contexto, o container se torna a unidade para distribuir e testar a aplicação. Quando estiver pronto, é possível implantar a aplicação no ambiente de produção, seja ele local, na nuvem ou híbrido. + +- **Links úteis:** + - [Documentação oficial](https://docs.docker.com/) --- ### **ESO - External Secrets Operator** +- **O que é?** + É um operador do Kubernetes que integra sistemas de gerenciamento de segredos externos (como AWS Secrets Manager, HashiCorp Vault, Google Secrets Manager, Azure Key Vault, IBM Cloud Secrets Manager, CyberArk Conjur, Pulumi ESC, entre outros). O operador lê informações das APIs externas e injeta automaticamente os valores nos segredos do Kubernetes, permitindo sincronizar dados confidenciais de provedores externos. + +- **Para que serve?** + Automatiza a sincronização de segredos de APIs externas com os clusters Kubernetes, garantindo segurança e eficiência na gestão de credenciais. + O ESO é composto por um conjunto de recursos personalizados de API — ExternalSecret, SecretStore e ClusterSecretStore — que fornecem uma abstração amigável para a API externa que armazena e gerencia o ciclo de vida dos segredos para você. Isso facilita a gestão de segredos no Kubernetes ao integrá-los de maneira automática com os provedores externos de segredos. + +- **Links úteis:** + - [Documentação oficial](https://external-secrets.io/) --- ### **Go** +- **O que é?** + Uma linguagem de programação de código aberto criada pelo Google, conhecida pela simplicidade, desempenho, clareza e concisão. +- **Para que serve?** + Usada no desenvolvimento de aplicativos, sistemas de backend e ferramentas, especialmente em ambientes de cloud e Kubernetes. + É uma linguagem que oferece mecanismos de concorrência que facilitam a escrita de programas capazes de aproveitar ao máximo máquinas com múltiplos núcleos e redes, enquanto seu sistema de tipos inovador permite a construção de programas flexíveis e modulares. Go compila rapidamente para código de máquina e, ao mesmo tempo, oferece conveniência com coleta de lixo e o poder da reflexão em tempo de execução. É uma linguagem compilada, estaticamente tipada, que tem a agilidade de linguagens dinamicamente tipadas e interpretadas. +- **Links úteis:** + - [Documentação oficial](https://go.dev/doc/) + --- @@ -70,10 +112,37 @@ Está organizado em ordem alfabética! --- ### **Kind** +- **O que é?** + É uma ferramenta para executar clusters Kubernetes locais usando contêineres Docker como "nós" do cluster. +- **Para que serve?** + O Kind foi projetado inicialmente para testar o próprio Kubernetes, mas também pode ser utilizado para desenvolvimento local ou integração contínua (CI). Ele permite criar clusters Kubernetes de forma simples em ambientes locais, facilitando testes e desenvolvimento sem a necessidade de infraestrutura complexa. + +- **Links úteis:** + - [Site oficial](https://kind.sigs.k8s.io/) + +
+ +
+

Imagem 2 - kind - Kubernetes no Docker

+![pods](/assets/pictures/Glossario2.png) + +

Fonte: [Kind](https://kind.sigs.k8s.io/docs/design/initial/)

+ +
+ +
--- ### **Kubectl** +- **O que é?** + O kubectl é uma ferramenta de linha de comando para se comunicar com o plano de controle de um cluster Kubernetes, utilizando a API do Kubernetes. +- **Para que serve?** + Executa operações no Kubernetes, como criar pods e monitorar o status do cluster. + Permite que você interaja com o cluster Kubernetes, realizando operações como criação, gerenciamento e visualização de recursos. Ele busca um arquivo de configuração chamado config no diretório $HOME/.kube, que contém as informações sobre como se conectar ao cluster. + +- **Links úteis:** + - [Documentação oficial - Kubernetes](https://kubernetes.io/docs/reference/kubectl/) --- @@ -89,11 +158,26 @@ Está organizado em ordem alfabética! --- ### **Nginx** +- **O que é?** + É um servidor web HTTP de código aberto que também pode funcionar como proxy reverso, balanceador de carga, cache de conteúdo, servidor proxy TCP/UDP e servidor proxy de e-mail. É amplamente utilizado devido à sua alta performance e capacidade de gerenciar grandes volumes de tráfego. + +- **Para que serve?** + O Nginx é utilizado para servir conteúdos web, gerenciar tráfego de rede e balancear a carga entre servidores, além de atuar como proxy reverso e cache de conteúdo. Ele pode ser usado para melhorar a escalabilidade e a performance de aplicações web, distribuindo eficientemente as requisições entre múltiplos servidores. + Possui um processo principal que gerencia a configuração e vários processos de trabalho que fazem o processamento das requisições. Ele distribui as requisições de forma eficiente, e o número de processos de trabalho pode ser ajustado de acordo com o número de núcleos do processador. + +- **Links úteis:** + - [Documentação oficial](https://nginx.org/en/docs/) --- ### **Lint** +- **O que é?** + Um processo de análise estática do código para identificar erros, problemas de estilo e inconformidades com as melhores práticas de codificação. +- **Para que serve?** + Serve para garantir a qualidade, consistência e a conformidade do código com padrões predefinidos, ajudando a identificar erros de sintaxe, problemas de formatação e más práticas de desenvolvimento antes da execução do código. Ele contribui para a manutenção de um código limpo, legível e eficiente. +- **Links úteis:** + - [Introdução ao linting](https://eslint.org/) --- @@ -109,7 +193,7 @@ Está organizado em ordem alfabética!
-

Imagem 2 - Organização dos Pods em um cluster

+

Imagem 3 - Organização dos Pods em um cluster

![pods](/assets/pictures/Glossario1.png) From a85df58b0762884a5ad48022e92e650586991fc2 Mon Sep 17 00:00:00 2001 From: suzane duarte Date: Thu, 28 Nov 2024 11:18:34 -0300 Subject: [PATCH 11/11] fix broken images and implement collapsible sections in the glossary --- docs/0-Glossario/glossario.md | 304 +++++++++--------- .../assets}/pictures/ESO_make_issue_1.png | Bin .../assets}/pictures/ESO_make_issue_2.png | Bin .../assets}/pictures/ESO_make_issue_3.png | Bin .../assets}/pictures/ESO_make_issue_4.png | Bin .../assets}/pictures/ESO_make_issue_5.png | Bin .../assets}/pictures/ESO_make_issue_6.png | Bin .../assets}/pictures/ESO_make_issue_7.png | Bin .../assets}/pictures/ESO_make_issue_8.png | Bin .../assets}/pictures/Glossario1.png | Bin .../assets}/pictures/Glossario2.png | Bin mkdocs.yml | 9 +- 12 files changed, 156 insertions(+), 157 deletions(-) rename {assets => docs/assets}/pictures/ESO_make_issue_1.png (100%) rename {assets => docs/assets}/pictures/ESO_make_issue_2.png (100%) rename {assets => docs/assets}/pictures/ESO_make_issue_3.png (100%) rename {assets => docs/assets}/pictures/ESO_make_issue_4.png (100%) rename {assets => docs/assets}/pictures/ESO_make_issue_5.png (100%) rename {assets => docs/assets}/pictures/ESO_make_issue_6.png (100%) rename {assets => docs/assets}/pictures/ESO_make_issue_7.png (100%) rename {assets => docs/assets}/pictures/ESO_make_issue_8.png (100%) rename {assets => docs/assets}/pictures/Glossario1.png (100%) rename {assets => docs/assets}/pictures/Glossario2.png (100%) diff --git a/docs/0-Glossario/glossario.md b/docs/0-Glossario/glossario.md index 646386a..9be2dba 100644 --- a/docs/0-Glossario/glossario.md +++ b/docs/0-Glossario/glossario.md @@ -1,234 +1,226 @@ # Glossário de Tecnologias Relacionadas ao ESO. -Está organizado em ordem alfabética! +Este Glossário está organizado em ordem alfabética. +--- -### **Clusters** -- **O que é?** - É um conjunto de nós (computadores) que executam cargas de trabalho no Kubernetes, isto é, executar aplicações em container. - - É uma técnica que agrupa vários recursos computacionais em uma única unidade lógica. Esses recursos são conectados em rede e trabalham em conjunto para executar tarefas, processar dados e armazenar informações de maneira a melhorar o desempenho de aplicações, garantir alta disponibilidade, reduzir custos e aumentar a escalabilidade, já que os recursos podem ser compartilhados e distribuídos de maneira eficiente para atender às demandas da aplicação em tempo real. Cada computador é um “nó”, sendo que não há limites de quantos nós podem ser interligados. +??? note "Cluster" - O cluster é o que proporciona a principal vantagem do Kubernetes: a capacidade de programar e executar containers em um conjunto de máquinas físicas, virtuais, on-premise ou na nuvem. Os containers do Kubernetes não estão vinculados a máquinas individuais. Na verdade, eles são abstraídos em todo o cluster. + - **O que é?** + + É um conjunto de nós (computadores) que executam cargas de trabalho no Kubernetes, isto é, executar aplicações em container. + É uma técnica que agrupa vários recursos computacionais em uma única unidade lógica. Esses recursos são conectados em rede e trabalham em conjunto para executar tarefas, processar dados e armazenar informações de maneira a melhorar o desempenho de aplicações, garantir alta disponibilidade, reduzir custos e aumentar a escalabilidade, já que os recursos podem ser compartilhados e distribuídos de maneira eficiente para atender às demandas da aplicação em tempo real. Cada computador é um “nó”, sendo que não há limites de quantos nós podem ser interligados. -- **Para que serve?** - O cluster tem a função de agrupar várias máquinas em um sistema único e eficiente, permitindo que aplicações distribuídas sejam executadas com maior desempenho e escalabilidade. No Kubernetes, ele facilita o gerenciamento de containers de forma a reduzir a complexidade, garantir alta disponibilidade e reduzir custos. O cluster Kubernetes geralmente possui um nó principal que gerencia os pods e o ambiente de execução do sistema. + O cluster é o que proporciona a principal vantagem do Kubernetes: a capacidade de programar e executar containers em um conjunto de máquinas físicas, virtuais, on-premise ou na nuvem. Os containers do Kubernetes não estão vinculados a máquinas individuais. Na verdade, eles são abstraídos em todo o cluster. -- **Links úteis:** - - [Introdução aos Clusters](https://kubernetes.io/docs/concepts/cluster-administration/) - - [O que é um cluster do Kubernetes?](https://aws.amazon.com/pt/what-is/kubernetes-cluster/) - - [Kubernetes Clusters: Everything You Need To Know](https://www.atatus.com/blog/kubernetes-clusters-everything-you-need-to-know/) ---- + - **Para que serve?** + O cluster tem a função de agrupar várias máquinas em um sistema único e eficiente, permitindo que aplicações distribuídas sejam executadas com maior desempenho e escalabilidade. No Kubernetes, ele facilita o gerenciamento de containers de forma a reduzir a complexidade, garantir alta disponibilidade e reduzir custos. O cluster Kubernetes geralmente possui um nó principal que gerencia os pods e o ambiente de execução do sistema. -### **Developments** -- **O que é?** - Nesse contexto, é uma forma de se fazer um conjunto de Pods. Isso ainda dentro de um Nó. + - **Links úteis:** + - [Introdução aos Clusters](https://kubernetes.io/docs/concepts/cluster-administration/) + - [O que é um cluster do Kubernetes?](https://aws.amazon.com/pt/what-is/kubernetes-cluster/) + - [Kubernetes Clusters: Everything You Need To Know](https://www.atatus.com/blog/kubernetes-clusters-everything-you-need-to-know/) --- -### **Docker** -- **O que é?** - Docker é uma plataforma aberta para o desenvolvimento, envio e execução de aplicações. Ele permite que você separe suas aplicações da infraestrutura, facilitando a entrega de software de forma rápida e eficiente, permitindo criar, compartilhar e executar aplicações e microsserviços containerizados. +??? note "Docker" + + - **O que é?** + Docker é uma plataforma aberta para o desenvolvimento, envio e execução de aplicações. Ele permite que você separe suas aplicações da infraestrutura, facilitando a entrega de software de forma rápida e eficiente, permitindo criar, compartilhar e executar aplicações e microsserviços containerizados. -- **Para que serve?** - Possibilita a gestão da infraestrutura ,utilizando suas metodologias para envio, teste e implantação de código. Com isso, é possível reduzir significativamente o tempo entre a escrita do código e a sua execução em produção. - Ele simplifica processos complexos, como mapeamento de portas, preocupações com o sistema de arquivos e outras configurações padrão, permitindo que o foco seja na escrita de código. - Com ele, é possível desenvolver a aplicação e seus componentes de apoio usando containers. Neste contexto, o container se torna a unidade para distribuir e testar a aplicação. Quando estiver pronto, é possível implantar a aplicação no ambiente de produção, seja ele local, na nuvem ou híbrido. + - **Para que serve?** + Possibilita a gestão da infraestrutura ,utilizando suas metodologias para envio, teste e implantação de código. Com isso, é possível reduzir significativamente o tempo entre a escrita do código e a sua execução em produção. + Ele simplifica processos complexos, como mapeamento de portas, preocupações com o sistema de arquivos e outras configurações padrão, permitindo que o foco seja na escrita de código. + Com ele, é possível desenvolver a aplicação e seus componentes de apoio usando containers. Neste contexto, o container se torna a unidade para distribuir e testar a aplicação. Quando estiver pronto, é possível implantar a aplicação no ambiente de produção, seja ele local, na nuvem ou híbrido. -- **Links úteis:** - - [Documentação oficial](https://docs.docker.com/) + - **Links úteis:** + - [Documentação oficial](https://docs.docker.com/) --- -### **ESO - External Secrets Operator** -- **O que é?** - É um operador do Kubernetes que integra sistemas de gerenciamento de segredos externos (como AWS Secrets Manager, HashiCorp Vault, Google Secrets Manager, Azure Key Vault, IBM Cloud Secrets Manager, CyberArk Conjur, Pulumi ESC, entre outros). O operador lê informações das APIs externas e injeta automaticamente os valores nos segredos do Kubernetes, permitindo sincronizar dados confidenciais de provedores externos. +??? note "ESO - External Secrets Operator" -- **Para que serve?** - Automatiza a sincronização de segredos de APIs externas com os clusters Kubernetes, garantindo segurança e eficiência na gestão de credenciais. - O ESO é composto por um conjunto de recursos personalizados de API — ExternalSecret, SecretStore e ClusterSecretStore — que fornecem uma abstração amigável para a API externa que armazena e gerencia o ciclo de vida dos segredos para você. Isso facilita a gestão de segredos no Kubernetes ao integrá-los de maneira automática com os provedores externos de segredos. + - **O que é?** + É um operador do Kubernetes que integra sistemas de gerenciamento de segredos externos (como AWS Secrets Manager, HashiCorp Vault, Google Secrets Manager, Azure Key Vault, IBM Cloud Secrets Manager, CyberArk Conjur, Pulumi ESC, entre outros). O operador lê informações das APIs externas e injeta automaticamente os valores nos segredos do Kubernetes, permitindo sincronizar dados confidenciais de provedores externos. -- **Links úteis:** - - [Documentação oficial](https://external-secrets.io/) + - **Para que serve?** + Automatiza a sincronização de segredos de APIs externas com os clusters Kubernetes, garantindo segurança e eficiência na gestão de credenciais. + O ESO é composto por um conjunto de recursos personalizados de API — ExternalSecret, SecretStore e ClusterSecretStore — que fornecem uma abstração amigável para a API externa que armazena e gerencia o ciclo de vida dos segredos para você. Isso facilita a gestão de segredos no Kubernetes ao integrá-los de maneira automática com os provedores externos de segredos. + + - **Links úteis:** + - [Documentação oficial](https://external-secrets.io/) --- -### **Go** -- **O que é?** - Uma linguagem de programação de código aberto criada pelo Google, conhecida pela simplicidade, desempenho, clareza e concisão. -- **Para que serve?** - Usada no desenvolvimento de aplicativos, sistemas de backend e ferramentas, especialmente em ambientes de cloud e Kubernetes. - É uma linguagem que oferece mecanismos de concorrência que facilitam a escrita de programas capazes de aproveitar ao máximo máquinas com múltiplos núcleos e redes, enquanto seu sistema de tipos inovador permite a construção de programas flexíveis e modulares. Go compila rapidamente para código de máquina e, ao mesmo tempo, oferece conveniência com coleta de lixo e o poder da reflexão em tempo de execução. É uma linguagem compilada, estaticamente tipada, que tem a agilidade de linguagens dinamicamente tipadas e interpretadas. -- **Links úteis:** - - [Documentação oficial](https://go.dev/doc/) +??? note "Go" + - **O que é?** + Uma linguagem de programação de código aberto criada pelo Google, conhecida pela simplicidade, desempenho, clareza e concisão. + - **Para que serve?** + Usada no desenvolvimento de aplicativos, sistemas de backend e ferramentas, especialmente em ambientes de cloud e Kubernetes. + É uma linguagem que oferece mecanismos de concorrência que facilitam a escrita de programas capazes de aproveitar ao máximo máquinas com múltiplos núcleos e redes, enquanto seu sistema de tipos inovador permite a construção de programas flexíveis e modulares. Go compila rapidamente para código de máquina e, ao mesmo tempo, oferece conveniência com coleta de lixo e o poder da reflexão em tempo de execução. É uma linguagem compilada, estaticamente tipada, que tem a agilidade de linguagens dinamicamente tipadas e interpretadas. + - **Links úteis:** + - [Documentação oficial](https://go.dev/doc/) --- -### **Helm** -- **O que é?** - Um gerenciador de pacotes para Kubernetes que facilita a implantação e o gerenciamento de aplicações usando templates chamados "charts". -- **Para que serve?** - Simplifica a configuração, instalação e atualização de aplicativos no Kubernetes. -- **Links úteis:** - - [Documentação oficial](https://helm.sh/docs/) - - [GitHub do projeto](https://github.com/helm/helm) +??? note "Helm" ---- -### **HPA** -- **O que é?** - Horizontal Pod Autoscaler (HPA) -- **Para que serve?** - É usado para controlar a quantidade de Pods que há em um Deployment. Por exemplo, se o uso de CPU estiver muito alto, o HPA aumentaria a quantidade de pods. Também é possível utilizar o Vertical Pod Autoscaler (VPA), que aumentaria a quantidade de recursos de cada pod em vez de aumentar a quantidade de Pod. - - Fonte: [Leo Michalski](https://github.com/leomichalski/kubernetes-para-devs/blob/main/README.md) + - **O que é?** + Um gerenciador de pacotes para Kubernetes que facilita a implantação e o gerenciamento de aplicações usando templates chamados "charts". + - **Para que serve?** + Simplifica a configuração, instalação e atualização de aplicativos no Kubernetes. + - **Links úteis:** + - [Documentação oficial](https://helm.sh/docs/) + - [GitHub do projeto](https://github.com/helm/helm) --- -### **Ingress** -- **O que é?** - Em um cluster Kubernetes no qual todas as requisições chegam no mesmo IP e na mesma porta, os Ingresses são responsáveis por direcionar (de acordo com o DNS e o endpoint de cada requisição) essas requisições para os Services adequados. Também pode ser usado para outras finalidades. - - Fonte: [Leo Michalski](https://github.com/leomichalski/kubernetes-para-devs/blob/main/README.md) +??? note "HPA" -- **Para que serve?** - Oferece um ponto de entrada único para rotear tráfego para serviços internos. -- **Links úteis:** - - [Sobre Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) + - **O que é?** + Horizontal Pod Autoscaler (HPA) + - **Para que serve?** + É usado para controlar a quantidade de Pods que há em um Deployment. Por exemplo, se o uso de CPU estiver muito alto, o HPA aumentaria a quantidade de pods. Também é possível utilizar o Vertical Pod Autoscaler (VPA), que aumentaria a quantidade de recursos de cada pod em vez de aumentar a quantidade de Pod. + + Fonte: [Leo Michalski](https://github.com/leomichalski/kubernetes-para-devs/blob/main/README.md) --- -### **Issuer** -- **O que é?** - Um componente em ferramentas como o Cert-Manager para emitir certificados. -- **Para que serve?** - Gerencia a emissão de certificados TLS automáticos para serviços em Kubernetes.Ele que emite o certificado SSL para os Ingresses poderem criptografar (com HTTPS) as requisições que entram e saem, por exemplo. +??? note "Ingress" -- **Links úteis:** - - [Documentação do Cert-Manager](https://cert-manager.io/docs/) + - **O que é?** + Em um cluster Kubernetes no qual todas as requisições chegam no mesmo IP e na mesma porta, os Ingresses são responsáveis por direcionar (de acordo com o DNS e o endpoint de cada requisição) essas requisições para os Services adequados. Também pode ser usado para outras finalidades. + + Fonte: [Leo Michalski](https://github.com/leomichalski/kubernetes-para-devs/blob/main/README.md) + + - **Para que serve?** + Oferece um ponto de entrada único para rotear tráfego para serviços internos. + - **Links úteis:** + - [Sobre Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) --- -### **Kind** -- **O que é?** - É uma ferramenta para executar clusters Kubernetes locais usando contêineres Docker como "nós" do cluster. -- **Para que serve?** - O Kind foi projetado inicialmente para testar o próprio Kubernetes, mas também pode ser utilizado para desenvolvimento local ou integração contínua (CI). Ele permite criar clusters Kubernetes de forma simples em ambientes locais, facilitando testes e desenvolvimento sem a necessidade de infraestrutura complexa. - -- **Links úteis:** - - [Site oficial](https://kind.sigs.k8s.io/) +??? note "Issuer" + + - **O que é?** + Um componente em ferramentas como o Cert-Manager para emitir certificados. + - **Para que serve?** + Gerencia a emissão de certificados TLS automáticos para serviços em Kubernetes.Ele que emite o certificado SSL para os Ingresses poderem criptografar (com HTTPS) as requisições que entram e saem, por exemplo. -
+ - **Links úteis:** + - [Documentação do Cert-Manager](https://cert-manager.io/docs/) -
-

Imagem 2 - kind - Kubernetes no Docker

+--- + +??? note "Kind" -![pods](/assets/pictures/Glossario2.png) + - **O que é?** + É uma ferramenta para executar clusters Kubernetes locais usando contêineres Docker como "nós" do cluster. + - **Para que serve?** + O Kind foi projetado inicialmente para testar o próprio Kubernetes, mas também pode ser utilizado para desenvolvimento local ou integração contínua (CI). Ele permite criar clusters Kubernetes de forma simples em ambientes locais, facilitando testes e desenvolvimento sem a necessidade de infraestrutura complexa. + + - **Links úteis:** + - [Site oficial](https://kind.sigs.k8s.io/) -

Fonte: [Kind](https://kind.sigs.k8s.io/docs/design/initial/)

+

Imagem 2 - kind - Kubernetes no Docker

-
+ ![pods](../assets/pictures/Glossario2.png) + +

Fonte: Kind

-
--- -### **Kubectl** -- **O que é?** - O kubectl é uma ferramenta de linha de comando para se comunicar com o plano de controle de um cluster Kubernetes, utilizando a API do Kubernetes. -- **Para que serve?** - Executa operações no Kubernetes, como criar pods e monitorar o status do cluster. - Permite que você interaja com o cluster Kubernetes, realizando operações como criação, gerenciamento e visualização de recursos. Ele busca um arquivo de configuração chamado config no diretório $HOME/.kube, que contém as informações sobre como se conectar ao cluster. +??? note "Kubectl" + + - **O que é?** + O kubectl é uma ferramenta de linha de comando para se comunicar com o plano de controle de um cluster Kubernetes, utilizando a API do Kubernetes. + - **Para que serve?** + Executa operações no Kubernetes, como criar pods e monitorar o status do cluster. + Permite que você interaja com o cluster Kubernetes, realizando operações como criação, gerenciamento e visualização de recursos. Ele busca um arquivo de configuração chamado config no diretório $HOME/.kube, que contém as informações sobre como se conectar ao cluster. -- **Links úteis:** - - [Documentação oficial - Kubernetes](https://kubernetes.io/docs/reference/kubectl/) + - **Links úteis:** + - [Documentação oficial - Kubernetes](https://kubernetes.io/docs/reference/kubectl/) --- -### **Kubernetes** -- **O que é?** - Uma plataforma de orquestração de contêineres que automatiza a implantação, escala e gerenciamento de aplicativos. É Open Source. -- **Para que serve?** - Garante alta disponibilidade, escalabilidade e monitoramento de aplicações em contêineres. -- **Links úteis:** - - [Documentação oficial](https://kubernetes.io/docs/) - - [GitHub do projeto](https://github.com/kubernetes/kubernetes) +??? note "Kubernetes" + - **O que é?** + Uma plataforma de orquestração de contêineres que automatiza a implantação, escala e gerenciamento de aplicativos. É Open Source. + - **Para que serve?** + Garante alta disponibilidade, escalabilidade e monitoramento de aplicações em contêineres. + - **Links úteis:** + - [Documentação oficial](https://kubernetes.io/docs/) + - [GitHub do projeto](https://github.com/kubernetes/kubernetes) --- -### **Nginx** -- **O que é?** - É um servidor web HTTP de código aberto que também pode funcionar como proxy reverso, balanceador de carga, cache de conteúdo, servidor proxy TCP/UDP e servidor proxy de e-mail. É amplamente utilizado devido à sua alta performance e capacidade de gerenciar grandes volumes de tráfego. +??? note "Nginx" + - **O que é?** + É um servidor web HTTP de código aberto que também pode funcionar como proxy reverso, balanceador de carga, cache de conteúdo, servidor proxy TCP/UDP e servidor proxy de e-mail. É amplamente utilizado devido à sua alta performance e capacidade de gerenciar grandes volumes de tráfego. -- **Para que serve?** - O Nginx é utilizado para servir conteúdos web, gerenciar tráfego de rede e balancear a carga entre servidores, além de atuar como proxy reverso e cache de conteúdo. Ele pode ser usado para melhorar a escalabilidade e a performance de aplicações web, distribuindo eficientemente as requisições entre múltiplos servidores. - Possui um processo principal que gerencia a configuração e vários processos de trabalho que fazem o processamento das requisições. Ele distribui as requisições de forma eficiente, e o número de processos de trabalho pode ser ajustado de acordo com o número de núcleos do processador. + - **Para que serve?** + O Nginx é utilizado para servir conteúdos web, gerenciar tráfego de rede e balancear a carga entre servidores, além de atuar como proxy reverso e cache de conteúdo. Ele pode ser usado para melhorar a escalabilidade e a performance de aplicações web, distribuindo eficientemente as requisições entre múltiplos servidores. + Possui um processo principal que gerencia a configuração e vários processos de trabalho que fazem o processamento das requisições. Ele distribui as requisições de forma eficiente, e o número de processos de trabalho pode ser ajustado de acordo com o número de núcleos do processador. -- **Links úteis:** - - [Documentação oficial](https://nginx.org/en/docs/) + - **Links úteis:** + - [Documentação oficial](https://nginx.org/en/docs/) --- -### **Lint** -- **O que é?** - Um processo de análise estática do código para identificar erros, problemas de estilo e inconformidades com as melhores práticas de codificação. -- **Para que serve?** - Serve para garantir a qualidade, consistência e a conformidade do código com padrões predefinidos, ajudando a identificar erros de sintaxe, problemas de formatação e más práticas de desenvolvimento antes da execução do código. Ele contribui para a manutenção de um código limpo, legível e eficiente. -- **Links úteis:** - - [Introdução ao linting](https://eslint.org/) +??? note "Lint" + - **O que é?** + Um processo de análise estática do código para identificar erros, problemas de estilo e inconformidades com as melhores práticas de codificação. + - **Para que serve?** + Serve para garantir a qualidade, consistência e a conformidade do código com padrões predefinidos, ajudando a identificar erros de sintaxe, problemas de formatação e más práticas de desenvolvimento antes da execução do código. Ele contribui para a manutenção de um código limpo, legível e eficiente. + - **Links úteis:** + - [Introdução ao linting](https://eslint.org/) --- -### **Pods** -- **O que é?** - A menor unidade de computação em Kubernetes, que agrupa um ou mais contêineres. -- **Para que serve?** - Gerencia contêineres que compartilham recursos e atuam como uma única entidade em um cluster. -- **Links úteis:** - - [Sobre Pods](https://kubernetes.io/docs/concepts/workloads/pods/) - - -
- -
-

Imagem 3 - Organização dos Pods em um cluster

- -![pods](/assets/pictures/Glossario1.png) +??? note "Pods" + - **O que é?** + A menor unidade de computação em Kubernetes, que agrupa um ou mais contêineres. + - **Para que serve?** + Gerencia contêineres que compartilham recursos e atuam como uma única entidade em um cluster. + - **Links úteis:** + - [Sobre Pods](https://kubernetes.io/docs/concepts/workloads/pods/) -

Fonte: [Armosec blog](https://www.armosec.io/blog/kubernetes-security-best-practices//)

+

Imagem 3 - Organização dos Pods em um cluster

-
+ ![pods](../assets/pictures/Glossario1.png) -
+

Fonte: [Armosec blog](https://www.armosec.io/blog/kubernetes-security-best-practices//)

--- -### **Secrets** -- **O que é?** -São os dados sensíveis que queremos armazenar, gerenciar e utilizar usando o ESO. +??? note "Secrets" + - **O que é?** + São os dados sensíveis que queremos armazenar, gerenciar e utilizar usando o ESO. --- -### **Tilt** -- **O que é?** - Uma ferramenta que ajuda no desenvolvimento local para Kubernetes, permitindo visualizar e gerenciar rapidamente alterações em aplicativos. -- **Para que serve?** - Facilita o fluxo de desenvolvimento em Kubernetes, atualizando o estado do cluster automaticamente com base nas mudanças no código. Ele tem uma interface e automatiza muitas coisas que teríamos que fazer manualmente também! -- **Links úteis:** - - [Site oficial](https://tilt.dev/) - - [Documentação](https://docs.tilt.dev/) +??? note "Tilt" + - **O que é?** + Uma ferramenta que ajuda no desenvolvimento local para Kubernetes, permitindo visualizar e gerenciar rapidamente alterações em aplicativos. + - **Para que serve?** + Facilita o fluxo de desenvolvimento em Kubernetes, atualizando o estado do cluster automaticamente com base nas mudanças no código. Ele tem uma interface e automatiza muitas coisas que teríamos que fazer manualmente também! + - **Links úteis:** + - [Site oficial](https://tilt.dev/) + - [Documentação](https://docs.tilt.dev/) --- -### **yq** -- **O que é?** - Uma ferramenta que vamos instalar para manipular arquivos YAML em linha de comando, semelhante ao jq para JSON. -- **Para que serve?** - Edita, transforma e consulta arquivos YAML. São nos arquivos YAML que vamos escrever como vai ser a configuração das aplicações, serviços ou clusters. -- **Links úteis:** - - [GitHub do yq](https://github.com/mikefarah/yq) +??? note "yq" + - **O que é?** + Uma ferramenta que vamos instalar para manipular arquivos YAML em linha de comando, semelhante ao jq para JSON. + - **Para que serve?** + Edita, transforma e consulta arquivos YAML. São nos arquivos YAML que vamos escrever como vai ser a configuração das aplicações, serviços ou clusters. + - **Links úteis:** + - [GitHub do yq](https://github.com/mikefarah/yq) --- diff --git a/assets/pictures/ESO_make_issue_1.png b/docs/assets/pictures/ESO_make_issue_1.png similarity index 100% rename from assets/pictures/ESO_make_issue_1.png rename to docs/assets/pictures/ESO_make_issue_1.png diff --git a/assets/pictures/ESO_make_issue_2.png b/docs/assets/pictures/ESO_make_issue_2.png similarity index 100% rename from assets/pictures/ESO_make_issue_2.png rename to docs/assets/pictures/ESO_make_issue_2.png diff --git a/assets/pictures/ESO_make_issue_3.png b/docs/assets/pictures/ESO_make_issue_3.png similarity index 100% rename from assets/pictures/ESO_make_issue_3.png rename to docs/assets/pictures/ESO_make_issue_3.png diff --git a/assets/pictures/ESO_make_issue_4.png b/docs/assets/pictures/ESO_make_issue_4.png similarity index 100% rename from assets/pictures/ESO_make_issue_4.png rename to docs/assets/pictures/ESO_make_issue_4.png diff --git a/assets/pictures/ESO_make_issue_5.png b/docs/assets/pictures/ESO_make_issue_5.png similarity index 100% rename from assets/pictures/ESO_make_issue_5.png rename to docs/assets/pictures/ESO_make_issue_5.png diff --git a/assets/pictures/ESO_make_issue_6.png b/docs/assets/pictures/ESO_make_issue_6.png similarity index 100% rename from assets/pictures/ESO_make_issue_6.png rename to docs/assets/pictures/ESO_make_issue_6.png diff --git a/assets/pictures/ESO_make_issue_7.png b/docs/assets/pictures/ESO_make_issue_7.png similarity index 100% rename from assets/pictures/ESO_make_issue_7.png rename to docs/assets/pictures/ESO_make_issue_7.png diff --git a/assets/pictures/ESO_make_issue_8.png b/docs/assets/pictures/ESO_make_issue_8.png similarity index 100% rename from assets/pictures/ESO_make_issue_8.png rename to docs/assets/pictures/ESO_make_issue_8.png diff --git a/assets/pictures/Glossario1.png b/docs/assets/pictures/Glossario1.png similarity index 100% rename from assets/pictures/Glossario1.png rename to docs/assets/pictures/Glossario1.png diff --git a/assets/pictures/Glossario2.png b/docs/assets/pictures/Glossario2.png similarity index 100% rename from assets/pictures/Glossario2.png rename to docs/assets/pictures/Glossario2.png diff --git a/mkdocs.yml b/mkdocs.yml index ea56d64..4f1ae18 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -4,6 +4,13 @@ site_url: https://eso-docs.github.io/ESO-Documentacao theme: name: material +plugins: + - search + +markdown_extensions: + - admonition + - pymdownx.details + nav: - Glossário: ./0-Glossario/glossario.md - Setup: @@ -15,4 +22,4 @@ nav: - Links: - Links Importantes: ./3-Links/Links.md - Common_issues: - - Problema Específico Debian: ./4-Common_issues/Make_issue.md \ No newline at end of file + - Problema Específico Debian: ./4-Common_issues/Make_issue.md