
HashiCorp heeft een nieuw project gepresenteerd en een werkende opdracht krijgen. . Het maakt gebruik van een HCL-gebaseerd bestand om de building, levering en uitrol van applicaties voor verschillende cloudplatforms te beschrijven, variërend van Kubernetes tot AWS en Google Cloud Run. Je kunt Waypoint zien als een combinatie van Terraform en Vagrant voor het beschrijven van het proces van het bouwen, leveren en uitrollen van je applicaties.
Zonder zichzelf te veranderen, heeft HashiCorp Waypoint met open source vrijgegeven, inclusief veel voorbeelden. Het niveau van de orchestrator blijft aan jou, Waypoint wordt geleverd als een uitvoerbaar bestand dat je direct op je laptop of vanuit een door jou gekozen CI/CD-orchestratiehulpmiddel kunt uitvoeren. Het doel voor de implementatie van applicaties wordt ook door jou gekozen, aangezien Waypoint Kubernetes, Docker, Google Cloud Run, AWS ECS en meer ondersteunt.
Na het bekijken van de geweldige en schitterende applicaties die door HashiCorp worden aangeboden, hebben we besloten om een nadere blik te werpen op de orkestratie van Waypoint met behulp van GitLab CI/CD. Om dit te doen gebruiken we een eenvoudige Node.js-applicatie die draait op AWS ECS, afkomstig uit de voorbeeldenrepository.
Na het klonen van de repository bekijken we de structuur van de applicatie, die één pagina weergeeft:

Zoals je misschien hebt opgemerkt, is er in dit project geen Dockerfile. Deze zijn niet toegevoegd in het voorbeeld omdat ze in principe niet nodig zijn, want Waypoint zorgt daar vanzelf voor. Laten we het bestand waypoint.hcl, nader bekijken om te begrijpen wat het gaat doen:
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"
}
}
}Tijdens de bouwfase maakt Waypoint gebruik van Cloud Native Buildpacks (), om de programmeertaal van het project te bepalen en een Docker-image te creëren zonder gebruik te maken van een Dockerfile. In principe is dit dezelfde technologie die GitLab gebruikt in het gedeelte tijdens de stap Auto Build. Het is prettig om te zien dat CNB van CNCF steeds meer verspreiding vindt onder gebruikers in de sector.
Zodra de image is gebouwd, zal Waypoint deze automatisch uploaden naar onze AWS ECR-register, zodat deze klaar is voor levering. Aan het einde van de bouwstap wordt de leveringsstap voor het uitrollen van onze applicatie naar onze AWS-account.
Vanaf mijn laptop is het heel eenvoudig. Ik installeer Waypoint, dat al is geauthenticeerd in mijn AWS-account, en het werkt gewoon. Maar wat als ik verder wil gaan dan mijn laptop? Of als ik dit implementatieproces wil automatiseren als onderdeel van mijn bredere CI/CD-pijplijn, waar mijn huidige integratietests, beveiligingstests en dergelijke draaien? Dit is het deel van het verhaal waar GitLab CI/CD in beeld komt!
N.B. Als je nog maar van plan bent CI/CD te implementeren of als je beste praktijken voor het bouwen van pijplijnen wilt toepassen, kijk dan naar de nieuwe cursus van Slërma. . Het is nu beschikbaar voor een prijs in de pre-order.
Waypoint in GitLab CI/CD
Laten we voor de orkestratie van dit alles in GitLab CI/CD eens kijken naar wat we nodig hebben in ons bestand. .gitlab-ci.yml:
- Eerst hebben we een basisimage nodig om het внутри te draaien. Waypoint werkt op elke Linux-distributie; het heeft alleen Docker nodig, dus we kunnen starten met een generiek Docker-image.
- Daarna moet Waypoint in dit image worden geïnstalleerd. In de toekomst kunnen we een samenstellen en dat proces voor ons containeriseren.
- Tot slot voeren we de Waypoint-commando's uit.
Hierboven staat alles wat onze pijplijn nodig heeft om de scripts voor implementatie uit te voeren, maar voor implementatie in AWS hebben we nog iets anders nodig: we moeten ons authentiseren in ons AWS-account. In de documentatie van Waypoint voor authenticatie en autorisatie. HashiCorp heeft deze week ook een indrukwekkend project gelanceerd, . Maar op dit moment kunnen we gewoon zelf de authenticatie en autorisatie verwerken.
Voor de authenticatie van GitLab CICD in AWS zijn er verschillende opties. De eerste optie is het gebruik van de ingebouwde . Dit is geschikt als jouw team al Vault gebruikt voor het beheren van inloggegevens. Een andere manier die geschikt is, als jouw team de autorisatie beheert met AWS IAM - zorg ervoor dat de leveringsjobs worden uitgevoerd via , die is geautoriseerd om implementaties te starten via IAM. Maar als je gewoon snel kennis wilt maken met Waypoint, is er een laatste optie - voeg je AWS API- en Secret-sleutels toe aan AWS_ACCESS_KEY_ID en AWS_SECRET_ACCESS_KEY.
Laten we alles samenvoegen.
Zodra we de authenticatie hebben geregeld, kunnen we beginnen! Onze definitieve .gitlab-ci.yml ziet er als volgt uit:
waypoint:
image: docker:latest
stage: build
services:
- docker:dind
# Definieer omgevingsvariabelen, bijv. `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 releaseJe ziet dat we beginnen met de afbeelding docker:latest en verschillende omgevingsvariabelen instellen die nodig zijn voor Waypoint. In het gedeelte script downloaden we de laatste versie van het uitvoerbare bestand Waypoint en installeren we het in /usr/local/bin. Aangezien onze runner al geautoriseerd is in AWS, voeren we gewoon waypoint init, build, deploy en release.
De uitvoer van de bouwwerktaak toont ons de endpoint waar we de applicatie hebben uitgerold:

Waypoint is een van de , die uitstekend samenwerken met GitLab. Bijvoorbeeld, naast het uitrollen van applicaties kunnen we de onderliggende infrastructuur orkestreren met . Voor standaardisering van beveiliging in de SDLC kunnen we ook implementeren voor het beheer van geheimen en tokens in CI/CD-pijplijnen, wat een complete oplossing biedt voor ontwikkelaars en beheerders die afhankelijk zijn van geheimenbeheer tijdens ontwikkeling, testen, en ook productiegebruik.
Gezamenlijke oplossingen ontwikkeld door HashiCorp en GitLab helpen bedrijven de beste manier te vinden om applicaties te ontwikkelen, met consistent beheer van leveringsstromen en infrastructuur. Waypoint heeft weer een stap in de goede richting gezet, en we kijken uit naar verdere ontwikkeling van het project. Je kunt meer leren over Waypoint , en het is ook de moeite waard om te kijken naar en van het project. We hebben onze kennis toegevoegd aan de . Als je alles zelf wilt uitproberen, kun je een volledig werkend voorbeeld nemen in .
De principes van CI/CD begrijpen, de fijne kneepjes van Gitlab CI beheersen en best practices toepassen, kan door het volgen van een videocursus . Doe mee!
Bron: habr.com
