Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
vfarcic committed Dec 5, 2020
0 parents commit a8d55c4
Show file tree
Hide file tree
Showing 153 changed files with 19,714 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
draft.toml
charts/
NOTICE
LICENSE
README.md
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/public
/creds

9 changes: 9 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[submodule "themes/dimension"]
path = themes/dimension
url = https://github.com/sethmacleod/dimension.git
[submodule "themes/hugo-nederburg-theme"]
path = themes/hugo-nederburg-theme
url = https://github.com/appernetic/hugo-nederburg-theme.git
[submodule "themes/forty"]
path = themes/forty
url = https://github.com/MarcusVirg/forty
8 changes: 8 additions & 0 deletions .gitpod.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
FROM gitpod/workspace-full

RUN brew install hugo
RUN mkdir -p /home/gitpod/copilot/bin
RUN curl -Lo /home/gitpod/copilot/bin/copilot https://github.com/aws/copilot-cli/releases/latest/download/copilot-linux
RUN chmod +x /home/gitpod/copilot/bin/copilot
ENV PATH $PATH:/home/gitpod/copilot/bin

12 changes: 12 additions & 0 deletions .gitpod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
image:
file: .gitpod.Dockerfile

tasks:
- init: make init
- command: hugo server --baseUrl $(gp url 1313) --appendPort=false
name: Hugo
openMode: tab-before

ports:
- port: 1313
onOpen: open-preview
27 changes: 27 additions & 0 deletions .helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
*.png

# known compile time folders
target/
node_modules/
vendor/
10 changes: 10 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
FROM klakegg/hugo:0.78.2-alpine
RUN apk add -U git
COPY . /src
RUN make init
RUN make build

FROM nginx:1.19.4-alpine
RUN mv /usr/share/nginx/html/index.html /usr/share/nginx/html/old-index.html
COPY --from=0 /src/public /usr/share/nginx/html
EXPOSE 80
16 changes: 16 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
SHELL := /bin/bash

init:
git submodule init
git submodule update
cp content/img/banner.jpg themes/forty/static/img/.

build:
hugo

dev:
hugo server

codefresh:
codefresh auth create-context devops-catalog --api-key $CF_TOKEN

4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/vfarcic/copilot-demo)

# [The DevOps Toolkit Series](http://www.devopstoolkitseries.com)

6 changes: 6 additions & 0 deletions archetypes/default.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: "{{ replace .TranslationBaseName "-" " " | title }}"
date: {{ .Date }}
draft: true
---

145 changes: 145 additions & 0 deletions config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
# Site settings
baseURL = "/"
languageCode = "en-us"
title = "The DevOps Toolkit Series"
theme = "forty"

# Enter your tracking code to enable Google Analytics
googleAnalytics = "UA-174219852-1"

# Enter your disqus shortname to enable comments
disqusShortname = ""

[params]

# Provide your metadata here.
name = "Viktor Farcic"
description = "Books and courses dedicated to DevOps practices and tools"

# Link custom assets relative to /static
custom_css = []
custom_js = []
favicon = "favicon.ico"

# Just a custom image variable, please define it in .md files for content.
image = ""

# 404 error customization
[params.error404]
heading = "Page couldn't be found"
text = "Please visit [this page](/)"

# Navigation Section
# TODO: Remove params
[params.navigation]
title = "The DevOps Toolkit Series"
subtitle = "By Viktor Farcic"
menu = "Menu"
# Optional logo as brand stored in img/
# logo = "logo.png"

[[params.navigation.links]]
name = "Home"
url = "#"

# Banner section
[params.banner]
# To change the background image on the homepage banner, replace 'banner.jpg' in
# the 'static/img' folder.
title = "The DevOps Toolkit Series"
subtitle = "Where DevOps becomes practice"
buttonText = "Get Started"


# Tiles Section
[params.tiles]
enable = true
# Display your showcases here.

[[params.tiles.showcase]]
title = "The DevOps Toolkit"
subtitle = "Catalog, Patterns, And Blueprints"
image = "catalog-small.jpg"
url = "posts/catalog"

[[params.tiles.showcase]]
title = "Kubernetes Chaos Engineering"
subtitle = "Kubernetes Chaos Engineering With Chaos Toolkit And Istio"
image = "chaos-small.jpg"
url = "posts/chaos"

[[params.tiles.showcase]]
title = "Canary Deployments"
subtitle = "Canary Deployments To Kubernetes Using Istio and Friends"
image = "canary-small.jpg"
url = "posts/canary"

[[params.tiles.showcase]]
title = "The DevOps 2.6 Toolkit"
subtitle = "Jenkins X"
image = "devops26-small.jpg"
url = "posts/devops-26"

[[params.tiles.showcase]]
title = "The DevOps 2.5 Toolkit"
subtitle = "Monitoring, Logging, and Auto-Scaling Kubernetes"
image = "devops25-small.jpg"
url = "posts/devops-25"

[[params.tiles.showcase]]
title = "The DevOps 2.4 Toolkit"
subtitle = "Continuous Deployment To Kubernetes"
image = "devops24-small.png"
url = "posts/devops-24"

[[params.tiles.showcase]]
title = "The DevOps 2.3 Toolkit"
subtitle = "Kubernetes"
image = "devops23-small.jpg"
url = "posts/devops-23"

[[params.tiles.showcase]]
title = "The DevOps 2.2 Toolkit"
subtitle = "Building Self-Adaptive And Self-Healing Docker Clusters"
image = "devops22-small.jpg"
url = "posts/devops-22"

[[params.tiles.showcase]]
title = "The DevOps 2.1 Toolkit"
subtitle = "Building, testing, deploying, and monitoring services inside Docker Swarm clusters"
image = "devops21-small.png"
url = "posts/devops-21"

[[params.tiles.showcase]]
title = "The DevOps 2.0 Toolkit"
subtitle = "Automating the Continuous Deployment Pipeline with Containerized Microservices"
image = "devops20-small.jpg"
url = "posts/devops-20"

[params.blog]
# All blogs defined in their own files. You can find example blogs
# at 'exampleSite/content/blogs'. Copy the 'blogs' folder into the 'content' directory
# at the root of this Hugo site.
# For more informtion take a look at the README.
# To add more blogs just copy and paste the code.

# Footer section
[params.footer]
enable = true
copyright = "Viktor Farcic"

# Uses font awesome icons
[[params.footer.social]]
icon = "fa-twitter"
url= "https://www.twitter.com/vfarcic"
label = "Twitter"

[[params.footer.social]]
icon = "fa-github"
url= "https://www.github.com/vfarcic"
label = "GitHub"

[[params.footer.social]]
icon = "fa-linkedin"
url= "https://www.linkedin.com/in/viktorfarcic/"
label = "LinkedIn"
Binary file added content/.DS_Store
Binary file not shown.
Binary file added content/img/.DS_Store
Binary file not shown.
Binary file added content/img/banner.jpg
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 content/img/canary-small.jpg
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 content/img/canary-smaller.jpg
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 content/img/catalog-small.jpg
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 content/img/catalog-smaller.jpg
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 content/img/chaos-small.jpg
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 content/img/chaos-smaller.jpg
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 content/img/devops20-small.jpg
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 content/img/devops20-smaller.jpg
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 content/img/devops21-small.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 content/img/devops21-smaller.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 content/img/devops22-small.jpg
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 content/img/devops22-smaller.jpg
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 content/img/devops23-small.jpg
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 content/img/devops23-smaller.jpg
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 content/img/devops24-small.jpg
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 content/img/devops24-small.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 content/img/devops24-smaller.jpg
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 content/img/devops24-smaller.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 content/img/devops25-small.jpg
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 content/img/devops25-small.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 content/img/devops25-smaller.jpg
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 content/img/devops26-small.jpg
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 content/img/devops26-smaller.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 21 additions & 0 deletions content/posts/canary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
title: "Canary Deployments To Kubernetes Using Istio and Friends"
date: 2018-11-09T01:24:49+02:00
draft: false
---

## Udemy Course

Preview it or buy it now at **[Udemy](https://www.udemy.com/course/canary-deployments-to-kubernetes-using-istio-and-friends/?referralCode=75549ECDBC41B27D94C4)**.

![](/img/canary-smaller.jpg#floatright)

Kubernetes provides a few "decent" deployment strategies out of the box. However, they might not be enough. Canary is missing.

What is the canary deployments process? How should we implement it in Kubernetes? Which tools should we use? We'll try to answer those and quite a few other questions.

This talk will guide you through the journey of practical implementation of canary deployments. We'll use Kubernetes because it makes many things easier than any other platform before it. We'll need service mesh because, after all, most of the canary process is controlled through networking and changes to Kubernetes definitions. We'll need a few other tools, and we might even need to write our own scripts to glue everything into a cohesive process.

The end result will be a set of instructions and a live demo of a fully operational canary deployment process that can be plugged into any continuous delivery tool. We'll define the process, and we'll choose some tools. Nevertheless, we'll do all that while making the process agnostic and applicable to any toolset you might pick.

Preview it or buy it now at **[Udemy](https://www.udemy.com/course/canary-deployments-to-kubernetes-using-istio-and-friends/?referralCode=75549ECDBC41B27D94C4)**.
27 changes: 27 additions & 0 deletions content/posts/catalog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
title: "The DevOps Toolkit"
date: 2018-11-09T01:24:49+02:00
draft: false
---

## Catalog, Patterns, And Blueprints

The **video course** is available in **[Udemy](https://www.udemy.com/course/devops-catalog/?referralCode=4F332F3B87309FE1C2EF)**.

The **book** is currently available only from **[LeanPub](https://leanpub.com/the-devops-toolkit-catalog)**.

![](/img/catalog-smaller.jpg#floatright)

Unlike my other books and courses where I typically dive into a single tool or a single process, this time, I chose a different approach. Instead of going to great lengths trying to help someone become proficient in one thing, this time, I am trying to give you a quick introduction into many different tools and processes. We will skip the potentially lengthy discussions and in-depth exercises. What I want, this time, is to help you make decisions. Which tool works the best for a given task? What should we explore in more depth, and what is a waste of time? The goal is not to learn everything about a tool in detail but rather to dive into many concepts and a plethora of tools right away. The aim is to get you up-to-speed fast while producing useful "real world" results. Think of each chapter as a crash-course into something with the outcome that you can use right away.

I will assume that you don't have time to read hundreds of pages to learn something that you are not even sure is useful. Instead, I will guess that you got up to one hour to read a summary, and then decide if a tool is worthwhile a more significant investment.

This is a catalog of the tools, and the processes I believe are useful in this day and age. I will try to transfer what I think works well and what might have been the right choice in the past but is not optimal anymore.

Nevertheless, even if the scope of this book/course is different than others, some things are still the same. This is not a book/course with lots of theory. Sure, there will be some text you might need to read, but most of the content consists of hands-on exercises. I always believed that the best way to learn something is through practice, and I am not giving up on that. This is a book/course full of real-world hands-on examples, and each chapter will let you dive into a different tool or a process. At the end of each, you will be able to say, "now I know what this is about, and now I can make a decision whether it is a worthwhile investment."

Think of this book/course as a catalog, combined with patterns and blueprints.

The **video course** is available in **[Udemy](https://www.udemy.com/course/devops-catalog/?referralCode=4F332F3B87309FE1C2EF)**.

The **book** is currently available only from **[LeanPub](https://leanpub.com/the-devops-toolkit-catalog)**.
27 changes: 27 additions & 0 deletions content/posts/chaos.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
title: "Kubernetes Chaos Engineering"
date: 2018-11-09T01:24:49+02:00
draft: false
---

## Kubernetes Chaos Engineering With Chaos Toolkit And Istio

The **video course** is available in **[Udemy](https://www.udemy.com/course/kubernetes-chaos-engineering-with-chaos-toolkit-and-istio/?referralCode=02D178244316CE05E24A)**.

The **book** is available from **[Amazon](https://amzn.to/2xUscyO)**, **[LeanPub](https://leanpub.com/the-devops-2-7-toolkit)**, and (probably) through your favorite book seller.

![](/img/chaos-smaller.jpg#floatright)

There are very few things as satisfying as destruction, especially when we're frustrated.

How often did it happen that you have an issue that you cannot solve and that you just want to scream or destroy things? Did you ever have a problem in production that is negatively affecting a lot of users? Were you under a lot of pressure to solve it, but you could not "crack" it as fast as you should. It must have happened, at least once, that you wanted to take a hammer and destroy servers in your datacenter. If something like that never happened to you, then you were probably never in a position under a lot of pressure. In my case, there were countless times when I wanted to destroy things. But I didn't, for quite a few reasons. Destruction rarely solves problems, and it usually leads to negative consequences. I cannot just go and destroy a server and expect that I will not be punished. I cannot hope to be rewarded for such behavior.

What would you say if I tell you that we can be rewarded for destruction and that we can do a lot of good things by destroying stuff? If you don't believe me, you will soon. That's what chaos engineering is about. It is about destroying, obstructing, and delaying things in our servers and in our clusters. And we're doing all that, and many other things, for a very positive outcome.

Chaos engineering tries to find the limits of our system. It helps us deduce what are the consequences when bad things happen. We are trying to simulate the adverse effects in a controlled way. We are trying to do that as a way to improve our systems to make them more resilient and capable of recuperating and resisting harmful and unpredictable events.

That's our mission. We will try to find ways how we can improve our systems based on the knowledge that we will obtain through the chaos.

The **video course** is available in **[Udemy](https://www.udemy.com/course/kubernetes-chaos-engineering-with-chaos-toolkit-and-istio/?referralCode=02D178244316CE05E24A)**.

The **book** is available from **[Amazon](https://amzn.to/2xUscyO)**, **[LeanPub](https://leanpub.com/the-devops-2-7-toolkit)**, and (probably) through your favorite book seller.
10 changes: 10 additions & 0 deletions content/posts/devops-20.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: "The DevOps 2.0 Toolkit"
date: 2017-09-21T13:31:31+02:00
draft: false
---

### Automating the Continuous Deployment Pipeline with Containerized Microservices

**This book is based on very old technology and the code behind it is not maintained anymore.**

9 changes: 9 additions & 0 deletions content/posts/devops-21.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: "The DevOps 2.1 Toolkit"
date: 2017-09-21T15:12:25+02:00
draft: false
---

### Building, testing, deploying, and monitoring services inside Docker Swarm clusters

**This book is based on very old technology and the code behind it is not maintained anymore.**
9 changes: 9 additions & 0 deletions content/posts/devops-22.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: "The DevOps 2.2 Toolkit"
date: 2017-09-21T15:17:10+02:00
draft: false
---

### Building Self-Adaptive And Self-Healing Docker Clusters

**This book is based on very old technology and the code behind it is not maintained anymore.**
25 changes: 25 additions & 0 deletions content/posts/devops-23.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
title: "The DevOps 2.3 Toolkit"
date: 2017-12-14T15:17:10+02:00
draft: false
---

## Kubernetes

### Deploying and managing highly-available and fault-tolerant applications at scale

Buy it now from **[Amazon](https://amzn.to/2GvzDjy)**, **[LeanPub](https://leanpub.com/the-devops-2-3-toolkit)**, or look for it through your favorite book seller.

![](/img/devops23-smaller.jpg#floatright)

The goal of this book is not to convince you to adopt Kubernetes but to provide a detailed overview of its features. I want you to become confident in your Kubernetes knowledge and only then choose whether to embrace it. That is, unless you already made up your mind and stumbled upon this book in search of Kubernetes guidance.

The plan is to cover all aspects behind Kubernetes, from basic to advanced features. We'll go not only through the tools behind the official project but also third-party add-ons. I hope that, by the time you finish reading this book, you will be able to call yourself "Kubernetes ninja". I cannot say that you will know everything there is to know about the Kubernetes ecosystem. That would be impossible to accomplish since its growing faster than any single person could follow. What I can say is that you will be very confident in running a Kubernetes cluster of any scale in production.

Like all my other books, this one is very hands-on. There will be just enough theory for you to understand the principles behind each topic. The book is packed with examples, so I need to give you a heads up. Do not buy this book if you're planning to read it on a bus or in bed before going to sleep. You will need to be in front of your computer. A terminal will be your best friend. `kubectl` will be your lover.

The book assumes that you feel comfortable with containers, especially Docker. We won't go into details how to build an image, what is container registry, and how to write Dockerfile. I hope you already know all that. If that's not the case, you might want to postpone reading this and learn at least basic container operations. This book is about things that happen after you built your images and stored them in a registry.

This book is about running containers at scale and not panicking when problems arise. It is about the present and the future of software deployment and monitoring. It's about embracing the challenges and staying ahead of the curve.

Buy it now from **[Amazon](https://amzn.to/2GvzDjy)**, **[LeanPub](https://leanpub.com/the-devops-2-3-toolkit)**, or look for it through your favorite book seller.
Loading

0 comments on commit a8d55c4

Please sign in to comment.