Skip to content

Commit

Permalink
Add files
Browse files Browse the repository at this point in the history
  • Loading branch information
Phong Ngo committed Sep 17, 2024
1 parent 204ffcc commit 80765aa
Show file tree
Hide file tree
Showing 338 changed files with 13,265 additions and 0 deletions.
40 changes: 40 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Publish to GH Pages
on:
push:
branches:
- main
pull_request:

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v3
with:
submodules: true

- name: Checkout destination
uses: actions/checkout@v3
if: github.ref == 'refs/heads/main'
with:
ref: gh-pages
path: built-site

- name: Setup Hugo
run: |
curl -L -o /tmp/hugo.tar.gz 'https://github.com/gohugoio/hugo/releases/download/v0.110.0/hugo_extended_0.110.0_linux-amd64.tar.gz'
tar -C ${RUNNER_TEMP} -zxvf /tmp/hugo.tar.gz hugo
- name: Build
run: ${RUNNER_TEMP}/hugo

- name: Deploy
if: github.ref == 'refs/heads/main'
run: |
cp -R public/* ${GITHUB_WORKSPACE}/built-site/
cd ${GITHUB_WORKSPACE}/built-site
git add .
git config user.name 'dhij'
git config user.email '[email protected]'
git commit -m 'Updated site'
git push
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "themes/hugo-theme-learn"]
path = themes/hugo-theme-learn
url = https://github.com/matcornic/hugo-theme-learn.git
Empty file added .hugo_build.lock
Empty file.
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 .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

43 changes: 43 additions & 0 deletions config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
baseURL = 'https://ngophong010.github.io/Workshop001/'

# Change the default theme to be use when building the site with Hugo
theme = "hugo-theme-learn"

# For search functionality
[outputs]
home = [ "HTML", "RSS", "JSON"]

[params]
# Change default color scheme with a variant one. Can be "red", "blue", "green".
themeVariant = "workshop"
# Git hub repo link
editURL = ""
description = ""
author = "[email protected]"
showVisitedLinks = true
disableBreadcrumb = false
disableNextPrev = false

[Languages]
[Languages.en]
title = "A Workshop on DevOps and Networking"
weight = 1
languageName = "English"

[[Languages.en.menu.shortcuts]]
name = "<i class='fab fa-facebook'></i> AWS Study Group"
identifier = "AWS Study Group FB"
url = "https://www.facebook.com/groups/awsstudygroupfcj/"
weight = 20

[Languages.vi]
title = "Tìm hiểu về DevOps và Networking"
weight = 2
languageName = "Tiếng Việt"

[[Languages.vi.menu.shortcuts]]
name = "<i class='fab fa-facebook'></i> AWS Study Group"
identifier = "AWS Study Group FB"
url = "https://www.facebook.com/groups/awsstudygroupfcj/"
weight = 20

74 changes: 74 additions & 0 deletions content/1-Introduce/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
title : "Introduction"
date : "`r Sys.Date()`"
weight : 1
chapter : false
pre : " <b> 1. </b> "
---
#### What is NetDevOps | Network DevOps?
You may also hear the terms **Network DevOps** or **NetDevOps**. Maybe you are already a Network engineer and have a great grasp on the network components within the infrastructure you understand the elements used around networking such as DHCP, DNS, NAT etc. You will also have a good understanding of the hardware or software-defined networking options, switches, routers etc.

But if you are not a network engineer then we probably need to get foundational knowledge across the board in some of those areas so that we can understand the end goal of **Network DevOps**.

But in regards to those terms, we can think of **NetDevOps** or **Network DevOps** as applying the DevOps Principles and Practices to the network, applying version control and automation tools to the network creation, testing, monitoring, and deployments.

If we think of **Network DevOps** as having to require automation, we mentioned before about DevOps breaking down the silos between teams. If the networking teams do not change to a similar model and process then they become the bottleneck or even the failure overall.

Using the automation principles around provisioning, configuration, testing, version control and deployment is a great start. Automation is overall going to enable speed of deployment, stability of the networking infrastructure and consistent improvement as well as the process being shared across multiple environments once they have been tested. Such as a fully tested Network Policy that has been fully tested on one environment can be used quickly in another location because of the nature of this being in code vs a manually authored process which it might have been before. A really good viewpoint and outline of this thinking can be found here. [Network DevOps](https://www.thousandeyes.com/learning/techtorials/network-devops)

### Networking The Basics

#### Network Devices
If you prefer this content in video form, check out these videos from Practical Networking:

- [Network Devices - Hosts, IP Addresses, Networks - Networking Fundamentals - Lesson 1a](https://www.youtube.com/watch?v=bj-Yfakjllc&list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi&index=1)
- [Network Devices - Hub, Bridge, Switch, Router - Networking Fundamentals - Lesson 1b](https://www.youtube.com/watch?v=H7-NR3Q3BeI&list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi&index=3)

**Host** are any devices which send or receive traffic.
![Host](/images/1.introduce/001-host.png)

**IP Address** the identity of each host.
![IP Address](/images/1.introduce/002-IPAddress.png)

**Network** is what transports traffic between hosts. If we did not have networks there would be a lot of manual movement of data!

A logical group of hosts which require similar connectivity.
![Network](/images/1.introduce/003-network.png)

**Switches** facilitate communication **within** a network. A switch forwards data packets between hosts. A switch sends packets directly to hosts.

- Network: A Grouping of hosts which require similar connectivity.
- Hosts on a Network share the same IP address space.

![Switch](/images/1.introduce/004-switches.png)

**Router** facilitates communication between networks. As we said before that a switch looks after communication within a network a router allows us to join these networks together or at least give them access to each other if permitted.

A router can provide a traffic control point (security, filtering, redirecting) More and more switches also provide some of these functions now.

Routers learn which networks they are attached to. These are known as routes, a routing table is all the networks a router knows about.

A router has an IP address in the networks they are attached to. This IP is also going to be each host's way out of their local network also known as a gateway.

Routers also create the hierarchy in networks I mentioned earlier.
![Switch](/images/1.introduce/005-router.png)

### Switches vs Routers
**Routing** is the process of moving data between networks.
- A router is a device whose primary purpose is Routing.

**Switching** is the process of moving data within networks.
- A Switch is a device whose primary purpose is switching.

This is very much a foundational overview of devices as we know there are many different Network Devices such as:
- Access Points
- Firewalls
- Load Balancers
- Layer 3 Switches
- IDS / IPS
- Proxies
- Virtual Switches
- Virtual Routers

Although all of these devices are going to perform Routing and/or Switching.

77 changes: 77 additions & 0 deletions content/1-Introduce/_index.vi.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
title : "Giới thiệu"
date : "`r Sys.Date()`"
weight : 1
chapter : false
pre : " <b> 1. </b> "
---
#### NetDevOps là gì | Network DevOps?
Có thể bạn cũng đã nghe đến các thuật ngữ **Network DevOps** hoặc **NetDevOps**. Có thể bạn đã là một kỹ sư mạng và hiểu rõ về các thành phần mạng trong hạ tầng mà bạn làm việc, cũng như hiểu các yếu tố liên quan đến mạng như DHCP, DNS, NAT, v.v. Bạn cũng sẽ có kiến thức vững về các tùy chọn mạng phần cứng hoặc phần mềm, switch, router, v.v.

Tuy nhiên, nếu bạn không phải là kỹ sư mạng, thì chúng ta cần có kiến thức cơ bản trong một số lĩnh vực đó để có thể hiểu được mục tiêu cuối cùng của **Network DevOps**.

Về mặt các thuật ngữ này, chúng ta có thể coi **NetDevOps** hoặc **Network DevOps** là việc áp dụng các nguyên tắc và thực tiễn DevOps vào mạng, áp dụng kiểm soát phiên bản và các công cụ tự động hóa vào việc tạo dựng, kiểm tra, giám sát và triển khai mạng.

Nếu chúng ta nghĩ về **Network DevOps** như một yêu cầu về tự động hóa, chúng ta đã đề cập trước đây rằng DevOps phá vỡ các rào cản giữa các đội nhóm. Nếu các đội nhóm mạng không thay đổi sang một mô hình và quy trình tương tự, thì họ sẽ trở thành nút thắt cổ chai hoặc thậm chí là điểm thất bại tổng thể.

Việc sử dụng các nguyên tắc tự động hóa xung quanh cung cấp, cấu hình, kiểm tra, kiểm soát phiên bản và triển khai là một khởi đầu tuyệt vời. Tự động hóa sẽ giúp tăng tốc độ triển khai, đảm bảo tính ổn định của hạ tầng mạng và cải thiện liên tục, cũng như quy trình này có thể được chia sẻ qua nhiều môi trường một khi chúng đã được kiểm tra. Ví dụ như một chính sách mạng đã được kiểm tra hoàn toàn trên một môi trường có thể được sử dụng nhanh chóng ở một vị trí khác nhờ tính chất của nó là mã thay vì một quy trình được viết tay như trước đây. Một cái nhìn và phác thảo thật tuyệt vời về tư duy này có thể được tìm thấy tại đây. [Network DevOps](https://www.thousandeyes.com/learning/techtorials/network-devops)

### Cơ Bản về Mạng
Hãy quên đi khía cạnh DevOps để bắt đầu và bây giờ chúng ta cần xem xét rất ngắn gọn về một số kiến thức cơ bản về mạng.
#### Thiết bị mạng
Nếu bạn thích nội dung này dưới dạng video, hãy xem các video từ Practical Networking:

- [Thiết bị mạng - Hosts, Địa chỉ IP, Mạng - Cơ bản về mạng - Bài 1a](https://www.youtube.com/watch?v=bj-Yfakjllc&list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi&index=1)
- [Thiết bị mạng - Hub, Bridge, Switch, Router - Cơ bản về mạng - Bài 1b](https://www.youtube.com/watch?v=H7-NR3Q3BeI&list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi&index=3)

**Host** là bất kỳ thiết bị nào gửi hoặc nhận lưu lượng.

![Host](/images/1.introduce/001-host.png)

**Địa chỉ IP** là danh tính của mỗi host.

![Địa chỉ IP](/images/1.introduce/002-IPAddress.png)

**Mạng** là cái gì đó vận chuyển lưu lượng giữa các host. Nếu không có mạng, sẽ có rất nhiều chuyển động dữ liệu thủ công!

Một nhóm logic của các host cần có kết nối tương tự.

![Mạng](/images/1.introduce/003-network.png)

**Switch** tạo điều kiện cho việc giao tiếp **trong** một mạng. Một switch chuyển tiếp các gói dữ liệu giữa các host. Một switch gửi gói đến trực tiếp các host.

- Mạng: Một nhóm các host cần có kết nối tương tự.
- Các host trên một mạng chia sẻ cùng một không gian địa chỉ IP.

![Switch](/images/1.introduce/004-switches.png)

**Router** tạo điều kiện cho việc giao tiếp giữa các mạng. Như chúng ta đã nói trước đó, một switch quản lý giao tiếp trong một mạng, trong khi router cho phép chúng ta kết nối các mạng này với nhau hoặc ít nhất là cho phép chúng truy cập lẫn nhau nếu được phép.

Một router có thể cung cấp một điểm kiểm soát lưu lượng (bảo mật, lọc, chuyển tiếp). Ngày càng có nhiều switch cũng cung cấp một số chức năng này.

Router học các mạng mà chúng được kết nối. Những mạng này được gọi là tuyến đường, bảng định tuyến là tất cả các mạng mà router biết đến.

Một router có một địa chỉ IP trong các mạng mà nó được kết nối. Địa chỉ IP này cũng sẽ là cách mà mỗi host ra khỏi mạng cục bộ của chúng, còn được gọi là cổng vào (gateway).

Router cũng tạo ra sự phân cấp trong các mạng mà tôi đã đề cập trước đó.

![Router](/images/1.introduce/005-router.png)

### Switch so với Router
**Định tuyến** là quá trình di chuyển dữ liệu giữa các mạng.
- Một router là một thiết bị có mục đích chính là định tuyến.

**Chuyển mạch** là quá trình di chuyển dữ liệu trong các mạng.
- Một Switch là một thiết bị có mục đích chính là chuyển mạch.

Đây là cái nhìn tổng quan cơ bản về các thiết bị, vì chúng ta biết rằng có nhiều loại thiết bị mạng khác nhau như:
- Điểm truy cập (Access Points)
- Tường lửa (Firewalls)
- Bộ cân bằng tải (Load Balancers)
- Switch lớp 3 (Layer 3 Switches)
- IDS / IPS
- Proxy
- Switch ảo (Virtual Switches)
- Router ảo (Virtual Routers)

Mặc dù tất cả những thiết bị này đều thực hiện định tuyến và/hoặc chuyển mạch.
79 changes: 79 additions & 0 deletions content/2-OSIModel/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
---
title : "The OSI Model - The 7 Layers "
date : "`r Sys.Date()`"
weight : 2
chapter : false
pre : " <b> 2. </b> "
---
The content below comes mostly from Practical Networking's Networking Fundamentals series. If you prefer this content in video form, check out these two videos:
- [The OSI Model: A Practical Perspective - Layers 1 / 2 / 3](https://www.youtube.com/watch?v=LkolbURrtTs&list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi&index=4)
- [The OSI Model: A Practical Perspective - Layers 4 / 5+](https://www.youtube.com/watch?v=0aGqGKrRE0g&list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi&index=4)

### The OSI Model - The 7 Layers
The overall purpose of networking as an industry is to allow two hosts to share data. Before networking if I want to get data from this host to this host I'd have to plug something into this host walk it over to the other host and plug it into the other host.

Networking allows us to automate this by allowing the host to share data automatically across the wire for these hosts to do this they must follow a set of rules.

This is no different than any language. English has a set of rules that two English speakers must follow. Spanish has its own set of rules. French has its own set of rules, while networking also has its own set of rules

The rules for networking are divided into seven different layers and those layers are known as the OSI model.

#### Introduction to the OSI Model
The OSI Model (Open Systems Interconnection Model) is a framework used to describe the functions of a networking system. The OSI model characterises computing functions into a universal set of rules and requirements to support interoperability between different products and software. In the OSI reference model, the communications between a computing system are split into seven different abstraction layers: **Physical, Data Link, Network, Transport, Session, Presentation, and Application.**
![the OSI Model](/images/2.OSIModel/001-theOSIModel.png)

#### Physical
Layer 1 in the OSI model and this is known as physical, the premise of being able to get data from one host to another through a means be it physical cable or we could also consider Wi-Fi in this layer as well. We might also see some more legacy hardware seen here around hubs and repeaters to transport the data from one host to another.
![Physical Layer](/images/2.OSIModel/002-physical.png)

#### Data Link
Layer 2, the data link enables a node to node transfer where data is packaged into frames. There is also a level of error correcting that might have occurred at the physical layer. This is also where we introduce or first see MAC addresses.
![Data Link Layer](/images/2.OSIModel/003-dataLink.png)

#### Network
You have likely heard the term layer 3 switches or layer 2 switches. In our OSI model Layer 3, the Network has a goal of an end to end delivery, this is where we see our IP addresses also mentioned in the first-day overview.

Routers and hosts exist at layer 3, remember the router is the ability to route between multiple networks. Anything with an IP could be considered Layer 3.
![Network Layer](/images/2.OSIModel/004-network.png)

So why do we need addressing schemes on both Layers 2 and 3? (MAC Addresses vs IP Addresses)

If we think about getting data from one host to another, each host has an IP address but there are several switches and routers in between. Each of the devices has that layer 2 MAC address.

The layer 2 MAC address will go from host to switch/router only, it is focused on hops whereas the layer 3 IP addresses will stay with that packet of data until it reaches its end host. (End to End)

IP Addresses - Layer 3 = End to End Delivery

MAC Addresses - Layer 2 = Hop to Hop Delivery

Now there is a network protocol that we will get into but not today called ARP(Address Resolution Protocol) which links our Layer3 and Layer2 addresses.

#### Transport
Service to Service delivery, Layer 4 is there to distinguish data streams. In the same way that Layer 3 and Layer 2 both had their addressing schemes, in Layer 4 we have ports.
![Transport Layer](/images/2.OSIModel/005-transport.png)

#### Session, Presentation, Application
The distinction between Layers 5,6,7 is or had become somewhat vague.

It is worth looking at the [TCP IP Model](https://www.geeksforgeeks.org/tcp-ip-model/) to get a more recent understanding.

Let's now try and explain what's happening when hosts are communicating with each other using this networking stack. This host has an application that's going to generate data that is meant to be sent to another host.

The source host is going to go through is what's known as the encapsulation process. That data will be first sent to layer 4.

Layer 4 is going to add a header to that data which can facilitate the goal of layer 4 which is service to service delivery. This is going to be a port using either TCP or UDP. It is also going to include the source port and destination port.

This may also be known as a segment (Data and Port)

This segment is going to be passed down the OSI stack to layer 3, the network layer, and the network layer is going to add another header to this data. This header is going to facilitate the goal of layer 3 which is the end to end delivery meaning in this header you will have a source IP address and a destination IP, the header plus data may also be referred to as a packet.

Layer 3 will then take that packet and hand it off to layer 2, layer 2 will once again add another header to that data to accomplish layer 2's goal of hop to hop delivery meaning this header will include a source and destination mac address. This is known as a frame when you have the layer 2 header and data.

That frame then gets converted into ones and zeros and sent over the Layer 1 Physical cable or wifi.
![OSI Model - Application](/images/2.OSIModel/006-application.png)

I did mention above the naming for each layer of header plus data but decided to draw this out as well.
![OSI Model - Data](/images/2.OSIModel/007-application.png)

The Application sending the data is being sent somewhere so the receiving is somewhat in reverse to get that back up the stack and into the receiving host.
![OSI Model - Application](/images/2.OSIModel/008-application.png)
Loading

0 comments on commit 80765aa

Please sign in to comment.