Projeto da Opus Software para aprender um pouco mais sobre kubernetes
Tópicos de Estudo:
- Kubernetes (conceito, pré-requisitos, componentes)
- Kubernetes vs Docker (diferenças, em que casos é melhor utilizá-los)
- Pods vs Container
- Criação local do cluster kubernetes (exemplo: kind, minikube, etc) e uso do kubectl
- Recursos (conceito e prática: comandos e aplicação de yaml)
- Namespaces
- Deployments
- Daemonsets - conceito
- Configmaps
- Secrets
- Services
- Ingress
- Persistência de dados (Storageclass - SC, Persistent Volume Claim - PVC, Persistent Volume - PV)
- Job e Cronjobs - conceito
- Statefulsets - conceito
- HPA - conceito
- RBAC (roles, service accounts, users) - conceito
- CRD - conceito
- Troubleshooting (describe, logs, events e exec)
- Ambientes produtivos: setup de alta disponibilidade, scaling, quais cuidados tomar, etc
- Uso do Helm para a instalação de pacotes
A pasta ./pratical/final
contém o projeto final desenvolvido
A pasta ./presentation
contém o pdf desenvolvido para explicar o projeto e a arquitetura do projeto
O sistema operacional utilizado é o EndeavourOS
:
NAME=EndeavourOS
PRETTY_NAME=EndeavourOS
ID=endeavouros
ID_LIKE=arch
BUILD_ID=2022.08.28
ANSI_COLOR="38;2;23;147;209"
HOME_URL='https://endeavouros.com'
DOCUMENTATION_URL='https://discovery.endeavouros.com'
SUPPORT_URL='https://forum.endeavouros.com'
BUG_REPORT_URL='https://forum.endeavouros.com/c/arch-based-related-questions/bug-reports'
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=endeavouros
Foi usado o minikube
em conjunto com o virtualbox
para testar a aplicação localmente.
A versão do minikube
:
minikube version: v1.28.0
commit: 986b1ebd987211ed16f8cc10aed7d2c42fc8392f-dirty
Versão do kubectl
:
WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short. Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.5", GitCommit:"804d6167111f6858541cef440ccc53887fbbc96a", GitTreeState:"archive", BuildDate:"2022-12-08T19:51:18Z", GoVersion:"go1.19.4", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v4.5.7
Server Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.3", GitCommit:"434bfd82814af038ad94d62ebe59b133fcb50506", GitTreeState:"clean", BuildDate:"2022-10-12T10:49:09Z", GoVersion:"go1.19.2", Compiler:"gc", Platform:"linux/amd64"}
Sempre que inicializar os pods é preciso fazer o setup do servidor DNS (link
Já que o MariaDB não se da muito bem com o NFS, foi criado dois diretórios dentro do nó multinode-m05
/data/db-202{1,2}. (É preciso adicionar essas pastas sempre que o cluster for inicializado)
Foi criado um servidor NFS no endereço 192.168.0.20
na rede LAN
Reiniciar o cluster:
make clean && make setup && make start