work in progress
The aim of this tutorial is to introduce the basic concepts of cloud native application development.
Starting by introducing the basic concepts of version control systems like git. This tutorial demonstrates the basic interaction with Cloud Foundry and shows how to push a small static website to Cloud Foundry. Furthermore the tutorial shows how to build a continuous integration pipeline with Concourse CI in order to push application code to Cloud Foundry. Furthermore the integration of S3 targets and slack into integration pipelines are shown. Lastly this tutorial intends to give a short introduction to the use of Docker containers.
The prerequisites for using this tutorial is the installation of VirtualBox and Vagrant on your local system. In addition, it makes sense to use a SSH client such as Putty:
Once the software is downloaded and installed just clone this repository, go to the cloned folder and spin the development environment up by using vagrant:
git clone https://github.com/smichard/CNA_tutorial.git
cd CNA_tutorial
vagrant up
Any text that is shown in brackets (e. g. <some_text>
) requires an adjustment in the course of this tutorial.
wip describe environment
Component | IP | Port |
---|---|---|
Docker Host | 192.168.58.2 | |
Portainer | 192.168.58.3 | 9000 |
Container registry srv | 192.168.58.4 | 5000 |
Container registry gui | 192.168.58.5 | 8080 |
Minio S3-target | 192.168.58.6 | 9000 |
GitLab | 192.168.58.7 | 30080 |
Concourse | 192.168.58.8 | 8080 |
GitLab
username:
password:
link: 192.168.58.7:30080
GitLab is the first single application built from the ground up for all stages of the DevOps lifecycle for Product, Development, QA, Security, and Operations teams to work concurrently on the same project. GitLab enables teams to collaborate and work from a single conversation, instead of managing multiple threads across disparate tools. GitLab provides teams a single data store, one user interface, and one permission model across the DevOps lifecycle allowing teams to collaborate, significantly reducing cycle time and focus exclusively on building great software quickly.
GitLab
Concourse
username:
password:
link: 192.168.58.8:8080
Concourse CI is an open source continuous integration tool written in Go. Concourse limits itself to three core concepts: tasks, resources, and the jobs that compose them. Interesting features like timed triggers and synchronizing usage of external environments are modeled in terms of these.
Concourse CI
Minio S3-target
username:
password:
link: 192.168.58.6:9000
Minio is an object storage server released under Apache License v2.0. It is compatible with Amazon S3 cloud storage service. It is best suited for storing unstructured data such as photos, videos, log files, backups and container / VM images. Size of an object can range from a few KBs to a maximum of 5TB. Minio server is light enough to be bundled with the application stack, similar to NodeJS, Redis and MySQL.
find more
Container Registry GUI
username:
password:
link: 192.168.58.5:8080
A web UI, authentication service and event recorder for a private docker registry v2. Supports the following features:
- browsing repositories, tags and images in docker registry v2
- optional token based authentication provider with role-based permissions
- Docker registry notification recording and audit find more
Portainer
username:
password:
link: 192.168.58.3:9000
Portainer is a lightweight management UI which allows you to easily manage your different Docker environments. Portainer is meant to be as simple to deploy as it is to use. It consists of a single container that can run on any Docker engine. Portainer allows you to manage your Docker containers, images, volumes, networks and more ! It is compatible with the standalone Docker engine and with Docker Swarm mode.
find more
check if everything is running using portainer
use e.g. Putty to connect to vagrant box
Hostname: 127.0.0.1
Port: 2222
User: vagrant
Password: vagrant
cd /vagrant
ls
- Topics 1
- Topics 2
- Topics 3
Follow Read Me of Chapter 1
- connect to Cloud Foundry
- pushing an app to Cloud Foundry
- scaling an app
- pushing an app to Cloud Foundry using a manifest
- blue / green deployment with zero downtime
cd chapter_2
- install the fly CLI in order to connect to the Concourse CI target
- create an integrtion pipeline with Concourse CI
- set concourse pipeline
- zero downtime deployment to Cloud Foundry through Concourse CI
- versioning semver
- push to S3 target -> minio -> ECS Testdrive
- slack integration
cd chapter_3
- Docker hello-world
- Build a custom Docker container
- Using Concourse CI to build a Docker container
Follow Read Me of Chapter 4