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

Feature/implementacao pipelines ci cd #9

Open
wants to merge 3 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
49 changes: 49 additions & 0 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: CI-CD

on:
push:
branches: [ main ]

workflow_dispatch:

jobs:
CI:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Docker Login
uses: docker/login-action@v1.10.0
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_PWD }}

- name: Docker Build and Push
uses: docker/build-push-action@v2.7.0
with:
context: ./src
file: ./src/Dockerfile
push: true
tags: |
${{secrets.DOCKERHUB_USER}}/rotten-potatoes:latest
${{secrets.DOCKERHUB_USER}}/rotten-potatoes:${{ github.run_number }}
CD:
needs: [CI]
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Kubernetes set context
uses: Azure/k8s-set-context@v1.1
with:
method: kubeconfig
kubeconfig: ${{ secrets.K8S_CONFIG }}

- name: Deploy to Kubernetes cluster
uses: Azure/k8s-deploy@v1.3
with:
images: ${{secrets.DOCKERHUB_USER}}/rotten-potatoes:${{ github.run_number }}
manifests: |
kubernetes/deployment.yaml
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Desafio 02 - 🐳 Docker + ⚓ Kubernetes

## rotten-potatoes

### Adiconado deploy completo da aplicação com docker e kubernetes
14 changes: 14 additions & 0 deletions cluster-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4

nodes:
- role: control-plane
- role: control-plane
- role: control-plane
- role: worker
- role: worker
- role: worker

extraPortMappings:
- containerPort: 30000
hostPort: 8080
103 changes: 103 additions & 0 deletions kubernetes/deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# Deployment do MongoDB
apiVersion: apps/v1
kind: Deployment

metadata:
name: mongodb

spec:
selector:
matchLabels:
app: mongodb

template:
metadata:
labels:
app: mongodb

spec:
containers:
- name: mongodb
image: mongo:4.4.6
ports:
- containerPort: 27017

env:
- name: MONGO_INITDB_ROOT_USERNAME
value: mongouser
- name: MONGO_INITDB_ROOT_PASSWORD
value: mongopwd
---
# Service do MongoDB
apiVersion: v1
kind: Service

metadata:
name: mongodb

spec:
selector:
app: mongodb

ports:
- port: 27017

type: ClusterIP

---
# Deployment da aplicação
apiVersion: apps/v1
kind: Deployment

metadata:
name: web

spec:
replicas: 1

selector:
matchLabels:
app: web

template:
metadata:
labels:
app: web

spec:
containers:
- name: web
image: diogoferreira/rotten-potatoes:v1
ports:
- containerPort: 5000

env:
- name: MONGODB_DB
value: "admin"
- name: MONGODB_HOST
value: "mongodb"
- name: MONGODB_PORT
value: "27017"
- name: MONGODB_USERNAME
value: "mongouser"
- name: MONGODB_PASSWORD
value: "mongopwd"

---
# Service da aplicação
apiVersion: v1
kind: Service

metadata:
name: web

spec:
selector:
app: web

ports:
- port: 80
targetPort: 5000
nodePort: 30000

type: LoadBalancer
10 changes: 10 additions & 0 deletions src/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
FROM python:3.8
WORKDIR /app

COPY requirements.txt .
RUN python -m pip install -r requirements.txt

COPY . .
EXPOSE 5000

CMD [ "gunicorn", "--workers=3", "--bind", "0.0.0.0:5000", "app:app" ]