Skip to content

Latest commit

 

History

History
1257 lines (868 loc) · 35.1 KB

softwares-macos.md

File metadata and controls

1257 lines (868 loc) · 35.1 KB

MacOS

Homebrew

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/

Essenciais

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:

Git

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/

asdf

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

awscli

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

bat

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 (Database client)

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/

docker

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

docker-compose

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

gcloud

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

Fonte: https://stackoverflow.com/questions/62658237/it-seems-that-the-version-of-the-libffi-library-seen-at-runtime-is-different-fro

Referências:

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

Go

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/

Helm

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

helm-docs

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.

helmfile

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

helm-diff - Plugin

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

helm-secrets - Plugin

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

jj

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

kubectl

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/

Kustomize

Instale o Kustomize com o seguinte comando:

brew install kustomize

Referência:

Plugins para kubectl

A seguir são listados alguns plugins úteis para o Kubectl.

krew

Documentação:

Instale com o seguinte comando:

Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.

brew install krew

kubectx e kubens

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)

Fuzzy

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

kubectl-tree

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

kubecolor

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 

node-shell

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

kubefwd

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

kubepug

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

kubent

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

Outras Kubetools

kubeshark

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

k9s

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

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/

Postman

Execute o seguinte comando:

Antes de prosseguir, certifique-se de ter instalado o comando Homebrew.

brew install postman

Documentação:

pre-commit

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

Prompt do Terminal Customizado

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:

bash_prompt

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:

  1. cor lilás (ou roxo): o nome do usuário e o nome do host;
  2. Na cor amarela: o path do diretório atual;
  3. cor verde: o nome da branch, será exibida apenas se o diretório atual for relacionado a um repositório git;
  4. cor vermelho: o nome do cluster Kubernetes (k8s), ao qual você está autenticado;
  5. cor azul: o nome do namespace selecionado no cluster k8s. Caso esteja selecionado o namespace default, o nome não será exibido.

qq

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

ShellCheck

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.

Sops

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

terraform e tfenv

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

terraform-docs

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

terragrunt e tgenv

Execute os seguintes comandos para instalar o tgenv, controlador de versões de do Terragrunt

Documentação:

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

Vault

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

yq

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

tig

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

[OPCIONAL] Aliases úteis

bashrc

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)"

[OPCIONAL] Lightshot

Instale a ferramenta lightshot para facilitar o print screen (captura da tela).

[OPCIONAL] kind

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:

Repositório alternativo para uso do kind com nginx-controller, linkerd e outras ferramentas: https://github.com/rafaelperoco/kind

[OPCIONAL] minikube

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

[OPCIONAL] trivy

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

Instalando trivy via Docker

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

[OPCIONAL] tflint

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