Jak używać HashiCorp Waypoint do współpracy z GitLab CI/CD

Jak używać HashiCorp Waypoint do współpracy z GitLab CI/CD

HashiCorp zaprezentował nowy projekt Waypoint na HashiCorp Digital. Wykorzystuje plik oparty na HCL do opisywania budowy, dostarczania i wydawania aplikacji na różnych platformach chmurowych, zaczynając od Kubernetes, a kończąc na AWS i Google Cloud Run. Można powiedzieć, że Waypoint to połączenie Terraform i Vagrant do opisywania procesu budowy, dostarczania i wydawania Twoich aplikacji.

Nie zmieniając wytycznych, HashiCorp wydał Waypoint jako oprogramowanie open source, w zestawie znajdziesz również wiele przykładów. Poziom orkiestratora pozostaje w Twoich rękach, Waypoint dostarczany jest jako plik wykonywalny, który możesz uruchomić bezpośrednio na swoim laptopie lub w dowolnym wybranym narzędziu orkiestracji CI/CD. Cel wdrożenia aplikacji również wybierasz sam, ponieważ Waypoint obsługuje Kubernetes, Docker, Google Cloud Run, AWS ECS i inne.

Po przeczytaniu wyjątkowych dokumentację i eleganckich przykłady aplikacji dostarczonych przez HashiCorp, postanowiliśmy przyjrzeć się bliżej orkiestracji Waypoint przy użyciu GitLab CI/CD. Aby to zrobić, weźmiemy prostą aplikację Node.js uruchamianą na AWS ECS z repozytorium przykładów.

Po sklonowaniu repozytorium przyjrzymy się strukturze aplikacji, która wyświetla jedną stronę:

Jak używać HashiCorp Waypoint do współpracy z GitLab CI/CD

Jak mogłeś zauważyć, w tym projekcie brakuje pliku Dockerfile. Nie zostały one dodane do przykładu, ponieważ w zasadzie nie są nam potrzebne, gdyż Waypoint zajmie się nimi za nas. Przyjrzyjmy się bliżej plikowi waypoint.hcl, aby zrozumieć, co będzie robić:

project = "example-nodejs"

app "example-nodejs" {
  labels = {
    "service" = "example-nodejs",
    "env" = "dev"
  }

  build {
    use "pack" {}
    registry {
    use "aws-ecr" {
        region = "us-east-1"
        repository = "waypoint-gitlab"
        tag = "latest"
    }
    }
  }

  deploy {
    use "aws-ecs" {
    region = "us-east-1"
    memory = "512"
    }
  }
}

Na etapie budowy Waypoint wykorzystuje Cloud Native Buildpacks (CNB), aby określić język programowania projektu i stworzyć obraz dla Dockera bez użycia Dockerfile. Zasadniczo jest to ta sama technologia, która jest wykorzystywana przez GitLab w części Auto DevOps na etapie Auto Build. Miło widzieć, że CNB od CNCF zyskuje coraz większe uznanie w branży.

Gdy obraz zostanie zbudowany, Waypoint automatycznie przesyła go do naszej rejestru AWS ECR, aby był gotowy do dostarczenia. Po zakończeniu budowy, krok dostarczania wykorzystuje rozszerzenie AWS ECS do wdrożenia naszej aplikacji na nasze konto AWS.

Na moim laptopie wszystko jest proste. Instaluję Waypoint, który jest już uwierzytelniony w moim koncie AWS, i to po prostu działa. Ale co się stanie, jeśli zechcę wyjść poza mój laptop? Albo nagle chcę zautomatyzować to wdrożenie jako część mojego ogólnego potoku CI/CD, w którym uruchamiane są moje bieżące testy integracyjne, testy bezpieczeństwa i inne? To jest ten moment, w którym do akcji wchodzi GitLab CI/CD!

N.B. Jeśli planujesz wdrożenie CI/CD lub chcesz zacząć stosować najlepsze praktyki budowy potoków, zwróć uwagę na nowy kurs Slёrma. „CI/CD na przykładzie GitLab CI”. Obecnie jest dostępny w cenie przedsprzedaży.

Waypoint w GitLab CI/CD

Aby zaaranżować to wszystko w GitLab CI/CD, sprawdźmy, co będziemy potrzebować w naszym pliku. .gitlab-ci.yml:

  • Po pierwsze, potrzebny jest podstawowy obraz do uruchomienia w nim. Waypoint działa na każdym dystrybucji Linuxa, potrzebuje tylko Dockera, więc możemy uruchomić się z uniwersalnym obrazem Dockera.
  • Następnie musimy zainstalować Waypoint w tym obrazie. W przyszłości możemy zbudować obraz meta build i zcontaineryzować ten proces dla siebie.
  • Na koniec uruchomimy komendy Waypoint.

Powyżej wymieniono wszystko, co będzie potrzebne naszemu potokowi do uruchomienia niezbędnych skryptów do wdrożenia, ale aby wdrożyć w AWS, potrzebujemy jeszcze jednej rzeczy: musimy uwierzytelnić się na naszym koncie AWS. W opisie Waypoint są plany dotyczące uwierzytelniania i autoryzacji. HashiCorp w tym tygodniu również wydał imponujący projekt Boundary. Ale na razie możemy po prostu wziąć i samodzielnie obsłużyć uwierzytelnianie oraz autoryzację.

Dla uwierzytelnienia GitLab CICD w AWS istnieje kilka opcji. Pierwsza opcja to użycie wbudowanego HashiCorp Vault. Sprawdzi się to, jeśli twoja drużyna już korzysta z Vault do zarządzania danymi uwierzytelniającymi. Inną opcją, która jest odpowiednia, jeśli twoja drużyna zarządza autoryzacją za pomocą AWS IAM – upewnij się, że zadania dostawcze są uruchamiane przez GitLab Runner, autoryzowany do uruchomienia wdrożenia przez IAM. Ale jeśli po prostu chcesz zapoznać się z Waypoint i chcesz to zrobić szybciej, jest ostatnia opcja – dodanie twoich kluczy AWS API i Secret do zmiennych środowiskowych GitLab CI/CD. AWS_ACCESS_KEY_ID i AWS_SECRET_ACCESS_KEY.

Zbieramy wszystko razem.

Jak tylko uporaliśmy się z uwierzytelnieniem, możemy zacząć! Nasz ostateczny .gitlab-ci.yml wygląda tak:

waypoint:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  # Zdefiniuj zmienne środowiskowe, np. `WAYPOINT_VERSION: '0.1.1'`
  variables:
    WAYPOINT_VERSION: ''
    WAYPOINT_SERVER_ADDR: ''
    WAYPOINT_SERVER_TOKEN: ''
    WAYPOINT_SERVER_TLS: '1'
    WAYPOINT_SERVER_TLS_SKIP_VERIFY: '1'
  script:
    - wget -q -O /tmp/waypoint.zip https://releases.hashicorp.com/waypoint/${WAYPOINT_VERSION}/waypoint_${WAYPOINT_VERSION}_linux_amd64.zip
    - unzip -d /usr/local/bin /tmp/waypoint.zip
    - rm -rf /tmp/waypoint*
    - waypoint init
    - waypoint build
    - waypoint deploy
    - waypoint release

Widzisz, że zaczynamy od obrazu docker:latest i ustawiamy kilka zmiennych środowiskowych wymaganych przez Waypoint. W sekcji script pobieramy najnowszą wersję pliku wykonywalnego Waypoint i instalujemy go w /usr/local/bin. Ponieważ nasz runner został już uwierzytelniony w AWS, następnie po prostu uruchamiamy waypoint init, build, deploy i release.

Wynik zadania budowy pokaże nam punkt końcowy, gdzie wdrożyliśmy aplikację:

Jak używać HashiCorp Waypoint do współpracy z GitLab CI/CD

Waypoint to jedno z wielu rozwiązań HashiCorp, doskonale współpracujących z GitLab. Na przykład, oprócz wdrożenia aplikacji, możemy orkiestrować podstawową infrastrukturę za pomocą Terraform w GitLab. W celu standardyzacji bezpieczeństwa SDLC, możemy również wdrożyć GitLab z Vault do zarządzania sekretami i tokenami w potokach CI/CD, zapewniając kompleksowe rozwiązanie dla programistów i administratorów, polegających na zarządzaniu sekretami podczas rozwoju, testowania i użytkowania produkcyjnego.

Wspólne rozwiązania opracowane przez HashiCorp i GitLab pomagają firmom znaleźć najlepszy sposób na rozwój aplikacji, zapewniając spójną kontrolę nad przepływami dostaw i infrastrukturą. Waypoint zrobił kolejny krok w dobrym kierunku, a my z niecierpliwością czekamy na dalszy rozwój projektu. Możesz dowiedzieć się więcej o Waypoint tutaj, warto również zapoznać się z dokumentację i planem rozwoju projektu. Dodaliśmy naszą wiedzę do dokumentacji GitLab CICD. Jeśli chcesz samodzielnie spróbować wszystkiego w praktyce, możesz skorzystać z pełnego, działającego przykładu w tej repozytorium.

Zrozumienie zasad CI/CD, opanowanie wszelkich niuansów pracy z GitLab CI i rozpoczęcie stosowania najlepszych praktyk można uzyskać, przechodząc przez kurs wideo „CI/CD na przykładzie GitLab CI”. Dołącz do nas!

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster