mirror of
https://gitlab.com/ser-cal/m346.git
synced 2024-11-27 01:41:56 +01:00
477 lines
31 KiB
Markdown
477 lines
31 KiB
Markdown
[10]: https://git-scm.com/downloads
|
|
[11a]: ./x_res/11_VPC-create_400.png
|
|
[11b]: ./x_res/11_VPC-create_ORIG.png
|
|
[12a]: ./x_res/12_VPC-create_400.png
|
|
[12b]: ./x_res/12_VPC-create_ORIG.png
|
|
[13a]: ./x_res/13_VPC-create_400.png
|
|
[13b]: ./x_res/13_VPC-create_ORIG.png
|
|
[22a]: ./x_res/22_Public_Route-table_600.png
|
|
[22b]: ./x_res/22_Public_Route-table_ORIG.png
|
|
[23a]: ./x_res/23_Public_Route-table_600.png
|
|
[23b]: ./x_res/23_Public_Route-table_ORIG.png
|
|
[25a]: ./x_res/25a_Private_route-table_600.png
|
|
[25aa]: ./x_res/25a_Private_route-table_ORIG.png
|
|
[25b]: ./x_res/25b_Private_route-table_600.png
|
|
[25bb]: ./x_res/25b_Private_route-table_ORIG.png
|
|
[26a]: ./x_res/26_private-subnets_1200.png
|
|
[26b]: ./x_res/26_private-subnets_ORIG.png
|
|
[27a]: ./x_res/27_private-subnets_600.png
|
|
[27b]: ./x_res/27_private-subnets_ORIG.png
|
|
[28a]: ./x_res/28_private-subnets_600.png
|
|
[28b]: ./x_res/28_private-subnets_ORIG.png
|
|
[29a]: ./x_res/29_RT-Overview_Pub_600.png
|
|
[29b]: ./x_res/29_RT-Overview_Pub_ORIG.png
|
|
[30a]: ./x_res/30_RT-Overview_Priv_600.png
|
|
[30b]: ./x_res/30_RT-Overview_Priv_ORIG.png
|
|
[31a]: ./x_res/31_IGW_600.png
|
|
[31b]: ./x_res/31_IGW_ORIG.png
|
|
[32a]: ./x_res/32_IGW_600.png
|
|
[32b]: ./x_res/32_IGW_ORIG.png
|
|
|
|
[33a]: ./x_res/33_IGW-2-VPC_600.png
|
|
[33b]: ./x_res/33_IGW-2-VPC_ORIG.png
|
|
[34a]: ./x_res/34_IGW-2-VPC_600.png
|
|
[34b]: ./x_res/34_IGW-2-VPC_ORIG.png
|
|
[35a]: ./x_res/35_IGW-2-VPC_1200.png
|
|
[35b]: ./x_res/35_IGW-2-VPC_ORIG.png
|
|
[36a]: ./x_res/36_Resource-map_1200.png
|
|
[36b]: ./x_res/36_Resource-map_ORIG.png
|
|
[37a]: ./x_res/37_Route-2-IGW_600.png
|
|
[37b]: ./x_res/37_Route-2-IGW_ORIG.png
|
|
[38a]: ./x_res/38_Route-2-IGW_600.png
|
|
[38b]: ./x_res/38_Route-2-IGW_ORIG.png
|
|
[39a]: ./x_res/39_Route-2-IGW_600.png
|
|
[39b]: ./x_res/39_Route-2-IGW_ORIG.png
|
|
[40a]: ./x_res/40_Route-2-IGW_600.png
|
|
[40b]: ./x_res/40_Route-2-IGW_ORIG.png
|
|
[41a]: ./x_res/41_Route-2-IGW_600.png
|
|
[41b]: ./x_res/41_Route-2-IGW_ORIG.png
|
|
[42a]: ./x_res/42_Activate_Auto_PublicIP_600.png
|
|
[42b]: ./x_res/42_Activate_Auto_PublicIP_ORIG.png
|
|
[43a]: ./x_res/43_Activate_Auto_PublicIP_600.png
|
|
[43b]: ./x_res/43_Activate_Auto_PublicIP_ORIG.png
|
|
[44a]: ./x_res/44_Sec_Group_Web_1_600.png
|
|
[44b]: ./x_res/44_Sec_Group_Web_1_ORIG.png
|
|
[45b]: ./x_res/45b_Sec_Group_Priv_600.png
|
|
[45bb]: ./x_res/45b_Sec_Group_Priv_ORIG.png
|
|
|
|
[48a]: ./x_res/48_Public_Instance_600.png
|
|
[48b]: ./x_res/48_Public_Instance_ORIG.png
|
|
[49a]: ./x_res/49_Private_Instance_600.png
|
|
[49b]: ./x_res/49_Private_Instance_ORIG.png
|
|
|
|
![TBZ Banner](../x_gitres/tbz_logo.png)
|
|
|
|
# KN05 Inhaltsverzeichnis
|
|
|
|
[TOC]
|
|
|
|
<br>
|
|
|
|
## Challenges
|
|
|
|
### A) Lab: VPC erstellen und einen Web Server darin deployen
|
|
|
|
#### Ausgangslage:
|
|
:bookmark: Für dieses Lab verwenden Sie in der **AWS Academy** den Kurs **Cloud Foundation**.
|
|
|
|
Die ersten vier Module dürfen Sie freiwillig durcharbeiten. Sie beinhalten Themen, die hilfreich für das Konzeptverständnis von AWS sind.<br>
|
|
...und übrigens: auch sehr geeignet für die Vorbereitung zur **AWS Cloud Practitioner** Zertifizierung.
|
|
|
|
:warning: **Hinweis:** <br>
|
|
Ab Challenge B: Falls Sie die Details auf den Bildern unten sehen wollen, können sie auf den jeweiligen Screenshot (oder Link) klicken. Dann erscheint das Originalbild.
|
|
|
|
|
|
#### Anleitung:
|
|
Für den ersten Challenge der Kompetenz **KN05** wechseln Sie ins fünfte Modul **Module 5 - Networking and Content Delivery**. Hier finden Sie die praktische Übung **Lab 2 - Build your VPC and Launch a Web Server**. Diese ist Schritt für Schritt geleitet.
|
|
|
|
Nach Abschluss dieser Übung sind Sie in der Lage, folgende Tasks selbständig durchzuführen:
|
|
|
|
- Eine Virtual Private Cloud (VPC) erstellen.
|
|
- Private und öffentliche Subnetze in einer VPC aufsetzen.
|
|
- Konfigurieren und Anpassen einer Security Group.
|
|
- Starten einer EC2-Instanz innerhalb dieser VPC.
|
|
|
|
##### Modul 5: Lab 2 - Networking and Content Delivery
|
|
Das Lab dauert ca. 30'. Die Vergangenheit hat gezeigt, dass in diesem Lab sehr schnell Flüchtigkeitsfehler passieren. Es wird deshalb empfohlen, sich an einen ruhigen Ort zurückzuziehen. Führen Sie alle Schritte konzentriert und der Reihe nach durch. Für den Leistungsnachweis müssen drei Screenshots gemacht werden. Erstellen Sie diese erst **nachdem** Sie **alle** Schritte des Labs erfolgreich durchgeführt haben (Beispiele sehen Sie weiter unten).
|
|
|
|
| Zugehörige Elemente | Netzwerkschema |
|
|
|:--------|:------|
|
|
| - Zwei Availability Zones (A + B) <br> - In jeder AZ je ein Public- und ein Private Subnet <br> - Je eine Public- und eine Private Route Table <br> - Internet Gateway in der Public Route Table <br> - NAT Gateway in der Private Route Table <br> - Security Group (HTTP Inbound Rule) <br> - Web-Server im Public-2 Netzwerk. <br> - IP-Adresse im Range: **10.0.2.x** <br> | ![Schema](./x_res/01_VPC-Lab_600.png) |
|
|
|
|
|
|
|
|
#### Ziel der Übung
|
|
:bell: Sie sind in der Lage, folgende Tasks selbständig durchzuführen:
|
|
|
|
- Eine Virtual Private Cloud (VPC) erstellen.
|
|
- Private und öffentliche Subnetze in einer VPC aufsetzen.
|
|
- Konfigurieren und Anpassen einer Security Group.
|
|
- Starten einer EC2-Instanz innerhalb dieser VPC.
|
|
|
|
|
|
##### Leistungsnachweis
|
|
- [ ] Printscreen WebServer-Instanz **Tab Networking** (Private IPv4 Adresse beginnend mit **10.0.2.**).
|
|
- [ ] Printscreen Webserver-Instanz **URL mit Public DNS**.
|
|
- [ ] Printscreen **Load Test** mit 100% CPU Load.
|
|
- [ ] Differenziert und nachvollziehbar im persönlichen Repository dokumentiert.
|
|
- [ ] Fachgespräch mit Coach.
|
|
|
|
Beachten Sie ausserdem die [allgemeinen Informationen zu den Abgaben](../Abgaben.md).
|
|
|
|
##### Beispiel-Abgabe:
|
|
- Screenshots der drei URLs:
|
|
|
|
Interne IP-Adresse beginnend mit 10.0.2 | Public DNS | Load Test
|
|
:---:|:---:|:---:|
|
|
![Interne IP-Adresse](./x_res/06_VPC-Lab_Resultat_IP_400.png) | ![Public DNS](./x_res/04_VPC-Lab_Resultat_400.png) | ![Load Test](./x_res/05_VPC-Lab_Resultat_Load_400.png)
|
|
|
|
|
|
|
|
<br>
|
|
|
|
---
|
|
|
|
|
|
### B) Eigene VPC mit je zwei Public- und Private Subnets in zwei verschiedenen Availability Zones erstellen
|
|
|
|
#### Ausgangslage:
|
|
:bookmark: In dieser Übung nutzen Sie das **Learner Lab**. Sie erstellen wiederum eine VPC (Virtual Private Cloud) - oder ihr persönliches **Virtuelles Datacenter** - mit je zwei Public- und Private Subnets in zwei verschiedenen Availability Zones. Die Konfiguration sieht **fast** gleich aus wie die der letzten Übung. Es gibt allerdings ein paar **wesentliche** Unterschiede. Diese VPC bleibt auch nach dem stoppen des Labs bestehen und kann für weitere Übungen genutzt werden.
|
|
|
|
Ausserdem gibt es bei diesem Lab noch ein paar neue Bedingungen bzgl. Namenskonvention, die Sie für den erfolgreichen Leistungsnachwei erfüllen müssen.
|
|
|
|
Name Ihrer VPC: **M346-XXX-VPC**
|
|
> _- Den Platzhalter **XXX** ersetzen Sie mit den ersten drei Buchstaben Ihres Nachnamens (Beispiel **M346_CAL-VPC**) - CAL steht hier für Calisto. Dasselbe gilt auch unten._
|
|
|
|
<br>
|
|
|
|
:warning: **Hinweis:**<br>
|
|
Diese **VPC** (eigentlich vergleichbar mit einem virtuellen Datacenter) wird so konfiguriert, dass Sie in der nächsten Übung Instanzen im Public und im Privaten Subnet erstellen können. Während die eine Instanz von aussen zugänglich ist, kann die interne nur über die interne Adresse erreicht werden. Sie nutzen dafür ihre Subnet-Kenntnisse von früheren Modulen und Labs. Wie bereits im ersten KN05-Lab, erstellen Sie in Ihrer **neuen VPC** also ebenfalls eine **eigene Route-Table** für die privaten Subnetze (interner Datenverkehr) und einen **Internet-Gateway** für die public Subnetze (Zugang von und nach aussen).
|
|
|
|
|
|
| **AZ1** (Availability Zone 1) | **AZ2** (Availability Zone 2) |
|
|
|:--------|:------|
|
|
| - AZ1: **us-east-1a** <br> - Name Public Subnet 1: **M346-XXX-Public-1A** <br> - IPv4 CIDR Block: **10.0.1.0 /24** <br> - Name Private Subnet 1: **M346-XXX-Private-1A** <br> - IPv4 CIDR Block: **10.0.3.0 /24** <br> | - AZ2: **us-east-1b** <br> - Name Public Subnet 2: **M346-XXX-Public-1B** <br> - IPv4 CIDR Block: **10.0.2.0 /24** <br> - Name Private Subnet 1: **M346-XXX-Private-1B** <br> - IPv4 CIDR Block: **10.0.4.0 /24** <br> |
|
|
|
|
Die genauen Angaben finden Sie in [Diesem Markdown-File](./x_res/custom-vpc.md). Es ist sicherlich sinnvoll, wenn Sie dieses zuerst korrekt ergänzen (gem. Namenskonvention oben), um später beim Lab die **VPC** möglichst fehlerfrei aufzusetzen.
|
|
|
|
##### Netzwerkschema
|
|
![Schema](./x_res/10_VPC_1000.png) |
|
|
|
|
|
|
<br>
|
|
|
|
#### Anleitung:
|
|
In diesem Kapitel wird erklärt, wie man eine **VPC** erstellt und darin **ein** Subnet anlegt. Drei weitere Subnets erstellen Sie selbständig gemäss Anforderungen.
|
|
|
|
:warning: **Empfehlung:** <br>
|
|
Bitte konsultieren Sie in diesem Lab-Challenge die unten verlinkte Konfigurationsdatei. Hier sind sämtliche Informationen vorbereitet, die Sie für ein erfolgreiches Setup benötigen. Gewisse Inhalte müssen vorher aber noch von Ihnen angepassst werden. Deshalb bitte vor dem Start:
|
|
- [Konfigurationsdatei](./x_res/custom-vpc.md) downloaden
|
|
- Fehlende Informationen ergänzen (XXX ersetzen mit ersten drei Buchstaben Ihres Nachnamens)
|
|
- Modifizierte Konfigurationsdatei abspeichern und bereithalten für das Setup in ihrem Lab.
|
|
|
|
|
|
##### Schritt 1: VPC erstellen
|
|
Als erstes erstellen Sie eine **VPC** (Virtual Private Cloud) mit folgender Kenngrösse:
|
|
> Netzwerk-ID: **10.0.0.0**
|
|
> CIDR **/16**
|
|
|
|
|
|
1. Öffnen Sie die [AWS Management Console](https://aws.amazon.com/console/).
|
|
2. Navigieren Sie gemäss Bildreihenfolge via Suchleiste zu **Create VPC**.
|
|
3. In der Suchleiste "VPC" eingeben: :mag_right: [Originalbild][11b] _(oder unten auf erstes Bild klicken)_
|
|
4. In der **Navigation Pane** "Your VPC" wählen: :mag_right: [Originalbild][12b] _(oder unten auf zweites Bild klicken)_
|
|
5. Template "Create VPC" öffnet sich: :mag_right: [Originalbild][13b] _(oder unten auf drittes Bild klicken)_
|
|
**3.** Schritt: In der Suchleiste "VPC" eingeben | **4.** Schritt: Navigation Pane - "Your VPC" wählen | **5. Schritt**: Template "Create VPC" öffnet sich
|
|
:---:|:---:|:---:|
|
|
[![VPC][11a]][11b] | [![Your VPC][12a]][12b] | [![Create VPC 1][13a]][13b]
|
|
6. Füllen Sie die Felder gemäss Namens- und Netzwerkkonvention (siehe Netzwerkplan oben) aus.
|
|
7. Erstellen Sie die VPC mit "Create VPC"
|
|
**6.** Schritt: VPC-Name & Netzwerk-ID / CIDR eintragen | **7.** Schritt: VPC erstellen
|
|
:----:|:---:
|
|
![Create VPC 2](./x_res/14_VPC-create_600.png) | ![Create VPC 3](./x_res/15_VPC-create_600.png)
|
|
8. Resultat
|
|
**8.** Mitteilung mit grünem Hintergrund: Created successfully |
|
|
:---:
|
|
![Schema](./x_res/16_VPC-create_1200.png) |
|
|
|
|
<br>
|
|
|
|
##### Schritt 2: Subnets in der neuen VPC erstellen
|
|
In der neuen VPC erstellen Sie nun je **2 Private-** und **2 Public Subnets** (insgesamt 4 Subnets).
|
|
Das Erstellen des ersten Subnets wird unten beschrieben. Die restlichen Subnets erstellen Sie wiederum gemäss [dieser Konfigurationsdatei](./x_res/custom-vpc.md)
|
|
|
|
|
|
1. Unter "Virtual Private Cloud" "Subnets" auswählen.
|
|
2. Subnet mit "Create subnet" erstellen.
|
|
**1.** Schritt: "Subnets" auswählen - **2.** Schritt: "Create subnet" anklicken |
|
|
:---:
|
|
![Schema](./x_res/17_Subnet_create_1200.png) |
|
|
3. Richtige VPC auswählen
|
|
4. Subnet konfigurieren
|
|
**3.** Schritt: Richtige VPC auswählen | **4.** Schritt: 1. Subnet konfigurieren
|
|
:----:|:---:
|
|
![Create Subnet 1](./x_res/18_Subnet_create_600.png) | ![Create Subnet 2](./x_res/19_Subnet_create_600.png)
|
|
5. ...erstellen Sie nun noch die 3 anderen Subnets gemäss [dieser Konfigurationsdatei](./x_res/custom-vpc.md).
|
|
6. Resultat
|
|
**6.** Schritt: Ansicht der erzeugten Subnetze (nach Namen sortiert) |
|
|
:---:
|
|
![Schema](./x_res/20_Subnet_create_1200.png) |
|
|
|
|
<br>
|
|
|
|
##### Schritt 3: Route Table Configuration
|
|
Nun geht es darum, die Route Tables für die Public- und die Private-Subnets zu definieren. Beim Erstellen einer VPC wird **immer** auch gleichzeitig eine **Public Route Table** erstellt. Diese ist grundsätzlich vergleichbar mit einem **Router**. Allerdings nur virtuell - also kein Device - und auch noch nicht fertig konfiguriert. Dieser **Virtuelle Router** ist physikalisch nicht sichtbar und wir können auch nicht z.B. via SSH darauf zugreifen. Wir können allerdings sogenannte **Routing Rules** (Routing Regeln) definieren. Das entspricht dann grundsätzlich genau demselben Prinzip wie **statische-** und **dynamische Routen** zu erstellen (später mehr dazu).
|
|
|
|
Weil wir als nächstes noch eine **Private Route Table** erstellen werden, geben wir der bestehenden **Public Route Table** mal zuerst einen Namen. Dies ist übrigens der einzige Wert, der **nicht** in der [Konfigurationsdatei](./x_res/custom-vpc.md) definiert wurde. Weil da aber der Name der später folgenden **Private Route Table** abgebildet ist, können wir den Namen relativ einfach davon ableiten. Im Falle des Autors dieses Challenges, heisst die **Public Route Table** **`M346-CAL-Public-RT`** und wird wie folgt eingetragen.
|
|
|
|
1. **Public Route Table**: Namen zuweisen
|
|
**1.** Schritt: Public Router mit einem Namen versehen - Gemäss Konvention: M346-XXX-Public-RT |
|
|
:---:
|
|
![Public Router](./x_res/21_Public_Route-table_1200.png) |
|
|
2. **Routes:** Beim Tab **Routes** ist erkennbar, dass die Destination **10.0.0.0/16** Status "Active" hat. Es ist allerdings noch **Kein** Gateway nach aussen definiert: :mag_right: [Originalbild][22b] _(oder unten auf das **erste** Bild klicken)_
|
|
3. **Subnet association:** Beim Tab **Subnet associations** ist erkennbar, dass es **noch keine** Subnet associations gibt. Später werden wir jeweils die **Private-** und **Public Subnets** zusammenlegen (Explicit subnet association). Erst wenn das geschehen ist, können wir die weiteren Routen legen und sicherstellen, dass diese für **alle** Subnets korrekt sind: :mag_right: [Originalbild][23b] _(oder unten auf das **zweite** Bild klicken)_.
|
|
**2.** Schritt: Route 10.0.0.0/16 ist aktiv | **3.** Noch keine "Subnet associations" per Default
|
|
:----:|:---:
|
|
[![Alt-Text][22a]][22b] | [![Alt-Text][23a]][23b]
|
|
4. **Resource map:** Unter **Your VPCs** zeigt ein kurzer Blick auf die **Resource map** sehr schön, dass sämtliche vier Subnets momentan auf die Route table **`M346-CAL-Public-RT`** zugreifen. In den nächsten Schritten werden wir das ändern müssen. Nämlich so, dass die beiden **Private Subnets** eine **eigene Route table** erhalten und nach aussen abgeschottet werden. Im Gegensatz dazu erhalten die beiden **Public Subnets** einen Zugang nach aussen via **Internet Gateway**, der ebenfalls noch erstellt und konfiguriert werden muss. Erst dann ist unsere **VPC** fertig aufgesetzt.
|
|
**4.** Schritt: Resource map anschauen - aktueller Zwischenstand |
|
|
:---:
|
|
![Public Router](./x_res/24_VPC_Res-map_1200.png) |
|
|
|
|
<br>
|
|
|
|
##### Schritt 4: Private Route Table erstellen
|
|
Wie bereits angekündigt, werden wir nun als erstes für die privaten Subnets eine neue **Private Route Table** erzeugen. In der [Konfigurationsdatei](./x_res/custom-vpc.md) finden wir unter **Create private route table** die folgenden Infos.
|
|
- Name der Route Table: **`M346-XXX-Private-RT`**
|
|
- Subnet associations : **`Private-1A`** und **`Private-1B`**
|
|
|
|
**Vorgehen:**
|
|
1. 1.) Links in der Navigation Pane **Route tables** auswählen: :mag_right: [Originalbild][25aa] _(oder unten auf erstes Bild klicken)_ <br>
|
|
2.) Rechts den Button **Create route table** anklicken <br>
|
|
2. 1.) Route Table Name **`M346-XXX-Private-RT`** eintragen: :mag_right: [Originalbild][25a] _(oder unten auf zweites Bild klicken)_ <br>
|
|
2.) Korrekte **VPC** auswählen (**`M346-XXX-VPC`** ) <br>
|
|
3.) Buttom **Create route table** anklicken <br>
|
|
**1.** Schritt: Die beiden **Private Subnets** aktivieren | **2.** Schritt: Route Table erstellen (**M346-XXX-Private-RT**)
|
|
:----:|:---:
|
|
[![][25a]][25aa] | [![Create Route table][25b]][25bb]
|
|
|
|
Nun müssen wir in der neu erstellten **Private Route table** die beiden **Private Subnets** in einen Verbund nehmen - oder auf Englisch: in eine **Explicit subnet association**. Die folgenden drei Bilder beschreiben diesen Vorgang.
|
|
|
|
3. 1.) Links in der Navigation Pane **Route tables** auswählen <br>
|
|
2.) Den Tab **Subnet associations** anklicken <br>
|
|
3.) Rechts das Feld **Edit subnet association** anklicken
|
|
**3.** Schritt: Unter **Route tables** (1.) im Tab **Explicit subnet associations** (2.) den Button **Edit subnet associations** (3.) anklicken |
|
|
:---:
|
|
![Private Subnet association](./x_res/26_private-subnets_1200.png) |
|
|
4. 1.) Die beiden **Private Subnets** auswählen: :mag_right: [Originalbild][27b] _(oder unten auf erstes Bild klicken)_ <br>
|
|
2.) Button **Save associations** anklicken <br>
|
|
5. Check: :mag_right: [Originalbild][28b] _(oder unten auf zweites Bild klicken)_
|
|
**4.** Schritt: Die beiden **Private Subnets** aktivieren | **5.** Schritt: Überprüfen, ob beide **Private Subnets** in eigenem Verbund sind
|
|
:----:|:---:
|
|
[![Private Subnet association 1][27a]][27b] | [![Private Subnet association 2][28a]][28b]
|
|
6. **Check**: Resource Map **Public RT** :mag_right: [Originalbild][29b] _(oder unten auf erstes Bild klicken)_
|
|
7. **Check**: Resource Map **Private RT** :mag_right: [Originalbild][29b] _(oder unten auf zweites Bild klicken)_
|
|
**6.** Schritt: Resource Map **Public RT** | **7.** Schritt: Resource Map **Private RT**
|
|
:----:|:---:
|
|
[![Public RT][29a]][29b] | [![Private RT][30a]][30b]
|
|
|
|
<br>
|
|
|
|
##### Schritt 5: Internet Gateway erstellen
|
|
Im letzten Schritt erstellen wir noch den **Internet Gateway**, um über die **Public Route** ins Internet zu gelangen. In der [Konfigurationsdatei](./x_res/custom-vpc.md) finden wir unter **Create Internet Gateway** die folgenden Infos.
|
|
- Name: **`M346-XXX-IGW`**
|
|
|
|
**Vorgehen:**
|
|
1. 1.) Links in der Navigation Pane **Internet gateways** auswählen: :mag_right: [Originalbild][31b] _(oder unten auf erstes Bild klicken)_ <br>
|
|
2.) Button **Create internet gateway** anklicken <br>
|
|
2. 1.) Name des Internet Gateways eintragen: :mag_right: [Originalbild][32b] _(oder unten auf zweites Bild klicken)_ <br>
|
|
2.) Auf Buttom **Create internet gateway** anklicken, um diesen zu erstellen
|
|
**1.** Schritt: Internet Gateway auswählen | **2.** Schritt: Name des Internet Gateways eintragen und erstellen
|
|
:----:|:---:
|
|
[![IGW-1][31a]][31b] | [![IGW-2][32a]][32b]
|
|
3. 1.) Button **Actions** anklicken: :mag_right: [Originalbild][33b] _(oder unten auf erstes Bild klicken)_ <br>
|
|
2.) **Attach to VPC** auswählen
|
|
4. 1.) Korrekte VPC unter **Available VPCs** auswählen: :mag_right: [Originalbild][34b] _(oder unten auf zweites Bild klicken)_ <br>
|
|
2.) Buttom **Attach internet gateway** auswählen
|
|
**3.** Schritt: "Actions" anklicken | **4.** Schritt: "Attach to VPC" auswählen
|
|
:----:|:---:
|
|
[![IGW-2][33a]][33b] | [![IGW-2][34a]][34b]
|
|
5. Nun erscheint ein grüner Balken mit der Bestätigung, dass der **neue** Internet gateway erfolgreich an die **VPC** angehängt wurde.
|
|
|
|
**5.** Schritt: Bestätigung |
|
|
:---:
|
|
![Private Subnet association](./x_res/35_IGW-2-VPC_1200.png) |
|
|
6. Kontrollieren wir kurz die aktualisierte **Resource map**. Hier sieht man jetzt, dass der **Internet gateway** (IGW) neu vorhanden, aber **noch nicht** verbunden ist.
|
|
**6.** Schritt: Resource map anschauen - aktueller Zwischenstand |
|
|
:---:
|
|
![IGW visible](./x_res/36_Resource-map_1200.png) |
|
|
|
|
:bookmark: Nun muss in der **Public Route table** noch folgende **Route** zum **neuen Internet gateway** gelegt werden: <br>
|
|
**Alle** Pakete, die **nicht** ins **10.0.0.0/16** Netz gehören, sollen an diesen **neuen IGW** weitergeroutet werden
|
|
|
|
7. 1.) Unter **Route tables** die **Public-RT** auswählen (`M346-XXX-Public-RT`): :mag_right: [Originalbild][37b] _(oder unten auf erstes Bild klicken)_ <br>
|
|
2.) Im Tab **Routes** den Buttom **Edit routes** anklicken
|
|
|
|
8. 1.) Unter **Edit Routes** die **Destination 0.0.0.0/16** auswählen: :mag_right: [Originalbild][38b] _(oder unten auf zweite Bild klicken)_ <br>
|
|
2.) Im Tab **Routes** den Buttom **Edit routes** anklicken <br>
|
|
3.) Auf den Buttom **Save changes** klicken und bestätigen <br>
|
|
9. Den vorher erstellten **Internet Gateway** der neuen Route hinzufügen und bestätigen: :mag_right: [Originalbild][39b] _(oder unten auf drittes Bild klicken)_ <br>
|
|
**7.** Schritt: "Public-RT" auswählen | **8.** Schritt: Route zu IGW erstellen | **9.** Schritt: Den neuen "Internet Gateway" auswählen & bestätigen
|
|
:----:|:---:|:---:
|
|
[![RT-AddRoute1][37a]][37b] | [![RT-AddRoute2][38a]][38b] | [![RT-AddRoute3][39a]][39b]
|
|
10. Bestätigung, dass die Route table **`M346-XXX-Public-RT`** eine neue Route zum **Internet gateway** (IGW) besitzt.
|
|
**10.** Schritt: Beweis, dass die "Route table" mit der neuen Route zum IGW ergänzt wurde |
|
|
:---:
|
|
![Neue ROute](./x_res/40_Route-2-IGW_1200.png) |
|
|
11. Kontrollieren wir kurz die aktualisierte **Resource map**. Hier sieht man jetzt, dass der **Internet gateway** (IGW) neu auch mit der Public route **`M346-XXX-Public-RT`** verbunden ist. Der Zugang zum Internet ist somit hergestellt. **Alle** internen Pakete, die nicht an die **eigene VPC** (10.0.0.0/16) gerichtet sind, werden an den **IGW** weitergeroutet. Umgekehrt kann der **IGW** auch Pakete an unsere **Public Subnets** in unserer **VPC** routen, sofern die entsprechenden Regeln in der Security Group dies zulassen. I
|
|
**11.** Schritt: Resource map anschauen - aktueller Stand |
|
|
:---:
|
|
![IGW visible](./x_res/41_Route-2-IGW_1200.png) |
|
|
<br>
|
|
:bookmark: Last but not least: Es müssen beide **Public Subnets** noch so konfiguriert werden, dass die später darin erstellten Instanzen **automatisch** eine **IPv4-Adresse** erhalten. Damit stellen wir sicher, dass von überall her auf sie zugegriffen werden kann. <br><br>
|
|
|
|
:warning: **Hinweis:**
|
|
Im Beispiel unten wird lediglich **ein** Public Subnet (M346-CAL-Public-1B) konfiguriert. Stellen Sie sicher, dass Sie **auch das andere** Public Subnet noch anpassen.
|
|
|
|
12. 1.) Auf **Subnets** klicken: :mag_right: [Originalbild][42b] _(oder unten auf erstes Bild klicken)_. <br>
|
|
2.) Das erste der beiden **Public Subnets** mit **Häkchen** aktivieren.<br>
|
|
3.) Auf Button **Actions** klicken und **Edit subnet settings** anklicken.<br>
|
|
|
|
13. 1.) Häkchen setzen bei **Enable auto-assign public IPv4 address**: :mag_right: [Originalbild][43b] _(oder unten auf zweites Bild klicken)_. <br>
|
|
**12.** Schritt: Subnets (1.), Häkchen (2.), Actions (3.) Edit subnet setting (4.) | **13.** Schritt: Häkchen bei "Enable auto-assign public IPv4" setzen
|
|
:----:|:---:
|
|
[![Public-IP1][42a]][42b] | [![Public-IP2][43a]][43b]
|
|
|
|
|
|
|
|
|
|
|
|
#### Ziel der Übung
|
|
:bell: Eine **VPC** ist sozusagen Ihr persönliches **Virtuelles Datacenter**. Sie wissen, wie man ein solches erstellt und können innerhalb einer VPC
|
|
- **Private Subnets** erstellen, diese **assoziieren** und eine zugehörige **Private Routing Table** konfigurieren.
|
|
- **Public Subnets** erstellen, diesen einen **Internet Gateway** hinzufügen und mit den richtigen Regeln nach aussen (Internet) verfügbar machen.
|
|
|
|
##### Leistungsnachweis
|
|
- [ ] Die Private- und Public-Subnets sind korrekt erstellt worden (gemäss Namenskonvention)
|
|
- [ ] Es besteht **je eine Private-** und eine **Public-Route**.
|
|
- [ ] Es besteht ein **aktiver Internet Gateway** (inkl. 0.0.0.0/0 Regel)
|
|
- [ ] Differenziert und nachvollziehbar im persönlichen Repository dokumentiert.
|
|
- [ ] Fachgespräch mit Coach.
|
|
|
|
Beachten Sie ausserdem die [allgemeinen Informationen zu den Abgaben](../Abgaben.md).
|
|
|
|
|
|
<br>
|
|
|
|
|
|
### C) Zwei Linux Instanzen aufsetzen. 1x im Public- und 1x im Private Subnet in der vorher erstellten VPC (Advanced)
|
|
|
|
#### Ausgangslage:
|
|
:bookmark: In diesem Challenge werden Sie nun erstmals Instanzen in Ihrer neu erstellten **VPC** aufsetzen. Dabei werden Sie von aussen auf eine Instanz im Public-Subnet zugreifen (per HTTP und SSH). Dann müssen Sie beweisen, dass Sie von da aus die Instanz im Private-Subnet **pingen** können. Der **Ping** wird nur akzeptiert, wenn sich diese Instanz in der **Security Group 1** `M346-XXX-Web-Access` befindet. Hier müssen Sie sich also einerseits überlegen, welchen Port (Protokoll) Sie bei welcher Security-Group öffnen/hinzufügen und andererseits, wie sie diesen Zugriff auf eine spezifische Security Group beschränken. Erst wenn **alle** Bedingungen erfüllt sind, haben Sie diesen Challenge gemeistert.
|
|
|
|
:warning: **Hinweis:**
|
|
Es empfiehlt sich, für die folgenden Übungen ein Keypair `M346-XXX-KN05` zu erstellen. _(XXX = Die ersten drei Buchstaben Ihres Nachnamens)_. Am besten erstellen Sie diesen bei der Installation der ersten EC2-Instanz. Bewahren Sie diesen mindestens solange auf, bis Sie **alle** KN05-Challenges abgegeben haben.
|
|
|
|
##### Netzwerkschema
|
|
![Schema](./x_res/44_Design_Auftrag_C_1000.png) |
|
|
|
|
#### Anleitung:
|
|
Die beiden Instanzen werden sich in unterschiedlichen Subnets befinden. Aus Sicherheitsgründen empfiehlt es sich, die Instanzen in den privaten Subnets restriktiver zu behandeln als diejenigen, die sich in einem Public Subnet befinden.
|
|
Aus diesem Grund erstellen Sie für zuerst **zwei unterschiedliche Security Groups**. Anschliessend erstellen Sie in jedem der beiden Subnets eine EC2-Instanz (Details weiter unten) und legen diese den Anforderungen entsprechend in die korrekte Security Group.
|
|
|
|
Das Lab ist erfolgreich abgeschlossen, wenn folgende Bedingungen erfüllt sind:
|
|
- Die Namenskonvention wurde bei sämtlichen Objekten eingehalten (Security Groups, EC2-Instanzen)
|
|
- Die **ersten drei Oktetts** der interne IP-Adresse der Instanz im **Public Subnet** beginnen mit **`10.0.1... /24`**
|
|
- Die **ersten drei Oktetts** der interne IP-Adresse der Instanz im **Private Subnet** beginnen mit **`10.0.4... /24`**
|
|
- Der **Webserver** auf der EC2-Instanz im Public Subnet ist erreichbar via **HTTP** (Webbrowser)
|
|
- Sie können per **SSH** auf die EC2-Instanz im Public Subnet zugreifen.
|
|
- Sie können von der EC2-Instanz im Public Subnet die EC2-Instanz im Private Subnet pingen.
|
|
|
|
##### Schritt 1: Zwei Security Groups erstellen und konfigurieren
|
|
Als erstes müssen für diese beiden Instanzen **je eine** Security Group erstellt werden:
|
|
- Für die erste Instanz im Public Subnet wird die Security Group `M346-XXX-Web-Access` erstellt: Gemäss [custom-vpc.md](./x_res/custom-vpc.md) (siehe unter **Challenge C)**
|
|
- Für die zweite Instanz im Private Subnet wird die Security Group `M346-XXX-Priv-Only` erstellt: Gemäss [custom-vpc.md](./x_res/custom-vpc.md) (siehe unter **Challenge C)**
|
|
|
|
1. 1.) Security Group **M346-XXX-Web-Access**: :mag_right: [Originalbild][44b] _(oder unten auf erstes Bild klicken)_. <br>
|
|
2.) Security Group **M346-XXX-Priv-Only**: :mag_right: [Originalbild][45bb] _(oder unten auf zweites Bild klicken)_. <br>
|
|
**1.** Schritt: 1. Security Group: Name eintragen (1.) - Korrekte VPC auswählen (2.) | **2.** Schritt: 2. Security Group: (1.-3.) - Regel für erste Security Group (4.-5.)
|
|
:----:|:---:
|
|
[![Security Group 1][44a]][44b] | [![Security Group 2][45b]][45bb]
|
|
|
|
|
|
|
|
|
|
##### Schritt 2: Zwei Instanzen in unterschiedlichen Subnets erstellen
|
|
2. Setzen Sie die beiden Instanzen gemäss den Angaben unten in der Tabelle auf.
|
|
|
|
| EC2 Instanz (Public): | EC2 Instanz (Private): |
|
|
|:--------|:------|
|
|
| - Name: **KN05_XXX_Webserver** (XXX = Gemäss Namenskonvention) <br> - Amazon Linux (AWS) - Default <br> - AMI: `Amazon Linux 2023 AMI` <br> - Instance type: `t2.micro` <br> - Key-pair name: `M346-XXX-KN05.pem` <br> - VPC `M346-XXX-VPC` <br> - Subnet `M346-XXX-Public-1A` <br> - Auto-assign public IP `Enable` <br> - Firewall (security groups) `Select existing security group` <br> - Security-Group `M346-XXX-Web-Access` auswählen <br> - User-data eingebem - gemäss [**diesem Code**](https://gitlab.com/ser-cal/m346-scripts/-/blob/main/KN05/user-data.md?ref_type=heads) <br> | - Name: **KN05_XXX_Private** (Linux **ohne** Datenbank) <br> - Amazon Linux (AWS) - Default <br> - AMI: `Amazon Linux 2023 AMI` <br> - Instance type: `t2.micro` <br> - Key-pair name: `M346-XXX-KN05.pem` <br> - VPC `M346-XXX-VPC` <br> - Subnet `M346-XXX-Private-1B` <br> - Auto-assign public IP `Disable` (Default, da im Private Subnet) <br> - Firewall (security groups) `Select existing security group` <br> - Security-Group `M346-XXX-Priv-Only` auswählen <br> - **Keine** User-data bei dieser Instanz <br> |
|
|
|
|
##### Schritt 3: Check
|
|
Überprüfen, ob **beide** Instanzen korrekt aufgesetzt wurden.
|
|
|
|
3. Bestätigung, dass die Route table **`M346-XXX-Public-RT`** eine neue Route zum **Internet gateway** (IGW) besitzt.
|
|
**1.** Schritt: Beide Instanzen wurden aufgesetzt und laufen |
|
|
:---:
|
|
![Instanzen laufen](./x_res/47_Instances_running_1200.png) |
|
|
|
|
4. 1.) **Private IP**: Beginnt mit **10.0.1.** / **AZ** ist **us-east-1a** / **Public IP** vorhanden : :mag_right: [Originalbild][48b] _(oder unten auf erstes Bild klicken)_. <br>
|
|
2.) **Private IP**: Beginnt mit **10.0.4.** / **AZ** ist **us-east-1b** / **Public IP** nicht vorhanden :mag_right: [Originalbild][49b] _(oder unten auf zweites Bild klicken)_. <br>
|
|
**1.** Schritt: 1. Details der Public Instanz | **2.** Schritt: 2. Details der Private Instanz
|
|
:----:|:---:
|
|
[![1. Instanz][48a]][48b] | [![2. Instanz][49a]][49b]
|
|
|
|
Folgende Tasks müssen funktionieren, um den **technischen Teil** dieses Challenges erfolgreich abzuschliessen:<br>
|
|
:heavy_check_mark: Der Webserver auf der Public Instanz funktioniert (im Browser erscheint Text **It works!**) <br>
|
|
:heavy_check_mark: Sie können mit **SSH** auf die Public Instanz zugreifen<br>
|
|
:heavy_check_mark: Sie können Von der Public Instanz einen **Ping** auf die Private Instanz erfolgreich ausführen.
|
|
|
|
<br>
|
|
|
|
#### Ziel der Übung
|
|
:bell: **Verständnisaufbau** für die Funktionalität einer Security Group und die Bedeutung und Anwendung von Public- und Privat Subnets. Sie können anhand von anderen Use-Cases beurteilen, welche Umgebung für eine bestimmte Anwendung sinnvoll ist. Sie sind in der Lage, einen solchen Service korrekt und sicher aufzusetzen. Natürlich können Sie in einem Fachgespräch mit dem Coach auch Fragen mit umfassenden Argumenten begründen und beantworten :muscle: :smiley: .
|
|
|
|
|
|
##### Leistungsnachweis
|
|
- [ ] Erklären Sie in eigenen Worten, wie Sie die zweite Security Group (M346-XXX-Priv-Only) ergänzt haben und wer welchen Zugriff auf die darin liegenden Instanzen hat.
|
|
- [ ] Wie sieht es aus bzgl. Redundanz / Hochverfügbarkeit? Geben Sie dazu eine technisch sinnvolle Analyse ab (inkl. Massnahmen); ohne dass der Coach Sie darauf aufmerksam macht. _Hier wird geschaut, wie ausgeprägt Sie sich auf das Fachgespräch vorbereiten und ob Sie die Inhalte des Auftrages ganzheitlich durchlesen und erfüllen._
|
|
- [ ] Erstellen Sie drei Screenshots als Beweis (siehe unten Beispielabgabe).
|
|
- **Webserver:** - Browser öffnen und Public IP-Adresse eingeben.
|
|
- `SSH` auf **Public** Instanz: - Via Instance Connect oder SSH auf Terminal der Public Instanz gehen.
|
|
- `Ping` auf **Private** Instanz: - Ping vom Terminal auf IP-Adresse der Private Instanz absetzen.
|
|
- [ ] Differenziert und nachvollziehbar im persönlichen Repository dokumentiert.
|
|
- [ ] Fachgespräch mit Coach.
|
|
|
|
Beachten Sie ausserdem die [allgemeinen Informationen zu den Abgaben](../Abgaben.md).
|
|
|
|
##### Beispiel-Abgabe:
|
|
- Screenshots der drei URLs:
|
|
|
|
Webserver | SSH | ICMP
|
|
:---:|:---:|:---:|
|
|
![Webserver](./x_res/50_Webserver_works_400.png) | ![SSH](./x_res/51_SSH_works_400.png) | ![ICMP](./x_res/52_PING_works_400.png)
|
|
|
|
|
|
|
|
<br>
|
|
|
|
:warning: **Hinweis:**
|
|
Das war der letzte KN05-Challenge. Bitte terminieren Sie sämtliche **KN05**-Instanzen. **VPC**, **Subnets**, **Security Groups** etc... bitte sein lassen (diese kosten nichts)
|
|
|
|
|
|
|
|
<br><br>
|
|
|
|
---
|
|
|
|
> [⇧ **Zurück zu KN05**](./Readme.md)
|
|
|
|
---
|
|
|
|
> [⇧ **Zurück zur Hauptseite**](https://gitlab.com/ser-cal/M346)
|
|
|
|
---
|
|
|