- Provisioning EKS cluster. (Ok)
- Provisioning and deploy a data structure store (like MongoDB or Redis) (Ok)
- Deploy a test app image (don’t need to create the image). (Ok)
- Configure auto scaling. (Ok)
- Expose the endpoint test through web.
- Create automated test to check the endpoint. (Ok)
- Use AWS cloud. (Ok)
- The provisioning should be infra as code. (Ok)
- The code should be idempotent. (Ok)
- The image should be deployed through Jenkins pipeline.
- Submit the code to Github. (Ok)
- Create usability instructions on readme file. (Ok)
É necessário dois binários para build do projeto
| Binário | Download |
|---|---|
| Terraform | https://www.terraform.io/downloads.html |
| Kubectl | https://v1-18.docs.kubernetes.io/docs/tasks/tools/install-kubectl/ |
Há três diretórios na raiz do projeto, um com o código necessário para subir o cluster k8s em na solução de EKS da aws. Para subir este projeto é necessário executar os comandos abaixo.
Ajuste o arquivo abaixo conforme a tabela, para poder realizar o deploy do ambiente.
$ cd terraform/aws| Campoo | Valor |
|---|---|
| aws_access_key | Valor |
| aws_secret_key | Valor |
| rancher_server_admin_password | Valor |
$ terraform init
$ terraform plan
$ terraform applyAo final do processo será informado a URL de acesso ao rancher server, vamos acessa-lo com a senha que definimos anteriormente.
Vamos copiar o conteúdo do kubeconfig do cluster e adicionar no nosso config local, por padrão o conf está em
kubectl get nodes --kubeconfig aws/kube_config_workload.yamlVamos acessar a pasta raiz do projeto e acessar o diretório
$ cd manifest_k8s/
$ kubectl apply -f app-health.yml --kubeconfig ../terraform/aws/kube_config_workload.yaml
$ kubectl apply -f app-hpa.yml --kubeconfig ../terraform/aws/kube_config_workload.yamlFoi utilizado uma imagem padrão para utilização do liveness que escuta no respectivo path e porta, a partir de uma imagem padrão para esta finalidade.
Foi configurado HPA, um deployment e um service para uma aplicação padrão para este conceito.
Antes vamos fazer deploy de um sistema de armazenamento para o cluster
$ kubectl create ns longhorn-system --kubeconfig ../terraform/aws/kube_config_workload.yaml
$ kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml$ kubectl apply -f bd-redis.yml --kubeconfig ../terraform/aws/kube_config_workload.yamlVamos configurar a interação do Jenkins com o Github, com base na documentação abaixo
Como administrador, a partir da visão global, vá em security > Authentication Selecione GitHub e abra esse link: - https://github.com/settings/developers Selecione Registers a new OAuth application e preencha os campos Homepage URL e Authorization callbacks URL com os dados: informados no rancher. No finall será possível copiar o client ID e gerar o Client Secret, vamos copiar estes valores e informar no rancher. No final vamos salvar e habilitar o repositório app-rancher