- MacOS
- Git
- asdf
- awscli
- bat
- dbeaver (Database client)
- docker
- docker-compose
- gcloud
- Go
- Helm
- helm-docs
- helmfile
- helm-diff - Plugin
- helm-secrets - Plugin
- jj
- kubectl
- Kustomize
- Plugins para kubectl
- kubeshark
- k9s
- lens
- Postman
- pre-commit
- Prompt do Terminal Customizado
- ShellCheck
- Sops
- terraform e tfenv
- terraform-docs
- terragrunt e tgenv
- Vault
- yq
- tig
- [OPCIONAL] Aliases úteis
- [OPCIONAL] Lightshot
- [OPCIONAL] kind
- [OPCIONAL] minikube
- [OPCIONAL] trivy
- [OPCIONAL] tflint
Instale o Homebrew com o seguinte comando:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> "/Users/$USER/.bash_profile"
eval "$(/opt/homebrew/bin/brew shellenv)"
Fonte: https://brew.sh/
Execute os seguintes comandos:
software --install rosetta --agree-to-license
brew install vim tcptraceroute telnet netcat git tcpdump elinks curl wget openssl net-tools python3 meld openjdk jq make gnupg coreutils visual-studio-code
echo 'export PATH="/opt/homebrew/opt/curl/bin:\$PATH"' >> "/User/$USER/.bash_profile"
export LDFLAGS="-L/opt/homebrew/opt/curl/lib"
export CPPFLAGS="-I/opt/homebrew/opt/curl/include"
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
echo 'export PATH="/opt/homebrew/opt/openjdk/bin:\$PATH"' >> "/User/$USER/.bash_profile"
export CPPFLAGS="-I/opt/homebrew/opt/openjdk/include"
echo 'export PATH="/opt/homebrew/opt/make/libexec/gnubin:\$PATH"' >> "/User/$USER/.bash_profile"
export PATH="/opt/homebrew/opt/make/libexec/gnubin:$PATH"
alias python=python3
alias pip=pip3
Instale o python3-pip seguindo as instruções da página: https://docs.brew.sh/Homebrew-and-Python
Instale os seguintes softwares:
- Google Chrome: https://support.google.com/chrome/answer/95346?hl=pt-BR&co=GENIE.Platform%3DDesktop#zippy=%2Cmac
- WPS: https://br.wps.com/office/mac/
- LightShot: https://app.prntscr.com/pt-br/download.html
- Visual Code: https://code.visualstudio.com
- Plugins para Visual Code
- Instruções para exportar/importar plugins do VSCode: https://stackoverflow.com/questions/35773299/how-can-you-export-the-visual-studio-code-extension-list
- docker: https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker (Requer instalação do comando docker mostrado nas seções a seguir).
- gitlens: https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens (Requer instalação do comando git mostrado na seção a anterior).
- go: https://marketplace.visualstudio.com/items?itemName=golang.Go (Requer instalação do comando go mostrado nas seções a seguir).
- gotemplate-syntax: https://marketplace.visualstudio.com/items?itemName=casualjim.gotemplate
- Markdown-all-in-one: https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one
- Markdown-lint: https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint
- Markdown-toc: https://marketplace.visualstudio.com/items?itemName=CharlesWan.markdown-toc
- python: https://marketplace.visualstudio.com/items?itemName=ms-python.python (Requer instalação do comando python3 mostrado na seção anterior).
- shellcheck: https://marketplace.visualstudio.com/items?itemName=timonwong.shellcheck (Requer instalação do comando shellcheck mostrado nas seções a seguir).
- terraform: https://marketplace.visualstudio.com/items?itemName=HashiCorp.terraform (Requer instalação do comando terraform mostrado nas seções a seguir).
- YAML: https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml
- Helm Intellisense: https://marketplace.visualstudio.com/items?itemName=Tim-Koehler.helm-intellisense
- Contar número de linhas selecionadas: https://marketplace.visualstudio.com/items?itemName=gurumukhi.selected-lines-count
- jenkinsfile support: https://marketplace.visualstudio.com/items?itemName=ivory-lab.jenkinsfile-support
- Theme for VSCode:
Crie o diretório ~/git
.
mkdir ~/git
Baixe o script updateGit.sh
:
cd ~
wget https://gist.githubusercontent.com/aeciopires/2457cccebb9f30fe66ba1d67ae617ee9/raw/8d088c6fadb8a4397b5ff2c7d6a36980f46d40ae/updateGit.sh
chmod +x ~/updateGit.sh
Agora você pode clonar todos os repositórios git e salvar dentro de ~/git
.
No início da jornada de trabalho diária atualize todos os repositórios git de uma só vez com o comando a seguir.
cd ~
./updateGit.sh git/
Execute os seguintes comandos:
Atenção!!! Para atualizar o asdf utilize APENAS o seguinte comando:
asdf update
Se tentar reinstalar ou atualizar mudando a versão nos comandos seguintes, será necessário reinstalar todos os plugins/comandos instalados antes, por isso é muito importante fazer backup do diretório $HOME/.asdf.
ASDF_VERSION="v0.15.0"
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch $ASDF_VERSION
# Adicionando no $HOME/.bashrc
echo ". \"\$HOME/.asdf/asdf.sh\"" >> ~/.bash_profile
echo ". \"\$HOME/.asdf/completions/asdf.bash\"" >> ~/.bash_profile
source ~/.bash_profile
Fonte: https://asdf-vm.com/guide/introduction.html
Instale o awscli
usando o asdf
:
Antes de continuar, se tiver o awscli instalado, remova-o com os seguintes comandos:
sudo rm /usr/local/bin/aws
sudo rm -rf /usr/local/aws-cli
# ou
sudo rm -rf /usr/local/aws
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
AWS_CLI_V2="2.22.28"
asdf plugin list all | grep aws
asdf plugin add awscli https://github.com/MetricMike/asdf-awscli.git
asdf latest awscli
asdf install awscli $AWS_CLI_V2
asdf list awscli
# Definindo a versão padrão
asdf global awscli $AWS_CLI_V2
asdf list awscli
# Criando um link simbólico
sudo ln -s $HOME/.asdf/shims/aws /usr/local/bin/aws
Fonte: * https://asdf-vm.com/guide/introduction.html
- https://docs.aws.amazon.com/cli/latest/userguide/install-linux.html * https://computingforgeeks.com/how-to-install-and-use-aws-cli-on-linux-ubuntu-debian-centos/
O bat é um binário que ajuda a destacar as diferenças entres arquivos e muito útil quando usado em conjunto com outros comandos, incluído o kubectl e o helm.
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
VERSION="0.24.0"
asdf plugin list all | grep bat
asdf plugin add bat https://gitlab.com/wt0f/asdf-bat.git
asdf latest bat
asdf install bat $VERSION
asdf list bat
# Definindo a versão padrão
asdf global bat $VERSION
asdf list bat
Dica de utilização para terminais com temas escuro/claros é usar a opção --theme ansi
. Pode-se criar um alias, fazendo com que sempre que o comando for invocado, passe a utilizar esse parâmetro:
echo "alias bat='bat --theme ansi'" >> ~/.bashrc && . ~/.bashrc
Mais informações em:
DBeaver é uma ferramenta gratuita de banco de dados multiplataforma. Ele suporta todos os bancos de dados SQL populares como MySQL, MariaDB, PostgreSQL, SQLite, Apache Family e muito mais.
Instale com o seguinte comando:
brew install --cask dbeaver-community
Mais informações: https://dbeaver.io/download/
Mais informações na página: https://docs.docker.com/desktop/install/mac-install/.
Instale com os seguintes comandos:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install --cask docker
brew install docker-machine
Fonte: https://stackoverflow.com/questions/44084846/cannot-connect-to-the-docker-daemon-on-macos
Mais informações na página: https://docs.docker.com/compose/install/
Instale com o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install docker-compose
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
brew install google-cloud-sdk
gcloud components install gke-gcloud-auth-plugin
Execute as instruções deste tutorial se autenticar com o gcloud Autenticação do terraform/terragrunt no GCP
Referências:
- https://cloud.google.com/sdk/install
- https://cloud.google.com/sdk/docs/downloads-apt-get
- https://cloud.google.com/docs/authentication/gcloud
- https://cloud.google.com/docs/authentication/getting-started
- https://console.cloud.google.com/apis/credentials/serviceaccountkey
- https://cloud.google.com/sdk/gcloud/reference/config/set
- https://code-maven.com/gcloud
- https://gist.github.com/pydevops/cffbd3c694d599c6ca18342d3625af97
- https://blog.realkinetic.com/using-google-cloud-service-accounts-on-gke-e0ca4b81b9a2
- https://www.the-swamp.info/blog/configuring-gcloud-multiple-projects/
- Google - Autenticação em duas etapas. Habilite o duplo fator de autenticação na sua conta Google.
Login na GCP usando o gcloud:
gcloud init
# O navegador padrão será aberto para concluir o login e conceder as permissões.
gcloud auth application-default login
Execute os seguintes comandos para instalar o Go.
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install go
Documentação: https://golang.org/doc/
Execute os seguintes comandos para instalar o helm:
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
Documentação: https://helm.sh/docs/
VERSION="3.16.2"
asdf plugin list all | grep helm
asdf plugin add helm https://github.com/Antiarchitect/asdf-helm.git
asdf latest helm
asdf install helm $VERSION
asdf list helm
# Definindo a versão padrão
asdf global helm $VERSION
asdf list helm
Execute os seguintes comandos para instalar o helm-docs.
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
Documentação: https://github.com/norwoodj/helm-docs
VERSION="1.14.2"
asdf plugin list all | grep helm-docs
asdf plugin add helm-docs https://github.com/sudermanjr/asdf-helm-docs.git
asdf latest helm-docs
asdf install helm-docs $VERSION
asdf list helm-docs
# Definindo a versão padrão
asdf global helm-docs $VERSION
asdf list helm-docs
A documentação gerado pelo helm-docs é com base no conteúdo do arquivo values.yaml
e Chart.yaml
. Ele tenta sobrescrever o conteúdo do arquivo README.md dentro do diretório do chart.
Para evitar este problema execute o comando helm-docs --dry-run
(dentro do diretório de cada chart) e copie manualmente o conteúdo exibido na saída padrão para dentro do arquivo README.md
, evitando perda de dados.
Execute os seguintes comandos para instalar o helmfile.
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
Documentação: https://github.com/helmfile/helmfile
VERSION="0.169.2"
asdf plugin list all | grep helmfile
asdf plugin add helmfile https://github.com/feniix/asdf-helmfile.git
asdf latest helmfile
asdf install helmfile $VERSION
asdf list helmfile
# Definindo a versão padrão
asdf global helmfile $VERSION
asdf list helmfile
Execute os seguintes comandos para instalar o plugin helm-diff.
Documentação: https://github.com/databus23/helm-diff
helm plugin install https://github.com/databus23/helm-diff --version v3.9.13
Execute os seguintes comandos para instalar o plugin helm-secrets.
Documentação: https://github.com/jkroepke/helm-secrets
helm plugin install https://github.com/jkroepke/helm-secrets --version v4.6.2
Utilitário de linha de comando para edição de arquivo JSON:
Documentação: https://github.com/tidwall/jj
Instale com o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install tidwall/jj/jj
Instale com o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando Asdf.
VERSION_OPTION_1="1.32.0"
asdf plugin list all | grep kubectl
asdf plugin add kubectl https://github.com/asdf-community/asdf-kubectl.git
asdf latest kubectl
asdf install kubectl $VERSION_OPTION_1
asdf list kubectl
# Definindo a versão padrão
asdf global kubectl $VERSION_OPTION_1
asdf list kubectl
Documentação: https://kubernetes.io/docs/reference/kubectl/overview/
Instale o Kustomize com o seguinte comando:
brew install kustomize
Referência:
A seguir são listados alguns plugins úteis para o Kubectl.
Documentação:
Instale com o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install krew
Documentação: https://github.com/ahmetb/kubectx#installation
Instale com o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install kubectx
Este pacote vai instalar o kubens junto no MacOS
Comandos úteis:
kubectx -u # (para deslogar do cluster)
kubectx # (para listar os clusters cadastrados na máquina local
kubectx NOME_DO_CLUSTER # (para logar num cluster previamente cadastrado na máquina local)
kubectx -d NOME_DO_CLUSTER # (para remover um cluster previamente cadastrado na máquina local)
kubens # (para listar os namespaces de um cluster)
kubens NAMESPACE # (para mudar para um namespace previamente criado no cluster com o comando kubectl create ns NAMESPACE)
Documentação: https://github.com/junegunn/fzf
Instale com o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install fzf
Basta abrir outro terminal para deixar funcionando em conjunto com kubectx e kubens
Documentação: https://github.com/ahmetb/kubectl-tree
Instale com o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
kubectl krew install tree
Documentação: https://github.com/kubecolor/kubecolor
Instale com os seguintes comandos:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install hidetatz/tap/kubecolor
alias k=kubecolor
alias kubectl=kubecolor
# Mudando o alias do kubectl para o kubecolor
echo "alias kubectl=\"kubecolor\"" >> ~/.bash_profile
echo "alias k=\"kubecolor\"" >> ~/.bash_profile
Plugin para conectar ssh num node k8s.
Instale com os seguintes comandos:
kubectl krew install node-shell
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
echo 'export PATH="\${KREW_ROOT:-\$HOME/.krew}/bin:\$PATH"' >> /Users/$USER/.bash_profile
Documentação: https://github.com/kvaps/kubectl-node-shell
Documentação:
Siga as instruções da página: https://kubefwd.com/install/mac/
Instale com o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install txn2/tap/kubefwd
Ajuda a identificar quais APIs foram alteradas/depreciadas em cada versão do k8s.
Documentação: https://github.com/kubepug/kubepug
Instale com o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
kubectl krew install deprecations
alias kubepug=kubectl-depreciations
Documentação: https://github.com/swade1987/deprek8ion
Instale com o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install kubent
- http://dockerlabs.collabnix.com/kubernetes/kubetools/
- https://caylent.com/50-useful-kubernetes-tools
- https://caylent.com/50+-useful-kubernetes-tools-list-part-2
- https://developer.sh/posts/kubernetes-client-tools-overview
- https://github.com/kubernetes-sigs/kind
- https://github.com/rancher/k3d
- https://microk8s.io/
- https://argoproj.github.io/argo-cd/
Kubeshark (antigo Mizu) é uma ferramenta para observabilidade.
O kubeshark é uma ferramenta intrusiva, que adiciona agents nos nodes que suportam os pods selecionados para monitoramento (tap). Esse tipo de ferramenta, certamente tem um custo computacional. Devemos usar com parcimônia, filtrando o máximo possível (consulte a doc para ver os filtros disponíveis).
Documentação: https://kubeshark.co/
Instale com o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
VERSION="52.3.9"
asdf plugin list all | grep kubeshark
asdf plugin add kubeshark https://github.com/carnei-ro/asdf-kubeshark.git
asdf latest kubeshark
asdf install kubeshark $VERSION
asdf list kubeshark
# Definindo a versão padrão
asdf global kubeshark $VERSION
asdf list kubeshark
O k9s é uma ferramenta em CLI para gerenciamento de cluster kubernetes
Documentação: https://k9scli.io/topics/commands/
Instale com o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
VERSION="0.32.7"
asdf plugin list all | grep k9s
asdf plugin add k9s https://github.com/looztra/asdf-k9s.git
asdf latest k9s
asdf install k9s $VERSION
asdf list k9s
# Definindo a versão padrão
asdf global k9s $VERSION
asdf list k9s
Lens é uma IDE para controlar seus clusters Kubernetes. É de código aberto e gratuito.
Instale o lens com o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install lens
Mais informações em: https://k8slens.dev/
Execute o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install postman
Documentação:
Uma estrutura para gerenciar e manter ganchos de pré-confirmação multi linguagens. https://pre-commit.com/
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
VERSION="4.0.1"
asdf plugin list all | grep pre-commit
asdf plugin add pre-commit https://github.com/jonathanmorley/asdf-pre-commit.git
asdf latest pre-commit
asdf install pre-commit $VERSION
asdf list pre-commit
# Definindo a versão padrão
asdf global pre-commit $VERSION
Fonte: https://asdf-vm.com/guide/introduction.html
Para mostrar o nome da branch, diretório atual, cluster k8s autenticado e namespace em uso, existem vários projetos open source que providenciam isso e você pode escolher o que mais lhe agradar.
Para zsh:
Para bash:
curl -o ~/.bash_prompt https://gist.githubusercontent.com/aeciopires/6738c602e2d6832555d32df78aa3b9bb/raw/b96be4dcaee6db07690472aecbf73fcf953a7e91/.bash_prompt
chmod +x ~/.bash_prompt
echo "source ~/.bash_prompt" >> ~/.bashrc
source ~/.bashrc
exec bash
Resultado:
- cor lilás (ou roxo): o nome do usuário e o nome do host;
- Na cor amarela: o path do diretório atual;
- cor verde: o nome da branch, será exibida apenas se o diretório atual for relacionado a um repositório git;
- cor vermelho: o nome do cluster Kubernetes (k8s), ao qual você está autenticado;
- cor azul: o nome do namespace selecionado no cluster k8s. Caso esteja selecionado o namespace default, o nome não será exibido.
qq é um transcodificador de formato de configuração interoperável com sintaxe de consulta jq desenvolvido por gojq. qq é multimodal e pode ser usado como um substituto para jq ou interagir por meio de uma reposição com preenchimento automático e visualização de renderização em tempo real para construção de consultas.
Documentação: https://github.com/JFryy/qq
Execute os seguintes comandos para instalar o qq:
brew install jfryy/tap/qq
Examples:
qq a.json -o hcl
qq b.hcl -o json
qq b.hcl -o yaml
qq b.hcl -o xml
qq b.hcl -o toml
qq b.hcl -o tf
qq a.json -o tf
Execute os seguintes comandos:
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
VERSION="0.10.0"
asdf plugin list all | grep shellcheck
asdf plugin add shellcheck https://github.com/luizm/asdf-shellcheck.git
asdf latest shellcheck
asdf install shellcheck $VERSION
asdf list shellcheck
# Definindo a versão padrão
asdf global shellcheck $VERSION
Documentação: https://github.com/koalaman/shellcheck/
Alternativamente é possível usar o site https://www.shellcheck.net para fazer o lint dos shell scripts.
Execute os seguintes comandos.
Documentação: https://github.com/getsops/sops/
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
VERSION="3.9.3"
asdf plugin list all | grep sops
asdf plugin add sops https://github.com/feniix/asdf-sops.git
asdf latest sops
asdf install sops $VERSION
asdf list sops
# Definindo a versão padrão
asdf global sops $VERSION
asdf list sops
sops --version
Um exemplo do arquivo de configuração do sops que deve ficar em $HOME/.sops.yaml
.
creation_rules:
# Para ambientes testing/staging
- path_regex: .*/testing|staging/.*
kms: arn:aws:kms:us-east-1:4564546546454:key/adsfasdfd-8c6c-sdfsadfdas
aws_profile: default
# Para ambientes production
- kms: arn:aws:kms:sa-east-1:4123745646545:key/asdfsdfdsa-8a5b-sdafasdf
aws_profile: default
Execute os seguintes comandos para instalar o tfenv
, controlador de versões de do Terraform
Documentação: https://github.com/tfutils/tfenv
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install tfenv
Liste versões que podem ser instaladas:
tfenv list-remote
Instale as seguintes versões do Terraform usando o tfenv:
tfenv install 1.10.3
Defina como padrão a seguinte versão:
tfenv use 1.10.3
Para desinstalar uma versão do terraform com o tfenv, use o seguinte comando:
tfenv uninstall <VERSAO>
Liste as versões instaladas:
tfenv list
Apenas no desenvolvimento de um código que faz uso do terraform, você pode obrigar o projeto a usar uma versão específica:
Crie o arquivo .terraform-version
na raiz do projeto com o número da versão desejada. Exemplo:
cat .terraform-version
1.10.3
Execute os seguintes comandos para instalar o terraform-docs
Documentação: https://github.com/segmentio/terraform-docs
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install terraform-docs
Execute os seguintes comandos para instalar o tgenv, controlador de versões de do Terragrunt
Documentação:
- https://github.com/cunymatthieu/tgenv
- https://blog.gruntwork.io/how-to-manage-multiple-versions-of-terragrunt-and-terraform-as-a-team-in-your-iac-project-da5b59209f2d
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install tgenv
Liste as versões que podem ser instaladas:
tgenv list-remote
Instale as seguintes versões do Terragrunt usando o tgenv:
tgenv install 0.71.1
Liste as versões instaladas:
tgenv list
Defina como padrão uma determinada versão:
tgenv use 0.71.1
Para desinstalar uma versão do terraform com o tfenv, use o seguinte comando:
tgenv uninstall <VERSAO>
Apenas no desenvolvimento de um código que faz uso do terragrunt, você pode obrigar o projeto a usar uma versão específica:
Crie o arquivo .terragrunt-version
na raiz do projeto com o número da versão desejada. Exemplo:
cat .terragrunt-version
0.71.1
Instale o binário do Vault com os seguintes comandos:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew tap hashicorp/tap
brew install hashicorp/tap/vault
Mais informações em: https://developer.hashicorp.com/vault/docs?product_intent=vault
Utilitário de linha de comando para edição de arquivos YAML: https://github.com/mikefarah/yq
Instale com os seguintes comandos:
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
YQ_1="3.4.1" # homologada
YQ_2="4.35.1" # homologada
YQ_3="4.44.6"
asdf plugin list all | grep yq
asdf plugin add yq https://github.com/sudermanjr/asdf-yq.git
asdf latest yq
asdf install yq $YQ_1
asdf install yq $YQ_2
asdf install yq $YQ_3
asdf list yq
# Definindo a versão padrão
asdf global yq $YQ_3
asdf list yq
Fonte: https://asdf-vm.com/guide/introduction.html
Utilitário em text-mode interface para git: https://jonas.github.io/tig/
Instale com o seguinte comando:
Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.
brew install tig
Aliases úteis a serem cadastrados no arquivo $HOME/.bashrc
.
Após a inclusão executar o comando
source ~/.bashrc
para refletir as alterações.
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias aws_docker='docker run --rm -ti -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli:2.22.8'
alias bat='bat --theme ansi'
alias connect_eks='aws eks --region CHANGE_REGION update-kubeconfig --name CHANGE_CLUSTER --profile CHANGE_PROFILE'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias k='kubecolor'
source <(kubectl completion bash)
export PATH="${PATH}:${HOME}/.krew/bin"
alias kubectl='kubecolor'
alias kmongo='kubectl run --rm -it mongoshell-$(< /dev/urandom tr -dc a-z-0-9 | head -c${1:-4}) --image=mongo:4.0.28 -n default -- bash'
alias kmysql5='kubectl run --rm -it mysql5-$(< /dev/urandom tr -dc a-z-0-9 | head -c${1:-4}) --image=mysql:5.7 -n default -- bash'
alias kmysql8='kubectl run --rm -it mysql8-$(< /dev/urandom tr -dc a-z-0-9 | head -c${1:-4}) --image=mysql:8.0 -n default -- bash'
alias kredis='kubectl run --rm -it redis-cli-$(< /dev/urandom tr -dc a-z-0-9 | head -c${1:-4}) --image=redis:latest -n default -- bash'
alias kpgsql14='kubectl run --rm -it pgsql14-$(< /dev/urandom tr -dc a-z-0-9 | head -c${1:-4}) --image=postgres:14 -n default -- bash'
alias kssh='kubectl run --rm -it ssh-agent-$(< /dev/urandom tr -dc a-z-0-9 | head -c${1:-4}) --image=kroniak/ssh-client -n default -- bash'
alias l='ls -CF'
alias la='ls -A'
alias live='curl parrot.live'
alias ll='ls -alF'
alias ls='ls --color=auto'
alias nettools='kubectl run --rm -it nettools-\$(< /dev/urandom tr -dc a-z-0-9 | head -c${1:-4}) --image=aeciopires/nettools:2.0.0 -n NAMESPACE'
alias randompass='< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16}'
alias show-hidden-files='du -sch .[!.]* * |sort -h'
alias ssm='aws ssm start-session --target CHANGE_EC2_ID --region CHANGE_REGION --profile CHANGE_PROFILE'
alias terradocs='terraform-docs markdown table . > README.md'
alias alertmanager='aws eks --region CHANGE_REGION update-kubeconfig --name CHANGE_CLUSTER --profile CHANGE_PROFILE && kubectl port-forward alertmanager-monitor-alertmanager-0 9093:9093 -n monitoring ; kubectx -'
alias prometheus='kubectl port-forward prometheus-monitor-prometheus-0 9090:9090 -n monitoring'
alias sc="source $HOME/.bashrc"
alias python=python3
alias pip=pip3
alias kubepug=kubectl-depreciations
alias kubepug="kubectl-depreciations"
alias kind_create="kind create cluster --name kind-multinodes --config $HOME/kind-3nodes.yaml"
alias kind_delete="kind delete clusters \$(kind get clusters)"
Instale a ferramenta lightshot para facilitar o print screen (captura da tela).
O kind (Kubernetes in Docker) é outra alternativa para executar o Kubernetes num ambiente local para testes e aprendizado, mas não é recomendado para uso em produção.
Para instalar o kind execute os seguintes comandos.
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
VERSION="0.26.0"
asdf plugin list all | grep kind
asdf plugin add kind https://github.com/johnlayton/asdf-kind.git
asdf latest kind
asdf install kind $VERSION
asdf list kind
# Definindo a versão padrão
asdf global kind $VERSION
Para criar um cluster com múltiplos nós locais com o Kind, crie um arquivo do tipo YAML para definir a quantidade e o tipo de nós no cluster que você deseja.
No exemplo a seguir, será criado o arquivo $HOME/kind-3nodes.yaml
para especificar um cluster com 1 nó master (que executará o control plane do Kubernetes) e 2 workers (que executará o data plane do Kubernetes).
cat << EOF > $HOME/kind-3nodes.yaml
# References:
# Kind release image: https://github.com/kubernetes-sigs/kind/releases
# Configuration: https://kind.sigs.k8s.io/docs/user/configuration/
# Metal LB in Kind: https://kind.sigs.k8s.io/docs/user/loadbalancer
# Ingress in Kind: https://kind.sigs.k8s.io/docs/user/ingress
# Config compatible with kind v0.26.0
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
networking:
podSubnet: "10.244.0.0/16"
serviceSubnet: "10.96.0.0/12"
nodes:
- role: control-plane
image: kindest/node:v1.32.0@sha256:c48c62eac5da28cdadcf560d1d8616cfa6783b58f0d94cf63ad1bf49600cb027
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "nodeapp=loadbalancer"
extraPortMappings:
- containerPort: 80
hostPort: 80
listenAddress: "0.0.0.0" # Optional, defaults to "0.0.0.0"
protocol: TCP
- containerPort: 443
hostPort: 443
listenAddress: "0.0.0.0" # Optional, defaults to "0.0.0.0"
protocol: TCP
- role: worker
image: kindest/node:v1.32.0@sha256:c48c62eac5da28cdadcf560d1d8616cfa6783b58f0d94cf63ad1bf49600cb027
- role: worker
image: kindest/node:v1.32.0@sha256:c48c62eac5da28cdadcf560d1d8616cfa6783b58f0d94cf63ad1bf49600cb027
EOF
Crie um cluster chamado kind-multinodes
utilizando as especificações definidas no arquivo $HOME/kind-3nodes.yaml
.
kind create cluster --name kind-multinodes --config $HOME/kind-3nodes.yaml
Para visualizar os seus clusters utilizando o kind, execute o comando a seguir.
kind get clusters
Para destruir o cluster, execute o seguinte comando que irá selecionar e remover todos os clusters locais criados no Kind.
kind delete clusters $(kind get clusters)
Referências:
- https://github.com/badtuxx/DescomplicandoKubernetes/blob/master/day-1/DescomplicandoKubernetes-Day1.md#kind
- https://kind.sigs.k8s.io/docs/user/quick-start/
- https://github.com/kubernetes-sigs/kind/releases
- https://kubernetes.io/blog/2020/05/21/wsl-docker-kubernetes-on-the-windows-desktop/#kind-kubernetes-made-easy-in-a-container
Repositório alternativo para uso do kind com nginx-controller, linkerd e outras ferramentas: https://github.com/rafaelperoco/kind
Existem alguns cenários (como o híbrido) em que é necessário a utilização de cluster dedicados agnósticos às cloud providers e com a necessidade de VMs dedicadas. Nesse caso a utilização do minikube, é bem vinda.
Documentação: https://minikube.sigs.k8s.io/docs/
Execute os seguintes comandos para instalação:
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
VERSION="1.34.0"
asdf plugin list all | grep minikube
asdf plugin add minikube https://github.com/alvarobp/asdf-minikube.git
asdf latest minikube
asdf install minikube $VERSION
asdf list minikube
# Definindo a versão padrão
asdf global minikube $VERSION
asdf list minikube
Para iniciar um cluster com 2 nodes e utilizando a versão 1.30.2 do kubernetes, pode ser utilizado o seguinte comando:
O driver default do minikube é o docker.
minikube start --driver=docker --nodes 2 --profile multi-node --kubernetes-version=v1.30.2
Para adicionar um novo node ao cluster execute:
minikube node add --worker --profile multi-node
Para destruir o cluster execute o seguinte comando:
minikube delete --all
Instalando trivy via asdf
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
VERSION="0.58.0"
asdf plugin list all | grep trivy
asdf plugin add trivy https://github.com/zufardhiyaulhaq/asdf-trivy.git
asdf latest trivy
asdf install trivy $VERSION
asdf list trivy
# Definindo a versão padrão
asdf global trivy $VERSION
asdf list trivy
Para realizar um scan de vulnerabilidades de imagens Docker localmente, antes de enviar para o Docker Hub, ECR, GCR ou outro registry remoto, você pode utilizar o trivy: https://github.com/aquasecurity/trivy
A documentação no GitHub apresenta as informações sobre a instalação no Ubuntu e outras distribuições GNU/Linux e/ou outros sistemas operacionais, mas também é possível executar via Docker utilizando os seguintes comandos:
mkdir /tmp/caches
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /tmp/caches:/root/.cache/ aquasec/trivy image IMAGE_NAME:IMAGE_TAG
Instalando tflint via asdf
Antes de prosseguir, certifique-se de ter instalado o comando asdf.
VERSION="0.54.0"
asdf plugin list all | grep tflint
asdf plugin add tflint https://github.com/skyzyx/asdf-tflint.git
asdf latest tflint
asdf install tflint $VERSION
asdf list tflint
# Definindo a versão padrão
asdf global tflint $VERSION
asdf list tflint