Laborator 11. Google Cloud Platform (GCP)

Cunoștințe și abilități ce vor fi dobândite

  • Administrarea resurselor cloud folosind consola grafică.
  • Securitate în cloud.
  • Configurarea rutării în cloud.
  • Accesarea serviciilor de transfer de fișiere (FTP).

Pregătire infrastructură de laborator

  • Vom crea o infrastructură de rețea în cloud-ul Google.
  • Fiecare student va folosi contul propriu de pe GCP. Pentru a putea crea infrastructura necesară veți primi un număr de credite pentru GCP.

Fiecare student își va denumi resursele astfel student<X>-[nume_resursa]. De exemplu student1-vpc. GCP acceptă în numele de obiecte doar litere mici, cifre și cratimă.

Vă puteți afla ID-ul accesând linkul https://rl.vladn.st/get/<email>“

Introducere

Servicii de cloud existente:

  • Google Cloud Platform
  • Microsoft Azure
  • Amazon Web Services.

Vom discuta mai departe despre Google Cloud Platform (GCP). Serviciile pe care le vom folosi în cadrul laboratorului:

  • Google Compute Engine
  • Networking: VPC, Cloud NAT

Alte servicii în cloud-ul GCP:

  • Cloud Storage
  • Databases: AlloyDB, Cloud SQL, Cloud Bigtable
  • Networking: Cloud DNS, Cloud CDN
  • Cloud Monitoring

O listă completă a tuturor serviciilor oferite de Google poate fi consultată aici : GCP Services

(Google) Compute Engine oferă capacitate dinamică computațională în cloud. De asemenea, pentru a dezvolta și lansa aplicații nu mai ai nevoie să îți achiziționezi hardware-ul, acest serviciu punându-ți la dispoziție: servere virtuale, configurarea securității și networking, ajustarea spațiului de stocare.

Virtual Private Cloud (VPC) Network te ajută să pornești resursele GCP într-o rețea virtuală definită de tine. Această rețea seamănă cu o rețea tradițională unde poți configura spații de adrese, tabele de rutare, gateways și setări de securitate, dar are în plus beneficiile utilizării unui infrastructuri scalabile. Fiecare VPC creat este izolat logic de oricare alt VPC din cloud.

Două sau mai multe VPC-uri pot comunica folosind VPC Network Peering. Rețelele VPC conectate folosind VPC Network Peering pot fi în același proiect sau proiecte diferite.

Pot fi create două tipuri de rețele tip VPC:

  • auto-mode - unde un subnet din fiecare regiune este automat alocat, subnet-ul fiind creat sub blocul de adrese 10.128.0.0/9 .
  • custom-mode - nu sunt create subnet-uri automat și utilizatorul poate avea control complet asupra clasei de IP-uri private utilizate pentru crearea VPC-ului.

Având în vedere considerentele de mai sus, nu se pot conecta două rețele VPC create în auto-mode, dar se pot conecta două rețele, una creată auto-mode, cealaltă custom-mode cât timp nu folosesc adrese IP din aceeași clasă.

3 tipuri de adrese IP:

  • adrese IP private
  • adrese IP publice. O adresă publică ce a fost atribuită unei instanțe pe care am închis-o va reveni în pool-ul inițial de adrese. Când vom reporni instanța, aceasta va avea o altă adresă IP publică.
  • adrese IP publice statice sunt adrese IP publice care rămân asociate pe cont până în momentul în care alegi să renunți la ele.

Care este diferența între adrese IP private și adresele IP publice?

Subnet - interval de adrese IP într-un VPC. Poți să lansezi resursele GCP într-un subnet fie ales automat (auto-mode) fie creat la alegere (custom-mode).

În GCP avem două tipuri de IP-uri:

  • Publice (atunci când resursele trebuie să aibă acces direct în Internet, de exemplu serverele web). O adresă IP publică poate fi configurată pe interfața unei mașini virtuale create în GCP. Pot fi aplicate ulterior reguli de firewall pentru a putea controla accesul către acea mașină virtuală.
  • Private (atunci când resursele nu trebuie să fie accesibile din Internet, de exemplu bazele de date)

În fiecare subnet, există 4 IP-uri rezervate în intervalul primar :

  • Prima este adresă de rețea
  • A doua este rezervată ca adresă pentru default gateway.
  • Penultima adresă este rezervată de către GCP pentru viitoare utilizări.
  • Ultima este adresa de broadcast

Cloud NAT. Cloud NAT este o componentă a GCP care permite comunicarea între instanțele din VPC care nu folosesc adrese IP publice și Internet.
Cloud NAT oferă conectivitate în Internet pentru următoarele tipuri de resurse:

  • Mașini virtuale din Compute Engine fără adrese IP publice/externe asociate
  • Clustere de Google Kubernetes Engine (GKE)
  • Instanțe de Cloud Run (aplicații containerizate), Cloud Functions (code in the cloud/FaaS), App Engine

Tabela de rutare. Fiecare subnet dintr-un VPC trebuie să aibă asociată o tabelă de rutare, definită în cadrul VPC network. Google Cloud folosește mai multe tipuri de rute:

  • Generate de sistem
    • Rute default ( 0.0.0.0/0 pentru IPv4 sau ::/0 pentru IPv6)
    • Rute pentru subrețea (create automat pentru fiecare subrețea)
  • Rute personalizate (custom)
    • Statice (către diverse destinații)
    • Dinamice (sesiuni BGP către un Cloud Router)
  • Rute peering
  • Rute policy-based (către un Network Load Balancer din GCP).

Un VPC firewall acționează ca un firewall virtual care controlează traficul pentru una sau mai multe instanțe. Putem adăuga reguli pentru fiecare firewall care să permită traficul către/de la instanțele asociate.

Prestabilit, fiecare firewall permite tot traficul de ieșire și blochează traficul de intrare. Acțiunile pentru o regulă din firewall pot fi ori “allow” ori “deny”, nu ambele.

Pentru mai multe detalii despre funcționarea VPC-urilor și resursele GCP, urmăriți tutorialul.

Documentație GCP:

Compute Engine
VPC and Subnets
Cloud Router

Topologie

Exerciții

Acest laborator își propune configurarea unei rețele asemănătoare topoligiei de mai sus. Vom avea nevoie de crearea unui VPC cu 4 subnets, unul în care va fi creată stația Host, iar apoi câte un subnet separat pentru Red, Green și Blue.

Stația Host va fi folosită drept Bastion, o mașină virtuală folosită doar pentru a ne conecta prin Internet la celelalte mașini, Red, Green și Blue.

Această va avea configurată o adresa IP publică, celelalte vor avea configurate doar adresa IP private, comunicând pe Internet cu ajutorul serviciului de Cloud NAT.

Următoarele exerciții constituie pașii de parcurgere pentru ca la final să putem folosi rețeaua.

00. Completare formular de feedback

Vă invităm să evaluați activitatea echipei de RL și să precizați punctele tari și punctele slabe și sugestiile voastre de îmbunătățire a materiei. Feedback-ul vostru este foarte important pentru noi să creștem calitatea materiei în anii următori și să îmbunătățim materiile pe care le veți face în continuare.

Găsiți formularul de feedback în partea dreaptă a paginii principale de RL de pe curs.pub.ro într-un frame numit FEEDBACK.

Vă mulțumim!

01. [0p] Definere proiect

Din stanga sus, de lângă logo-ul Google Cloud se poate fie selecta proiectul de lucru, fie crea un nou proiect.

Dacă cream un nou proiect (apăsăm pe butonul aferent), pagina pentru proiect nou va fi deschisă pe ecran de unde putem seta numele proiectului și organizația la care este asociat.

Pentru acest laborator, ne vom folosi de proiectul upb-retele-locale-2024 prin contul oferit de catre asistent.

Dacă nu vă apare proiectul în listă, încercați să îl căutați folosind numele proiectului (upb-retele-locale-2024).

02. [10p] VPC Networks

După accesarea proiectului, proiectul va avea atașat un VPC network numit default, care are alocat subnet-urile implicite pentru fiecare regiune.

Care era subrețeua folosită de Google Cloud pentru range-urile predefinite din fiecare regiune ?

GCP impune o limitare de maxim 5 Cloud Router pentru fiecare regiune. Deoarece un Cloud Router este atașat la o rețea, va trebui să avem maxim 5 VPC Networks per regiune. Înainte de a selecta regiunea pentru VPC Network verificați că nu sunt deja 5 VPC Networks în acea regiune.

Avem nevoie de un VPC custom pe care îl putem crea apăsând pe butonul CREATE VPC NETWORK aflat sub câmpul de căutare. În pagina de creare a unui nou VPC trebuie să completăm următoarele detalii:

  1. Numele VPC-ului (doar caractere mici, cifre și cratimă sunt acceptate) și opțional o descriere - student$X$-vpc-<name> (e.g. student1-vpc)
  2. Numele unui subnet definit în interiorul acestui VPC (aceleași limitări ca mai sus la caracterele acceptate) - student$X$-host (e.g. student1-host)
  3. Regiunea (este important să cream toate subnet-urile din acest laborator în aceeași regiune, preferabil europe-west1)
  4. Range-ul de adrese IP din subnet - 10.$X$.0.0/24 (unde $X$ e id-ul de student )
  5. Regulile de firewall aplicate pe VPC (nu uitați să bifați regulile de permitere SSH cel puțin). Vom edita regulile mai târziu pentru fiecare VPC.

03. [10p] VPC Subnets

Pentru a lansa instanțe într-un VPC trebuie să avem cel puțin un subnet. Vom avea nevoie de alte 3 subnets diferite create, similar cu cea de la pasul anterior, fiecare subnet având definită o subrețea diferită.

În laboratorul de astăzi toate subrețelele vor fi definite în aceeași regiune (aceeași cu a VPC Network-ului creat la punctul anterior).

Mai departe, vom crea 3 subnetări in VPC creat la pasul anterior(pentru instanțele Red, Green, Blue).

Masca de rețea corespunzătoare (/24 pentru subnet-urile private):

  • 10.$X$.1.0/24
  • 10.$X$.2.0/24
  • 10.$X$.3.0/24, unde $X$ - id-ul studentului

Recomandăm ca numele pentu subnet-uri să fie sugestive. Pentru exercițiul nostru:

  • student$X$-red
  • student$X$-green
  • student$X$-blue, unde $X$ - id-ul studentului

Din secțiunea VPC Networks, dacă mergem pe Subnets in current project și selectăm doar VPC-network-ul creat de noi anterior (excludem default), ar trebui să avem următoarea listă:

04. [10p] Rezervare adresă IP publică

Dorim să ne rezervăm propria adresă IP publică statică pentru a o asocia mai târziu unei instanțe din topologia noastră. În VPC Network, alegem secțiunea IP addresses și opțiunea Reserve External Static IP Address (păstrăm setările default), setăm Name cu valoarea student$X$-public, Network Service Tier bifăm Standard, selectăm tipul Regional și aceeași regiune definită pe VPC-ul creat mai devreme (preferabil europe-west1) și apăsăm Reserve.

Este un cost pentru fiecare adresă IP publică statică care nu este alocată unei instanțe (“totul în viață se plătește”).

Acum avem în lista de adrese IP publice statice din contul nostru, adresa IP alocată mai devreme.

05. [15p] Cloud Router

Căutăm în câmpul din centru Cloud Router din secțiunea Hybrid Connectivity și selectăm Create Router.

Căutați Cloud Router în bara de căutare pentru a găsi secțiunea.

Numele pe care îl alocăm Routerului nou creat este student$X$-router. (e.g. student1-router) Trebuie să îl alocăm VPC-ului creat la exercițiul anterior.

Regiunea selectată va fi aceeași ca la subpunctele anterioare (preferabil europe-west1).

GCP impune o limitare de maxim 5 Cloud Router pentru fiecare regiune. Dacă nu mai puteți face un Cloud Router în regiunea europe-west1, îl puteți face în altă regiune din Europa. Această regiune trebuie să fie aceeași cu cea a VPC-ului creat anterior.

06. [15p] Cloud NAT

Căutăm Cloud NAT din secțiunea Network Services și selectăm Get Started pentru a configura un Cloud NAT gateway.

Căutați Network Services în bara de căutare pentru a găsi secțiunea.

Întâi trebuie ales un nume pentru noul gateway și putem utiliza student$X$-gw. (student1-gw)

În secțiunea dedicată selecției Cloud Router-ului trebuie mai întâi să selectăm VPC-ul definit mai devreme, apoi regiunea (aceeași ca la pașii anteriori). Ultimul pas este selectarea instanței de Cloud Router definită la pasul precedent. Tot la acest pas se poate selecta care dintre subrețelele definite sunt mapate către Cloud NAT Gateway. Avem opțiunea fie de a include toate subrețelele, fie de a selecta individual fiecare rețea în parte.

De asemenea, avem fie opțiunea de a selecta o adresă IP publică rezervată sau de a utiliza o adresă în mod automat.

07. [30p] Instanțe Compute Engine

În pagina de start a Google Cloud avem un buton Create a VM.

Prima data creăm instanța Host.

Vom selecta următoarele configurații:

În secțiunea Machine configuration: e2-small.

În secțiunea Boot Disk alegeți imaginea sistemului de operare: Ubuntu 22.04 x86_64.

Expandând secțiunea Advanced options putem accesa secțiunea Networking.

În această secțiune setăm tipul de interfață de rețea ( gVNIC sau VirtIO ).

gVNIC - Google Virtual NIC este un tip de interfață virtuală de rețea creat pentru Compute Engine ca alternativă la virtIO, oferind performanțe mai bune și o mai bună consistență.

Alegem VPC-ul corespunzător creat anterior.

În meniul de selecție pentru adresa IP internă ( Primary internal IPv4 address ) putem selecta ca adresă IP fie o adresă de tip efemer, fie una custom. Adresele IP de tip efemer nu se vor schimba dacă instanța va fi oprită sau repornită, se schimbă doar în cazul în care instanța va fi ștearsă.

În meniul de selecție pentru adresa IP externă ( External IPv4 address ) vom folosi adresa IP creată la exercițiul anterior doar pentru interfața către internet, pentru celelalte interfețe nu vom adaugă nicio adresa publică. În cazul în care această nu apare, vom crea altă adresa IP publică.

Pentru a ne putea conecta pe instanțele create prin SSH avem două modalități.

Prima modalitate este să folosim conectarea din browser, GCP va genera automat chei de ssh pentru terminalul din browser, iar numele de utilizator creat implicit pe instanță este numele de utilizator aferent Google (Ex. popescuion@gmail.com va avea utilizatorul implicit popescuion).

A doua modalitate este utilizarea de chei proprii de SSH, le puteți salva în secțiunea Security → Manage Access → Add Item fie în momentul în care creați mașina virtuală, fie editând detaliile ulterior. Nu adăugați chei de ssh pentru utilizatorul implicit folosind terminalul pentru că vor fi șterse. Această metodă necesită creare unor chei de SSH în prealabil.

Odată adăugată cheia, GCP va crea și un utilizator nou, la fel că cel menționat în cheie. De exemplu, dacă cheia are formatul <CHEIE_PUBLICA> andrei@hostname-andrei, atunci GCP va crea un nou utilizator andrei pe care îl puteți folosi să va conectați prin SSH.

Continuăm cu celelalte instanțe Blue, Red și Green.

În secțiunea Machine configuration: e2-small.

În secțiunea Boot Disk alegeți imaginea sistemului de operare: Ubuntu 22.04 x86_64.

Expandând secțiunea Advanced options putem accesa secțiunea Networking.

În meniul de selecție pentru adresa IP internă ( Primary internal IPv4 address ) vom selecta adresa de tip efemer.

În meniul de selecție pentru adresa IP externă ( External IPv4 address ) nu vom selecta nicio adresă, folosind None.

În cazul în care ați adăugat cheia de SSH publică pe toate cele 4 instanțe, vă puteți loga pe instanța Host folosind adresa IP publică a acesteia. În cazul în care folosiți (recomandat) și un agent ssh, puteți adăuga la comanda ssh și opțiunea -A, iar ulterior vă puteți loga de pe instanța Host pe celelalte 3.

ssh -i [private_key] <google-username>@[ip_public] -A

Pentru a ne putea conecta prin ssh de pe Host și la celelalte instanțe fără a utiliza ssh-agent, va trebui să copiem cheia privată de pe stația locală pe Host:

# pe Linux:
scp -i [private_key] [private_key] <google-username>@[ip_public]:~

(pe Windows, puteți folosi WinSCP)

Verificați conectivitatea la Internet pe cele 4 instanțe (Host, Red, Green, Blue).

08. [10p] ICMP

În cazul în care atunci când ați creat VPC-ul nu ați bifat și regula de permitere ICMP veți observa că nu putem să dăm ping de pe oricare stație către oricare stație.

Pentru a permite traficul de ICMP, adăugăm câte o nouă regulă în fiecare VPC în acest scop.

Verificați conectivitatea între Red, Green și Blue.

rl/labs/11.txt · Last modified: 2024/01/09 08:27 by cosmin.prunaru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0