You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
322 lines
7.4 KiB
322 lines
7.4 KiB
= Cloud computing - Service mesh and microservices networking!
|
|
Apostolos rootApostolos@swarmlab.io
|
|
// Metadata:
|
|
:description: Dockerfile instructions
|
|
:keywords: Dockerfile
|
|
ifndef::env-browser[]
|
|
:data-uri:
|
|
endif::[]
|
|
:images-cdn: http://localhost:3080/images
|
|
:toc: right
|
|
:toc-title: Table of contents
|
|
:toclevels: 4
|
|
:source-highlighter: highlight
|
|
:no-header-footer:
|
|
:nofooter:
|
|
:last-update-label!:
|
|
:icons: font
|
|
:sectnums:
|
|
:url_mongodb: https://en.wikipedia.org/wiki/MongoDB
|
|
|
|
|
|
|
|
.Service mesh and microservices networking
|
|
****
|
|
We will be trying to create a swarm implementation that will allow communication between all of the members/nodes.
|
|
|
|
[NOTE]
|
|
====
|
|
|
|
.Imaging a swarm
|
|
image:./Swarming2.png[alt="Swarm"]
|
|
|
|
To undertand this better lets look at the picture bellow and imagine that red dots are iot devices that can send and receive and black ones are clients that gather data.
|
|
|
|
.Architecture of swarm communication
|
|
image:./swarmlabn-1.png[alt="Swarm Gateway"]
|
|
|
|
- Red Node: Server/Client and Gateway Role
|
|
- Black and Red Node: Client Role
|
|
====
|
|
|
|
|
|
|
|
|
|
*To make our life easier at this task we will be using the following tools...*
|
|
|
|
* Docker image:./link_icon_16.png[link="https://en.wikipedia.org/wiki/Docker_(software)",window=_blank]
|
|
* Ansible image:./link_icon_16.png[link="https://en.wikipedia.org/wiki/Ansible_(software)",window=_blank]
|
|
* NodeJS image:./link_icon_16.png[link="https://en.wikipedia.org/wiki/Node.js",window=_blank]
|
|
* VueJS image:./link_icon_16.png[link="https://en.wikipedia.org/wiki/Vue.js",window=_blank]
|
|
* Redis image:./link_icon_16.png[link="https://en.wikipedia.org/wiki/Redis",window=_blank]
|
|
* MongoDB image:./link_icon_16.png[link="https://en.wikipedia.org/wiki/MongoDB",window=_blank]
|
|
|
|
****
|
|
|
|
|
|
== General info:
|
|
|
|
=== Timeframe:
|
|
This is a project that will be deleveloped thoughout the semester 2021.
|
|
|
|
|
|
.Courses Time: 11.00-13.00
|
|
Date
|
|
|
|
* 2021-03-13, 2021-03-20, 2021-03-27
|
|
* 2021-04-03, 2021-04-10, 2021-04-17, 2021-04-24
|
|
* 2021-05-15, 2021-05-22, 2021-05-29, 2021-06-05
|
|
* 2021-06-12, 2021-06-19
|
|
|
|
[NOTE]
|
|
====
|
|
(* The link to participate will be *announced here*.)
|
|
|
|
http://www.twitch.tv/swarmlab[http://www.twitch.tv/swarmlab^]
|
|
|
|
For questions and commucation between participants (*at any time* not only for the lessons!) you can use Gitter following the link below.
|
|
|
|
Ofcourse you can also use the Twitch chat during the live!!!
|
|
|
|
Please know that during the stream the *only* email that will be monitored and answered is courses@swarmlab.io +
|
|
(but please prefer community chat on gitter! its both easier and you can also talk to each other)
|
|
|
|
|
|
* You can also see detailed information about the sessions etc in the *callendar* (main page of the swarmlab client) after installation (see section "What tools will I need")
|
|
|
|
* For any questions you can visit our community page on https://gitter.im/swarmlab-hybrid/community[gitter^]
|
|
|
|
* If none of the above solved your problem, you can always use good old-fashioned mailto:support@swarmlab.io[email!]
|
|
|
|
====
|
|
|
|
=== What will i learn?
|
|
|
|
[.float-group]
|
|
--
|
|
[.right]
|
|
image::./containerd-appl1.png[Docker,550,role=right]
|
|
|
|
:hardbreaks:
|
|
|
|
{empty} +
|
|
{empty}
|
|
|
|
:!hardbreaks:
|
|
|
|
.From -> To
|
|
|
|
* [*] monolithic -> networking architecture
|
|
* [*] static -> Dynamic
|
|
* [*] host based -> Service based
|
|
* [*] linear -> agile
|
|
--
|
|
|
|
You will learn to code, coordinate and orchestrate a swarm of self-acting nodes.
|
|
|
|
|
|
[.float-group]
|
|
--
|
|
[.right]
|
|
image:./my-univer-2.png[Docker,350,role=right]
|
|
|
|
:hardbreaks:
|
|
|
|
{empty} +
|
|
{empty}
|
|
|
|
:!hardbreaks:
|
|
|
|
.Build app’s container image
|
|
|
|
* You will learn to build Docker images from a Dockerfile
|
|
* how to push/pull Docker images.
|
|
* how to build a Sample NodeJS application
|
|
--
|
|
|
|
--
|
|
[.left]
|
|
image::./myun2a1.png[DockerSwarm,599,float="left"]
|
|
--
|
|
|
|
:hardbreaks:
|
|
|
|
{empty} +
|
|
{empty}
|
|
|
|
:!hardbreaks:
|
|
|
|
.From Code to Cloud
|
|
|
|
* You will learn to create cloud and platform agnostic container-based applications.
|
|
** from a single container on your local machine
|
|
** to a running cloud native - container-based environment
|
|
** in the simplest and most logical format as possible.
|
|
|
|
:hardbreaks:
|
|
|
|
{empty} +
|
|
{empty} +
|
|
{empty} +
|
|
{empty} +
|
|
{empty}
|
|
|
|
:!hardbreaks:
|
|
|
|
--
|
|
[.right]
|
|
image::./myun2a2.png[alt="Swarm",680,float="right"]
|
|
//image:./myuniver-1.png[alt="Swarm"]
|
|
//image:./myuniver-8.png[alt="Swarm"]
|
|
|
|
:hardbreaks:
|
|
|
|
{empty} +
|
|
{empty} +
|
|
{empty} +
|
|
{empty}
|
|
|
|
:!hardbreaks:
|
|
|
|
.Build systems
|
|
|
|
* You will learn to build services in a dynamic and Scalable Distributed Architecture
|
|
** The distributed nature of a service mesh
|
|
|
|
|
|
--
|
|
|
|
:hardbreaks:
|
|
|
|
{empty} +
|
|
{empty} +
|
|
{empty} +
|
|
{empty} +
|
|
{empty} +
|
|
{empty} +
|
|
{empty} +
|
|
{empty} +
|
|
{empty}
|
|
|
|
:!hardbreaks:
|
|
|
|
|
|
=== What tools will I need
|
|
|
|
Internet and a PC
|
|
|
|
You should also have *installed swarmlab* to be able to recreate the steps and if you wish contribute to projects and communicate with your schoolmates.
|
|
|
|
==== Swarmlab.io hybrid
|
|
|
|
Follow the link:https://git.swarmlab.io:3000/zeus/swarmlab-hybrid#installation[instructions^] to install swarmlab-hybrid
|
|
|
|
See also
|
|
|
|
video::507040807[vimeo]
|
|
|
|
|
|
|
|
=== What students can take this course
|
|
Any student with basic knowledge of networking and computer programming should be able to cope with the needs.
|
|
|
|
=== How is the course going to take place
|
|
|
|
The course will be divided into following parts
|
|
|
|
* A list of videos, asciinemas and instructions explaining the project
|
|
|
|
* lectures BASED ON THE VIDEOS for deeper analysis and questions
|
|
|
|
* and a link:https://gitter.im/swarmlab-hybrid/community[Gitter^] for further conversations and answers to any of your questions
|
|
|
|
=== Will there be some kind of exam/certificate? What will i gain?
|
|
|
|
* The will NOT be an exam or certificate.
|
|
* You will gain contributions in form of commits and merge requests into larger projects, which you can then add to your C.V. and upgrade it.
|
|
|
|
TIP: Just to give some context, *contribution of code is regarded as the most important factor when choosing a software engineer*, thus making the course very helpful for future employment
|
|
|
|
|
|
== Course Description
|
|
|
|
=== Cloud & microservice
|
|
|
|
|
|
==== docker app
|
|
|
|
The section guides you through the following activities:
|
|
|
|
* Create a Dockerized Sample application
|
|
* Start an app container
|
|
|
|
==== docker swarm
|
|
|
|
The section guides you through the following activities:
|
|
|
|
* initializing a cluster of Docker Engines in swarm mode
|
|
* adding nodes to the swarm
|
|
* deploying application services to the swarm
|
|
* managing the swarm once you have everything running
|
|
|
|
|
|
==== Orchestration
|
|
|
|
The section guides you through the following activities:
|
|
|
|
* scale our containerized applications across clouds and datacenters
|
|
|
|
|
|
=== Administer and maintain a swarm of Docker Engines
|
|
|
|
==== manager nodes
|
|
==== Monitor swarm health
|
|
==== Scheduling Services on a Docker Swarm Mode Cluster
|
|
|
|
* Scheduling Preferences
|
|
* Rescheduling on Failure
|
|
|
|
==== ansible
|
|
|
|
* Using ansible to perform operations on managed nodes aka Configurations, deployment, and orchestration/automation
|
|
* Deploying Docker Containers with Ansible
|
|
|
|
|
|
=== Create service on nodes
|
|
|
|
This section includes Docker images and an application for Node development using containers.
|
|
|
|
Create Real-time Application with
|
|
|
|
* Node.js
|
|
* Express.js
|
|
* Socket.io
|
|
* Redis
|
|
|
|
|
|
|
|
=== Monitoring - service applications communication
|
|
|
|
==== Real-Time data/Log Collection
|
|
|
|
=== create noSQL DB (mongo cluster)
|
|
|
|
A replica set is a group of mongod processes that maintain the same data set
|
|
|
|
==== create replicas
|
|
|
|
* Replication in MongoDB
|
|
* Change Streams
|
|
** work with the change stream cursor.
|
|
** Watch Collection/Database/Deployment etc
|
|
|
|
|
|
=== central web admin interface
|
|
|
|
Create a CRUD App
|
|
|
|
==== vuejs
|
|
|
|
Create single-page application
|
|
|
|
|
|
|