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)
+
+ 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. 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. Versão mínima: Go 1.20 ou superior. Versão recomendada: Go 1.23.3 Acesse o site oficial ou use o comando abaixo: Edite o arquivo `~/.profile` ou `/etc/profile` e adicione: Ou execute diretamente no terminal para a sessão atual: 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. Quaisquer dúvidas ou problemas com a instalação do Go, consulte a documentação oficial. O Helm é um gerenciador de pacotes para Kubernetes, a plataforma que automatiza a implantação, escalonamento e gerenciamento de aplicativos em contêineres. 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. Versão recomendada: Helm 3 (versão mais recente do Helm 3). Para outras opções de instalação e mais detalhes, consulte o guia oficial de instalação do Helm. O yq é uma ferramenta de linha de comando para ler, manipular e escrever arquivos YAML, amplamente utilizados para configurações. No projeto External Secrets Operator, o yq é utilizado para automatizar a edição de arquivos de configuração YAML, facilitando ajustes e implementações. Versão recomendada: yq v4.44.3 ou superior. Para outras opções de instalação e mais detalhes, consulte o repositório oficial do yq. O jq é uma ferramenta de linha de comando para processar e manipular dados em formato JSON. No projeto External Secrets Operator, o jq é essencial para trabalhar com dados JSON, permitindo filtrar e transformar informações de forma eficiente. Versão recomendada: jq 1.6 ou superior. Para outras opções de instalação e mais detalhes, consulte o site oficial do jq. 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. 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. Acesse o site oficial e baixe o Docker Desktop: Para outras opções de instalação e mais detalhes, consulte a documentação oficial do Docker. 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 Se o comando funcionar sem erros, a configuração foi bem-sucedida. O kubectl é a ferramenta de linha de comando para gerenciar clusters Kubernetes. Permite executar comandos no cluster, gerenciar recursos e depurar aplicações. 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. Versão compatível com a versão do Kubernetes instalada (geralmente a versão estável mais recente). Para outras opções de instalação e mais detalhes, consulte a documentação oficial do kubectl. 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. 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. Versão mais recente disponível do ctlptl.Sobre o Golang
+ O que é Go?
+ Por que é necessário Go?
+ Instalação do Golang
+ Versão Necessária
+ 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:
+
+ 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`:
+
+ export PATH=$PATH:/usr/local/go/bin
+ 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.
+ 3. Verificar a instalação do Go e se está na versão suportada:
+
+go version
Sobre o Helm
+ O que é o Helm?
+ Por que é necessário o Helm?
+ Instalação do Helm
+ Versão Necessária
+ 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
Sobre o yq
+ O que é o yq?
+ Por que é necessário o yq?
+ Instalação do yq
+ Versão Necessária
+ 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
Sobre o jq
+ O que é o jq?
+ Por que é necessário o jq?
+ Instalação do jq
+ Versão Necessária
+ 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
Sobre o Docker
+ O que é o Docker?
+ Por que é necessário o Docker?
+ 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:
+ 2. Instalar o Docker Desktop:
+
+
+ Docker.dmg
.Applications
.Applications
.3. Verificar a instalação do Docker:
+
+ docker --version
Configuração necessária no Docker
+ Configurar Docker para Uso sem Root
+ 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
Sobre o kubectl
+ O que é o kubectl?
+ Por que é necessário o kubectl?
+ Instalação do kubectl
+ Versão Necessária
+ 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
Sobre o ctlptl
+ O que é o ctlptl?
+ Por que é necessário o ctlptl?
+ Instalação do ctlptl
+ Versão Necessária
+ 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
O Kind (Kubernetes in Docker) é uma ferramenta para executar clusters Kubernetes locais usando contêineres Docker como nós do cluster.
+docker run -d --restart=always -p "5000:5000" --name kind-registry registry:2
+ ctlptl create cluster kind --registry=kind-registry
+ Isso criará um cluster Kind configurado para usar o registro local em localhost:5000
.
kubectl cluster-info --context kind-kind
+ ctlptl get clusters
+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.
+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.
+curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh | bash
+ tilt version
+ brew install tilt-dev/tap/tilt
+ tilt version
+ Para outras opções de instalação e mais detalhes, consulte o guia oficial de instalação do Tilt.
+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 -
- tar xvf ctlptl*_linux_amd64.tar.gz
- /usr/local/bin
:sudo mv ctlptl /usr/local/bin/
- ctlptl version
- 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
+
+
+ $GOPATH/bin
ao PATH (se necessário):
+export PATH=$PATH:$(go env GOPATH)/bin
+
+
+
+ctlptl version
+
+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
+
+
+
+tar -xzf ctlptl.vX.Y.Z.linux.x86_64.tar.gz
+
+
+ /usr/local/bin
:
+sudo mv ctlptl /usr/local/bin/
+sudo chmod +x /usr/local/bin/ctlptl
+
+
+
+ctlptl version
+
+Certifique-se de que o Go está instalado no seu sistema. Se não estiver, siga as instruções no site oficial do Go.
+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
-
-
- $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
-
ctlptl version
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
-
+ Se o Go não estiver instalado, siga as instruções no site oficial do Go.
-
-tar -xzf ctlptl.vX.Y.Z.linux.x86_64.tar.gz
+go install github.com/tilt-dev/ctlptl/cmd/ctlptl@latest
-
- /usr/local/bin
:$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
-
ctlptl version
From 85fdcb694649c05775e465a294c94e5cdac38453 Mon Sep 17 00:00:00 2001
From: CarolCoCe a|NXVt6`eWX4pnotVG<-YdzOfiAgEtq>Z=?^Fi0z!aF6nov?v3Ru71`zS76
zu)7 R+n{Ph{tsxe)7U!=s+frfM-&6MOW0|oB>}M9^&0FVgz()V
zOs#FXSrva21&`E;C3?uYu-R?IZ>zZN%tLuQR6!|oQQ|IEHk} %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)B8>MlxuY!ae@A?UuztCtpdy(wj3fR`>{wMSmM|p6m1LT(6_7^
zrE_vI)HL<{I?(W;>v{>}?O}Ab*VM4zp8g)}L_HxA6Pe3wIWYRCGA`9p2=vkcCp@D<
zL;s-MW;$!I*m7d&_3-L^7Gt%~tQTewVI1Y5^P4Y9H(--ZUL@GOtf{W@>C_3H42s2g
z1^W5f)WXc;zPJ`}bhym7ScJP7DS*n`aBlQBGxze_hqaaIl1k?+nX$C~iq5U5$w>2V
zNQ=U#z1WUS9COMrR*oi{sI1J&BGi&Ys`b(Fr)W8&YmCdP-D8eprzLH;&%@Z3fhu(L
zs0q>^kmk;N0ok(>OjYWL;nuhvf=-ENu}X7KJ=NCqsbczJcp%eJVvjv5Xc||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?uWFIB5fArP%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&Fk}gp`=~qz
aISAh3P-Ia_$xtNZMi4>^_v%`xBUm>ar*B5?*?}o@xCTW4Yg$Hd^$1eZAKyV9B0H
=o?fBvdNF^6
z<1s_Wk_H+;tV?TZcy8QiTG~Qpw>`T;dqXwHKyYAmwARndLQzqh=aQa6KcYm3O>{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$G1