Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
0550101
Update README.md
Macarena-SRE Mar 12, 2021
d27af34
Update hasher.rb
Macarena-SRE Mar 12, 2021
5dfd3f8
Update rng.py
Macarena-SRE Mar 12, 2021
2ed4e41
Update webui.js
Macarena-SRE Mar 12, 2021
41c6d5f
Update worker.py
Macarena-SRE Mar 12, 2021
ad27571
Update Dockerfile
Macarena-SRE Mar 12, 2021
6f1ca46
Update Dockerfile
Macarena-SRE Mar 12, 2021
2b6f7d1
Update Dockerfile
Macarena-SRE Mar 12, 2021
fea0f8e
Update Dockerfile
Macarena-SRE Mar 12, 2021
5ac3bbf
Create dockercoins.yaml
Macarena-SRE Mar 12, 2021
0a33408
Create ci.yaml
Macarena-SRE Mar 12, 2021
faf3b63
Update ci.yaml
Macarena-SRE Mar 15, 2021
b0fc21c
Update ci.yaml
Macarena-SRE Mar 15, 2021
a5ffb9b
Update ci.yaml
Macarena-SRE Mar 15, 2021
d9bf9c4
Update ci.yaml
Macarena-SRE Mar 15, 2021
e915d4c
Update ci.yaml
Macarena-SRE Mar 15, 2021
640ee13
Update ci.yaml
Macarena-SRE Mar 15, 2021
b6d2ce3
Update ci.yaml
Macarena-SRE Mar 15, 2021
3b063b4
Update ci.yaml
Macarena-SRE Mar 15, 2021
76c1419
Create dockercoins.yaml
Macarena-SRE Mar 15, 2021
a9a0111
Update dockercoins.yaml
Macarena-SRE Mar 16, 2021
88de5d0
Update dockercoins.yaml
Macarena-SRE Mar 16, 2021
61dbadd
Update dockercoins.yaml
Macarena-SRE Mar 16, 2021
2a0e887
Update ci.yaml
Macarena-SRE Mar 16, 2021
1c036ac
Update dockercoins.yaml
Macarena-SRE Mar 16, 2021
b34745b
Update ci.yaml
Macarena-SRE Mar 16, 2021
13daaf3
Update ci.yaml
Macarena-SRE Mar 16, 2021
5a08f22
Update ci.yaml
Macarena-SRE Mar 16, 2021
58d5558
Update dockercoins.yaml
Macarena-SRE Mar 16, 2021
dc003c5
Update dockercoins.yaml
Macarena-SRE Mar 16, 2021
3eba510
Update ci.yaml
Macarena-SRE Mar 16, 2021
0090090
Update ci.yaml
Macarena-SRE Mar 16, 2021
2cb4422
Update ci.yaml
Macarena-SRE Mar 16, 2021
fca0d1d
Update ci.yaml
Macarena-SRE Mar 16, 2021
50c2b1a
Update dockercoins.yaml
Macarena-SRE Mar 16, 2021
ec20386
Update ci.yaml
Macarena-SRE Mar 16, 2021
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
213 changes: 213 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
name: CI
on:
push:
branches:
- docker
jobs:
docker:
runs-on: ubuntu-18.04
steps:
- name: checkout
uses: actions/checkout@v2
- name: test
run: |
set -x
for app in hasher rng webui worker
do \
docker build -t macarenasre/dockercoins:testing-${app} ${app}
done
#creamos redes p cada uno
for app in hasher redis rng webui worker
do \
docker network create ${app}
done
#ejecyutamos container y creamos volumen
docker run -d --name redis --network redis -v redis:/data redis
#
for app in hasher rng webui worker
do \
docker run -d --name ${app} --network ${app} macarenasre/dockercoins:testing-${app}
done
#conectar los contenedores a las redes
for app in webui worker
do \
docker network connect redis ${app}
done
for network in hasher rng
do \
docker network connect ${network} worker
done
#testear app
while true
do \
sleep 10
docker logs hasher 2>& 1 | grep '== Sinatra .* has taken the stage on .* for development with backup from Thin' && break
done
while true
do \
sleep 10
docker logs redis 2>& 1 | grep 'Ready to accept connections' && break
done
while true
do \
sleep 10
docker logs rng 2>& 1 | grep 'Running on' && break
done
while true
do \
sleep 10
docker logs webui 2>& 1 | grep 'WEBUI running on port' && break
done
while true
do \
sleep 10
docker logs worker 2>& 1 | grep 'Coin found' && break
done
swarm:
runs-on: ubuntu-18.04
steps:
- name: checkout
uses: actions/checkout@v2
- name: test
run: |
set -x
#creo imagen image
for app in hasher rng webui worker
do \
docker build -t macarenasre/dockercoins:testing-${app} ${app}
done
docker swarm init
project=dockercoins
compose=etc/swarm/manifests/${project}.yaml
#sustituyo latest x testing y despliego con compose
sed -i /image:/s/latest/testing/ ${compose}
sed -i /node.role/s/worker/manager/ ${compose}
#Despliegue en Openshift
#oc apply -f ${compose}
#despliegue en Kubernetes
#kubectl apply -f ${compose}
#desplioegue en swarm
docker stack deploy -c ${compose} ${project}
while true
do \
sleep 10
docker service logs ${project}_hasher 2>& 1 | grep '== Sinatra .* has taken the stage on .* for development with backup from Thin' && break
done
while true
do \
sleep 10
docker service logs ${project}_redis 2>& 1 | grep 'Ready to accept connections' && break
done
while true
do \
sleep 10
docker service logs ${project}_rng 2>& 1 | grep 'Running on' && break
done
while true
do \
sleep 10
docker service logs ${project}_webui 2>& 1 | grep 'WEBUI running on port' && break
done
while true
do \
sleep 10
docker service logs ${project}_worker 2>& 1 | grep 'Coin found' && break
done
kubernetes:
runs-on: ubuntu-18.04
steps:
- name: checkout
uses: actions/checkout@v2
- name: test
run: |
set -x
project=dockercoins
#creo imagen image
for app in hasher rng webui worker
do
docker build -t macarenasre/${project}:testing-${app} ${app}
done
#install kubernetes en ubunto
sudo apt-get update -y
#sudo apt-get install -y docker.io
#sudo systemctl enable --now docker
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo deb http://apt.kubernetes.io/ kubernetes-xenial main | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update -y
sudo apt-get install -y --allow-downgrades kubelet=1.18.14-00 kubeadm=1.18.14-00 kubectl=1.18.14-00
sudo systemctl enable --now kubelet
#inicializar kubernetes
ip_leader=$( ip r | grep default | awk '{ print $9 }' )
echo ${ip_leader} kube-apiserver | sudo tee -a /etc/hosts
sudo swapoff --all
sudo kubeadm init --upload-certs --control-plane-endpoint kube-apiserver --pod-network-cidr 192.168.0.0/16 --ignore-preflight-errors all
#copiamos las credenciales a nuestro dir
mkdir -p ${HOME}/.kube
sudo cp /etc/kubernetes/admin.conf ${HOME}/.kube/config
sudo chown -R $( id -u ):$( id -g ) ${HOME}/.kube
#una vez inicializado Kubernetes creamos la red
kubectl apply -f https://docs.projectcalico.org/v3.17/manifests/calico.yaml
#comprobar q el cluster esta listo
while true
do
kubectl get node | grep Ready | grep -v NotReady && break
sleep 10
done
#limpiar configuracion
sudo sed -i /kube-apiserver/d /etc/hosts
sudo sed -i /127.0.0.1.*localhost/s/$/' 'kube-apiserver/ /etc/hosts
#habilitar el master
master=$( kubectl get node | grep master | awk '{ print $1 }' )
kubectl taint node ${master} node-role.kubernetes.io/master:NoSchedule-

compose=etc/kubernetes/manifests/${project}.yaml
#sustituyo latest x testing y despliego con compose
sed -i /image:/s/latest/testing/ ${compose}
sed -i /imagePullPolicy/s/Always/Never/ ${compose}
#Despliegue en Openshift
#oc apply -f ${compose}
#despliegue en Kubernetes
kubectl apply -f ${compose}
#desplioegue en swarm
#docker stack deploy -c ${compose} ${project}
app=hasher
pattern='== Sinatra .* has taken the stage on .* for development with backup from Thin'
while true
do
sleep 10
kubectl logs deploy/${app} 2>& 1 | grep "${pattern}" && break
done
app=redis
pattern='Ready to accept connections'
while true
do
sleep 10
#kubecetl deploy/redis
#kubectl describe rs
#kubectl describe po
#kubectl logs describe deploy/redis
#sleep 100
kubectl logs deploy/${app} 2>& 1 | grep "${pattern}" && break
done
app=rng
pattern='Running on'
while true
do
sleep 10
kubectl logs ds/${app} 2>& 1 | grep "${pattern}" && break
done
app=webui
pattern='WEBUI running on port'
while true
do
sleep 10
kubectl logs deploy/${app} 2>& 1 | grep "${pattern}" && break
done
app=worker
pattern='Coin found'
while true
do
sleep 10
kubectl logs deploy/${app} 2>& 1 | grep "${pattern}" && break
done

1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# dockercoins
![CI](https://github.com/Macarena-SRE/dockercoins/workflows/CI/badge.svg?branch=docker)

This is the demo application originally used in Jérôme Petazzoni's [orchestration workshop](https://github.com/jpetazzo/container.training).

Expand Down
170 changes: 170 additions & 0 deletions etc/kubernetes/manifests/dockercoins.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: rng
spec:
selector:
matchLabels:
app: rng
template:
metadata:
labels:
app: rng
spec:
containers:
-
image: macarenasre/dockercoins:latest-rng
imagePullPolicy: Always
name: rng
ports:
-
containerPort: 8080
protocol: TCP
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hasher
spec:
replicas: 1
selector:
matchLabels:
app: hasher
template:
metadata:
labels:
app: hasher
spec:
containers:
-
image: macarenasre/dockercoins:latest-hasher
imagePullPolicy: Always
name: hasher
ports:
-
containerPort: 8080
protocol: TCP
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
spec:
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
-
image: redis
name: redis
ports:
-
containerPort: 6379
protocol: TCP
volumeMounts:
-
mountPath: /data
name: redis
volumes:
-
name: redis
emptyDir: {}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: webui
spec:
replicas: 1
selector:
matchLabels:
app: webui
template:
metadata:
labels:
app: webui
spec:
containers:
-
image: macarenasre/dockercoins:latest-webui
imagePullPolicy: Always
name: webui
ports:
-
containerPort: 8080
protocol: TCP
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: worker
spec:
replicas: 1
selector:
matchLabels:
app: worker
template:
metadata:
labels:
app: worker
spec:
containers:
-
image: macarenasre/dockercoins:latest-worker
imagePullPolicy: Always
name: worker
---
apiVersion: v1
kind: Service
metadata:
name: hasher
spec:
ports:
-
port: 8080
targetPort: 8080
selector:
app: hasher
---
apiVersion: v1
kind: Service
metadata:
name: redis
spec:
ports:
-
port: 6379
targetPort: 6379
selector:
app: redis
---
apiVersion: v1
kind: Service
metadata:
name: rng
spec:
ports:
-
port: 8080
targetPort: 8080
selector:
app: rng
---
apiVersion: v1
kind: Service
metadata:
name: webui
spec:
ports:
-
port: 8080
targetPort: 8080
selector:
app: webui
---
Loading