Μια φορά κι έναν καιρό, όταν μάθαινα το Google Cloud Platform, ήθελα απλά να αυτοματοποιήσω τη ροή εργασίας και τα deployments μου με terraform και έγραψα αυτό το IaaC (Infrastructure as a Code) για να διαχειρίζομαι την υποδομή μου εύκολα και γρήγορα.

Τι μπορεί να κάνει αυτό;

Δημιουργεί έναν ασφαλή load balancer με SSL και μετατρέπει τα HTTP requests σε HTTPS με κωδικό ανακατεύθυνσης 301.
Δημιουργεί ένα Instance Template και ρυθμίζει τα πάντα σχετικά με το δίκτυο, το subnet, το startup script.
Δημιουργεί ένα Instance Group και το διαχειρίζεται. Αν η CPU του instance group σου είναι περισσότερο ή λιγότερο από μια τιμή, ο instance group manager θα κάνει αυτόματα scale up ή scale down τα VMs.
Τα VM instances τρέχουν με private IP και η project-wide πρόσβαση SSH δεν επιτρέπεται εξ ορισμού. Διαχείριση του firewall rule για τον health check του load balancer.

Απαιτήσεις

Χρήση

Ορίστε τα βήματα...

  1. Κάνε clone το repository


    git clone git@github.com:flightlesstux/gcp-instance-group-and-loadbalancer-w-terraform.git

  2. Αυθεντικοποίηση στο Google Platform ακόμα κι αν το google-sdk δεν είναι εγκατεστημένο. Είναι πραγματικά χρήσιμο για CI/CD pipelines! Αν έχεις ήδη συνδεθεί στο Google Cloud Platform project σου όπως gcloud auth login, μπορείς να παραλείψεις αυτό το βήμα.


    export GOOGLE_APPLICATION_CREDENTIALS=service-account-key.json

  3. Το Project ID δηλώνεται επίσης μέσω terraform, αλλά αν δεν εξάγεις την τιμή, πιθανότατα θα λάβεις ένα σφάλμα όπως παρακάτω.


    export GOOGLE_PROJECT="0123456789012"

    │ Error: project: required field is not set

    │ with google_compute_instance_group_manager.this,
    │ on group_manager.tf line 1, in resource "google_compute_instance_group_manager" "this":
    │ 1: resource "google_compute_instance_group_manager" "this" {



  4. Επεξεργασία τιμών μεταβλητών


    αρχείο variables.tf.

  5. Ρυθμίσεις Πιστοποιητικού SSL


    Επικόλλησε το πιστοποιητικό SSL και το αρχείο κλειδιού κάτω από τον φάκελο certs. Ο load balancer πρέπει να είναι ασφαλής! Μπορείς να επικολλήσεις το Public key certificate και το Certificate chain στο certificate.crt.


  6. Μπορείς να παρακολουθείς την έκδοση του production environment σου εύκολα με αυτή τη μεταβλητή. Και επίσης, το Instance group χρειάζεται τη νέα έκδοση για να κάνει rolling update.


    export TF_VAR_deploy_version=v1

  7. Αρχικοποίηση


    terraform init

  8. Ας κάνουμε Deploy


    terraform apply ή terraform apply -auto-approve


Διεύθυνση Repository

https://github.com/flightlesstux/gcp-instance-group-and-loadbalancer-w-terraform

Ελπίζω αυτό το άρθρο να σε βοηθήσει.