Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aula 2 - desafios #2

Open
wants to merge 12 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: CI-CD
on:
push:
branches: ["main"]
workflow_dispatch:

jobs:
CI:
runs-on: ubuntu-latest
steps:
- name: Checkout do código fonte
uses: actions/[email protected]

- name: Login no Docker Hub
uses: docker/[email protected]
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Construção da Imagem Docker e Envio para o Docker Hub
uses: docker/[email protected]
with:
context: ./src
push: true
file: ./src/Review-Filmes.Web/Dockerfile
tags: |
xenxem/review-filmes:v${{ github.run_number }}
xenxem/review-filmes:latest
CD:
runs-on: ubuntu-latest
needs: [CI]
steps:
- name: Checkout do código fonte
uses: actions/[email protected]

- name: Configuração do AWS CLI
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1

- name: Configuração do Kubeconfig
run: aws eks update-kubeconfig --name eksAula

- name: Deploy no Kubernetes
uses: Azure/[email protected]
with:
manifests: |
./k8s/deployment.yml
images: |
xenxem/review-filmes:v${{ github.run_number }}

- name: Passo 01
run: echo "Deploy da aplicação"

Binary file added 2024-07-04 (3).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added 2024-07-04 (4).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
31 changes: 31 additions & 0 deletions README-DESAFIO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
1 - processo de build da imagem
docker build -t xenxem/review-filmes:v1 -f src/Review-Filmes.Web/Dockerfile src/

2 - subida da imagem para meu docker hub
docker push xenxem/review-filmes:v1

3 - aplicação do manifesto para criação do cluster com os objetos
kubectl apply -f k8s/deployment.yml

4 - listagem dos elementos
kubectl get pod

5 - acesso da aplicação em localhost porta 30000

6 - escolha de um pod qualquer para exclusão para testar a resiliência
reviewfilmes-54789cf48f-wwqr5

7 - listagem com kubectl get pod para verificar

8 - alteração do header para v2 em shared/\_Layout.cshtml

9 - geração da imagem para v2
docker build -t xenxem/review-filmes:v2 -f src/Review-Filmes.Web/Dockerfile src/

10 - push da imagem para o meu docker hub
docker push xenxem/review-filmes:v2

12 - aplicação do manifesto
kubectl apply -f k8s/deployment.yml

13 - atualizando a aplicação no browser para verificar se a descrição mudou conforme imagem v2
89 changes: 89 additions & 0 deletions k8s/deployment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
#toda vez que for criar um objeto no kubernetes
#tenho que especificar esses 4 campos apiVersion, kind, metadata, spec

# deployment de meu pod postgre
apiVersion: apps/v1
kind: Deployment
metadata: #metadados do objeto: nome, labels,
name: postgre
spec: # especificações do objeto (deployment), tudo que precisa ter e ser configurado
replicas: 1
selector: # critério de selção dos pods e replicaset que vai gerenciar
matchLabels: # minha regra - labels precisam bater
app: postgre
template: # estrutura do pod
metadata: #metadados do objeto (template): nome, labels,
labels:
app: postgre # identificação do pod
spec: #especificação do pod
containers:
- name: postgre
image: postgres:13.1
env:
- name: POSTGRES_PASSWORD
value: Passw0rd2024!
- name: POSTGRES_USER
value: reviewfilmes
- name: POSTGRES_DB
value: reviewfilmes
ports:
- containerPort: 5432
---
apiVersion: v1
kind: Service
metadata:
name: postgre
spec:
selector:
app: postgre
ports:
- port: 5432
---


# deployment web
apiVersion: apps/v1
kind: Deployment
metadata: #metadados do objeto: nome, labels,
name: reviewfilmes
spec: # especificações do objeto (deployment), tudo que precisa ter e ser configurado
replicas: 1
selector: # critério de selção dos pods e replicaset que vai gerenciar
matchLabels: # minha regra - labels precisam bater
app: reviewfilmes
template: # estrutura do pod
metadata: #metadados do objeto (template): nome, labels,
labels:
app: reviewfilmes # identificação do pod
spec: #especificação do pod
containers:
- name: reviewfilmes
image: xenxem/review-filmes:v1
env:
- name: ASPCORE_HTTP_PORTS
value: "8080"
- name: ConnectionStrings__DefaultConnection
value: "Host=postgre;Database=reviewfilmes;Username=reviewfilmes;Password=Passw0rd2024!"

ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: reviewfilmes
spec:
selector:
app: reviewfilmes
ports:
- port: 80
targetPort: 8080
nodePort: 30000
type: LoadBalancer







2 changes: 1 addition & 1 deletion src/Review-Filmes.Web/Views/Shared/_Layout.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
<a href="/" id="branding">
<img src="/images/logo.png" alt="" class="logo">
<div class="logo-copy">
<h1 class="site-title">Review de Vídeos</h1>
<h1 class="site-title">Review de Vídeos - v3</h1>
<small class="site-description">Review de Vídeos</small>
</div>
</a> <!-- #branding -->
Expand Down