Hoe HashiCorp Waypoint te gebruiken om samen te werken met GitLab CI/CD

Hoe HashiCorp Waypoint te gebruiken om samen te werken met GitLab CI/CD

HashiCorp toonde een nieuw project waypoint op HashiCorp Digitaal. Het maakt gebruik van een op HCL gebaseerd bestand om het bouwen, verzenden en vrijgeven van applicaties voor verschillende cloudplatforms te beschrijven, variërend van Kubernetes tot AWS en Google Cloud Run. Beschouw Waypoint als Terraform en Vagrant samen om het proces van het bouwen, verzenden en vrijgeven van uw applicaties te beschrijven.

Zoals het hoort heeft HashiCorp Waypoint als open source uitgebracht, en het wordt geleverd met veel voorbeelden. Het niveau van de orkestrator is aan jou, Waypoint wordt geleverd als een uitvoerbaar bestand dat je rechtstreeks op je laptop kunt uitvoeren of vanaf je CI/CD-orkestratietool naar keuze. Het doel voor de implementatie van de applicatie is ook aan jou, aangezien Waypoint Kubernetes, Docker, Google Cloud Run, AWS ECS en meer ondersteunt.

Na het lezen van het geweldige de documentatie en de chicste voorbeelden toepassingen geleverd door HashiCorp, hebben we besloten om Waypoint-orkestratie nader te bekijken met GitLab CI/CD. Om dit te doen, nemen we een eenvoudige Node.js-applicatie die op AWS ECS draait uit de voorbeeldrepository.

Laten we na het klonen van de repository eens kijken naar de structuur van de applicatie die één pagina weergeeft:

Hoe HashiCorp Waypoint te gebruiken om samen te werken met GitLab CI/CD

Zoals je misschien hebt gemerkt, bevat dit project geen Dockerfile. Ze zijn in het voorbeeld niet toegevoegd omdat we ze niet echt nodig hebben, omdat Waypoint ze voor ons regelt. Laten we het bestand eens nader bekijken waypoint.hclom te begrijpen wat het zal 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 gebruikt Waypoint Cloud Native Buildpacks (CNB) om de programmeertaal van het project te bepalen en een Docker-image te maken zonder een Dockerfile te gebruiken. In principe is dit dezelfde technologie die deels door GitLab wordt gebruikt Automatische DevOps bij de stap Automatisch bouwen. Het is geweldig om te zien dat CNCF's CNB steeds meer acceptatie krijgt onder industriële gebruikers.

Zodra de image is gebouwd, uploadt Waypoint deze automatisch naar ons AWS ECR-register, zodat deze klaar is voor verzending. Aan het einde van de montage wordt de leveringsstap gebruikt AWS ECS-add-on om onze applicatie op ons AWS-account te implementeren.

Vanaf mijn laptop is het eenvoudig. Ik heb Waypoint ingevoerd dat al is geverifieerd in mijn AWS-account en het "werkt gewoon". Maar wat gebeurt er als ik verder wil gaan dan mijn laptop? Of wil ik deze implementatie misschien automatiseren als onderdeel van mijn algehele CI/CD-pijplijn waar mijn huidige integratietests, beveiligingstests en andere worden uitgevoerd? Dit is het deel van het verhaal waar GitLab CI/CD om de hoek komt kijken!

NB Ben je net van plan om CI/CD te implementeren of wil je de best practices voor het aanleggen van pijpleidingen gaan toepassen, let dan op de nieuwe Slurm-cursus. "CI/CD naar het voorbeeld van Gitlab CI". Het is nu beschikbaar voor een pre-orderprijs.

Waypoint in GitLab CI/CD

Om dit allemaal in GitLab CI/CD te orkestreren, gaan we kijken wat we nodig hebben in ons bestand .gitlab-ci.yml:

  • Allereerst heb je een basisimage nodig om erin te kunnen werken. Waypoint draait op elke Linux-distributie, het heeft alleen Docker nodig, dus we kunnen met een generieke Docker-image werken.
  • Vervolgens moet u Waypoint in deze afbeelding installeren. In de toekomst kunnen we mogelijk collecteren metabuild-afbeelding en containeriseer dit proces voor jezelf.
  • Ten slotte zullen we de Waypoint-opdrachten uitvoeren

Hierboven ziet u alles wat onze pijplijn nodig heeft om de scripts uit te voeren die nodig zijn om de implementatie uit te voeren, maar om te implementeren in AWS hebben we nog één ding nodig: we moeten inloggen op ons AWS-account. In Waypoint-beschrijving plannen hebben over authenticatie en autorisatie. HashiCorp heeft deze week ook een indrukwekkend project uitgebracht Grens. Maar voorlopig kunnen we de authenticatie en autorisatie gewoon zelf uitvoeren en afhandelen.

Er zijn verschillende opties voor GitLab CICD-authenticatie op AWS. De eerste optie is om de ingebouwde te gebruiken HashiCorp-kluis. Het is prima als uw team Vault al gebruikt voor het beheer van inloggegevens. Een andere methode die werkt als uw team de autorisatie beheert met AWS IAM, is door te controleren of leveringstaken worden geactiveerd via GitLab RunnerA die geautoriseerd is om de implementatie te starten via IAM. Maar als je gewoon vertrouwd wilt raken met Waypoint en het snel wilt doen, is de laatste optie om je AWS API en geheime sleutels toe te voegen aan GitLab CI/CD-omgevingsvariabelen AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Alles bij elkaar

Zodra we de authenticatie hebben ontdekt, kunnen we beginnen! Onze finale .gitlab-ci.yml ziet er zo uit:

waypoint:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  # Define environment variables, e.g. `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

Je ziet dat we beginnen met een afbeelding docker:latest en stel een paar omgevingsvariabelen in die vereist zijn voor Waypoint. In hoofdstuk script we downloaden het nieuwste uitvoerbare Waypoint-bestand en plaatsen het erin /usr/local/bin. Omdat onze hardloper al geautoriseerd is in AWS, rennen we gewoon waypoint init, build, deploy и release.

De uitvoer van de build-taak toont ons het eindpunt waar we de applicatie hebben gerold:

Hoe HashiCorp Waypoint te gebruiken om samen te werken met GitLab CI/CD

Routepunt één van talrijke HashiCorp-oplossingen, die prima werken met GitLab. Naast het opleveren van de applicatie kunnen wij bijvoorbeeld ook de onderliggende infrastructuur inrichten Terraform in GitLab. Om SDLC-beveiliging te standaardiseren, kunnen we ook implementeren GitLab met kluis voor het beheren van geheimen en tokens in CI/CD-pijplijnen, waardoor een complete oplossing wordt geboden voor ontwikkelaars en beheerders die afhankelijk zijn van geheimbeheer voor ontwikkeling, testen en productiegebruik.

Gezamenlijke oplossingen ontwikkeld door HashiCorp en GitLab helpen bedrijven de beste manier te vinden om applicaties te ontwikkelen door consistent supply chain- en infrastructuurbeheer te garanderen. Waypoint heeft weer een stap in de goede richting gezet en we kijken uit naar de verdere ontwikkeling van het project. U kunt meer informatie vinden over Waypoint hierook het ontdekken waard de documentatie и ontwikkelingsplan project. Wij hebben onze kennis toegevoegd GitLab CICD-documentatie. Als u het zelf wilt uitproberen, kunt u het volledige werkende voorbeeld bekijken op deze opslagplaats.

Je kunt de principes van CI/CD begrijpen, alle subtiliteiten van het werken met Gitlab CI onder de knie krijgen en best practices gaan toepassen door de videocursus te voltooien "CI/CD naar het voorbeeld van Gitlab CI". Sluit je nu aan!

Bron: www.habr.com

Voeg een reactie