Sim, você não leu errado! Um cluster pra chamar de seu, de graça pra sempre.
Conheci a Oracle Cloud Infrastructure em julho de 2021, sem muito conhecimento de kubernetes (trabalho com docker há tempos, mas kubernetes não tinha conhecimento sólido, no máximo alguns cursos explicando alguns conceitos e eu ainda não entendia bem como tudo se encaixava.). Portanto, achei mais interessante, subir uma única instancia com todo o recurso que era disponibilizado no modelo de serviços de nuvem Uso Livre (Always Free). Para quem quiser conhecer mais, segue o link oficial: https://www.oracle.com/br/cloud/free/
Até que… O @Badtux_, Jeferson Fernando da LINUXtips fez um vídeo onde falava sobre um dia inteiro de cursos e a possibilidade de certificação e um monte de coisa interessante, num sábado. Algo interessante é que fora mencionado a possibilidade de gerar uma nova conta até mesmo pra quem já tivesse uma, isso fazia muito sentido para o meu contexto.
Tenho um filho pequeno em casa, precisei negociar o tempo com a esposa, no trabalho eu estava de segunda a segunda resolvendo problemas e num dia que eu poderia estar livre, já estava arrumando mais coisas para fazer.
Chegou o dia, assisti de ponta a ponta, junto de alguns conhecidos os quais a gente ia conversando sobre os conteúdos. Houveram algumas dificuldades, criação da conta bugou, mas depois resolveram (não sei exatamente os valores mas chutando foram umas 10 mil contas gratuitas para sem criadas em alguns poucos dias então é perfeitamente aceitável, visto que estamos falando de algo sem custo algum).
Com algumas semanas tendo passado, comecei a testar um projeto que foi mencionado durante o sábado, o ampernetacle que prometia subir um cluster kubernetes, usando apenas os serviços de Uso Livre da nuvem da oracle. Logo no início quando as dificuldades surgiram, achei mais interessante fazer a prova da certificação.
Passado esse momento, comecei a pegar o ampernetacle novamente e deixá-lo bem funcional para os meus testes que já fiz e para os que virão =)
Seguindo o manual feito pelo autor do projeto, precisaremos de uma conta na OCI (utilizar região ashburn-1 foi algo mencionado pelos instrutores da Oracle que participaram do evento, as regiões no Brasil costumam falhar por falta de recurso para instanciar os nós), instalar o kubernetes no computador local para ter o kubeadm, kubelet e kubectl, o terraform e o OCI CLI. Na sequencia a parte de configuração das credenciais da OCI e ai sim, baixar o projeto e executar os comandos terraform para subir o cluster kubernetes limpo, sem nada em execução.
Ok, mas e agora? Tenho um cluster mas não tenho nada? Como posso testar isso e saber que realmente subiu o cluster? É, o cluster sobe uma infraestrutura básica para receber as aplicações, então precisamos por aplicações no cluster, porém, podemos executar alguns comandos que garantem que o cluster está online.
kubectl get nodes
Outros comandos que podem ser úteis para ver como está o cluster
kubectl get nodes -o wide
kubectl get pods --all-namespaces
Sabendo que o cluster funciona, o autor do projeto menciona algumas ressalvas. Caso fosse criado um serviço usando LoadBalancer este não iria funcionar, e como solução ele menciona o uso de NodePort e, não há um controlador para entrada de dados (ingress controller) e também não possui algo para o armazenamento de dados.
Para cada um desses problemas, encontrei uma solução.
Para o LoadBalancer e a entrada de dados funcionarem encontrei a solução MetalLB e o NGINX Ingress Controller possui suporte a este.
E para o armazenamento de dados, utilizei o Longhorn.
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.2.3/deploy/longhorn.yaml
Também adicionei o cert-manager para ter um gerador de ssl automático.
Seguem os manifestos que apliquei no cluster.
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.11.0/manifests/namespace.yaml kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.11.0/manifests/metallb.yaml
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.7.1/cert-manager.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/baremetal/deploy.yaml
E aqui segue um exemplo de um nginx, no fim desse exemplo você deve ter acesso ao dominio configurado e um ssl registrado automaticamente para o email configurado
Aplique no cluster cada arquivo com:
kubectl apply -f arquivo.yaml
Neste caso não utilizamos o Longhorn, mas você pode testar utilizando este exemplo da documentação oficial, basta inserir na spec do pvc: storageClassName: longhorn.
Browse the web using your SSH Server by making it a proxy server

Continue reading

T2 instances are Burstable Performance Instances that provide a baseline level of CPU performance with the ability to burst above the baseline. The baseline performance and ability to burst are governed by CPU Credits. Each T2 instance receives CPU Credits continuously at a set rate depending on the instance size. T2 instances accrue CPU Credits when they are idle, and use CPU credits when they are active. T2 instances are a good choice for workloads that don’t use the full CPU often or consistently, but occasionally need to burst (e.g. web servers, developer environments and small databases).
If you can’t delete Elastic Beanstalk created bucket, first remove all files inside the bucket then remove de bucket policy.
Go to the bucket’s policy (bucket –> properties –> permissions –> edit bucket policy)
Save the change to the Bucket Policy.
Now right click on the bucket and press delete.
Sometimes EC2 CloudWatch monitoring shows 100% CPU usage but when you ssh to your instance and try to see it with ‘top’ you can’t understand what is happening. Probably, Amazon is “borrowing” some of your CPU cycles to give to someone else who needs it – this is standard practice for a virtualised environment where physical server resources like RAM usage and CPU cycles are often hugely over-committed.
To check for CPU steal, run top and take a look for the %st value. If this value is anything other than zero, it means your VM’s CPU cycles are being “borrowed”.
In case you lose your Amazon EC2 SSH Key, and can’t login in your instance. This isn’t a big problem if your instance is EBS based and you use an Elastic IP.
1. Upload your new SSH Key, or use one made by AWS
2. Make an AMI of your instance
3. Launch a new machine from your AMI, select the new SSH Key
4. Log in your machine with default user (ubuntu, ec2-user, depends on your original AMI image)
5. Change the Elastic IP to the new machine
6. Turn of the old machine and terminate it.
RDS Class max_connections
t1.micro 34
m1.small 125
m1.medium 296
m1.large 623
m1.xlarge 1263
m2.xlarge 1441
m2.2xlarge 2900
m2.4xlarge 5816

First of all, you need to carefully select the region where you are going to stablish your servers.
US-EAST / US-WEST-2 are the cheaper regions by the time that i wrote.
You can check the prices per regions on the links at the end of this post.

Using AWS for almost a year in free tier, i did not paid attention to purchasing options of instances.