close
close

De GitOps Kubernetes starterssjabloon waarmee u binnen enkele minuten in plaats van uren aan de slag kunt

We hebben allemaal wel eens gehoord van schrijvers die urenlang naar een lege pagina keken om over een writer’s block heen te komen. Voor Kubernetes-beheerders kan het opzetten van een gloednieuw Kubernetes-cluster net zo ontmoedigend zijn.

Vooral als het gaat om het configureren van meerdere elementen zoals ArgoCD, een PostgreSQL-database, monitoringtools en aangepaste webapps.

Maar wat als er een makkelijkere manier was? Onze nieuwe GitOps-sjabloon is ontworpen om dit proces eenvoudig en probleemloos te maken. Het biedt een eenvoudig in te stellen oplossing die bijna geen handmatige stappen vereist voor een eenvoudige maar zeer uitbreidbare GitOps-installatie. Met deze sjabloon kunt u uw cluster snel en efficiënt up and running hebben, zodat u zich kunt concentreren op wat het belangrijkst is: het bouwen en schalen van uw applicaties.

GitOps-sjabloonmeme

Als u dit leest, waardeert u waarschijnlijk al de voordelen van GitOps en hebt u een gedegen begrip van Kubernetes. Tot voor kort was er echter geen elegant, gestandaardiseerd proces voor het beheren van de pakketten die in uw Kubernetes-clusters zijn geïnstalleerd. Daarom hebben we er een gebouwd.

Laten we het eens testen. Met deze template worden ArgoCD, CloudNativePG en een eenvoudige bookmarking web app geïnstalleerd met behulp van de Glasskube Package Manager en ontvangen ze upgrades via een Renovate integratie via pull requests. Deze toekomstbestendige setup is eenvoudig te onderhouden en zorgt ervoor dat uw clusters moeiteloos up-to-date blijven.

De volgende logische uitbreiding voor infrastructuur IaC

Er zijn duidelijke frameworks, templates en standaarden voor het provisioneren van infrastructuur bij bijna alle cloudproviders, en zelfs templates voor het provisioneren van Kubernetes-clusters zelf. Dit is echter vaak waar de gladde, geplaveide Infrastructure as Code (IaC)-weg verandert in grind. Kubernetes-beheerders worden vaak aan hun lot overgelaten om de pakketten binnen het Kubernetes-cluster te installeren, configureren en beheren vanwege een gebrek aan gestandaardiseerde en eenvoudige tooling voor pakketbeheer.

Het converteren van pakketconfiguraties naar code en het beheren ervan via GitOps, zoals je dat met interne applicaties zou doen, is lastig gebleken. Wij geloven dat het Glasskube-pakket een belangrijke stap is richting de broodnodige standaardisatie op dit gebied.

Wat is een Glasskube-pakket?

Een Glasskube-pakket is een gestandaardiseerde eenheid voor het beheren van software-implementaties binnen Kubernetes-clusters met behulp van de Glasskube Package Manager. Het wordt gedefinieerd door een PackageManifestdie alle benodigde informatie bevat voor het identificeren, configureren en installeren van een pakket. Dit manifest kan een Helm-resource of een link naar een manifest bevatten. Afhankelijkheden tussen pakketten kunnen worden gedeclareerd, zodat alle vereiste componenten aanwezig zijn vóór de installatie.

Gebruik ArgoCD om Glasskube-pakketten te implementeren

Helm-grafieken of gewone Kubernetes-manifesten missen het uitgebreide raamwerk dat Glasskube-pakketten bieden voor het declaratief implementeren van resources op een betrouwbare, consistente en eenvoudig te onderhouden manier. In deze demo gebruiken we de GitOps-sjabloon om een ​​nieuw Kubernetes-cluster op te starten met een instantie van ArgoCD, die vervolgens wordt gebruikt om alle daaropvolgende pakketten te implementeren.

Zo ziet de cluster eruit.

Schema Gif

Sjabloondiagram

Sjabloonstructuur

🔗 Link naar sjabloon

De repository bevat:

  • A bootstrap map met de oorspronkelijke/bovenliggende Argo-applicatie en de benodigde Glasskube-manifesten.
  • A packages map met de ArgoCD ,cloudnative-pg En kube-prometheus-stack clusterpakketten.
  • een apps map met een eenvoudige shiori bladwijzer-web-app.
  • de renovate configuratiebestand.

Aangepaste Glasskube-bronnen worden pas door ArgoCD opgepikt nadat de pakketdefinitiebestanden in de packages gids.

⚠️ Verwijder/deïnstalleer het argo-cd-pakket niet, want hiermee verwijdert u ook alles anders!

Let op dat de bovenliggende applicatie die gebruikt wordt om te bootstrappen (bootstrap/glasskube-application.yaml) niet gesynchroniseerd zal worden na de initiële setup. Als je er iets aan wilt veranderen, zul je de applicatie rechtstreeks via argo moeten veranderen.

Clusteropstelling

Vereisten

U moet toegang hebben tot een leeg Kubernetes-cluster.

Het makkelijkst is om een ​​nieuw Minikube-cluster te maken met:

minikube start -p gitops
Ga naar de volledig scherm-modus

Volledig scherm verlaten

⚠️ Glasskube zou moeten nog niet opgestart in de cluster.

Installeer de Glasskube CLI

Zorg ervoor dat u minimaal Glasskube versie 0.16.0 lokaal hebt geïnstalleerd. Als u dat niet hebt, kunt u gewoon het volgende uitvoeren:

brew install glasskube/tap/glasskube
Ga naar de volledig scherm-modus

Volledig scherm verlaten

Hoe de sjabloon te gebruiken

Gebruik deze repository als uw GitOps-sjabloon

Maak een openbare GitHub-repository op basis van deze starterssjabloon door te klikken op ‘Gebruik deze sjabloon’. U kunt deze later verplaatsen en/of privé maken.

Vervang de tijdelijke aanduiding repoURL in uw lokale GitOps-repository

Vervang de standaardwaarde van repoURL naar uw repository-url:

  • Regel 12 in: bootstrap/glasskube-application.yaml
  • Regels 11, 16 en 26 in: bootstrap/glasskube/applicationset.yaml

Bootstrap ArgoCD en Glasskube voor uw Kubernetes-cluster:

glasskube bootstrap git --url 
Ga naar de volledig scherm-modus

Volledig scherm verlaten

Het resultaat

Als resultaat hiervan wordt uw cluster aangestuurd door GitOps-mogelijkheden van ArgoCD, evenals pakketbeheerfuncties van Glasskube. Argo beheert zichzelf, de Glasskube-installatie en Glasskube-pakketten — die u nu allemaal op GitOps-achtige wijze kunt beheren met deze repo.

Loop glasskube serve om de Glasskube UI te openen en daar de ArgoCD UI te openen, of met de opdracht glasskube open argo-cd – maar je kunt natuurlijk ook de Argo CLI gebruiken. Volg de ArgoCD-docs om het wachtwoord te krijgen en te resetten om in te loggen.

💡 Houd er rekening mee dat het een paar minuten kan duren voordat ArgoCD is opgestart en de eerste GitOps-synchronisatie heeft plaatsgevonden.

In deze sjabloon hebben we voor demonstratiedoeleinden ook de volgende onderdelen geïnstalleerd: cloudnative-pg En kube-prometheus-stackclusterpackages en een bookmarking-applicatie (shiori), die gebruikmaakt van cloudnative-pg.

Uw cluster beheren

Zowel CLI als UI bieden functies waarmee u uw cluster kunt beheren volgens de best practices van GitOps.

De CLI gebruiken

De relevante CLI-opdrachten bieden de vlaggen --dry-run En -o yaml die de yaml-objectcode uitvoert die vervolgens naar uw repository moet worden gepusht om te worden geïmplementeerd.

Via de gebruikersinterface

De gebruikersinterface, wanneer geïnstalleerd met het bovenstaande glasskube bootstrap git commando, zal ook de uitvoer van de yaml objecten die u kunt kopiëren en gebruiken in uw Git-repository, in plaats van uw wijzigingen rechtstreeks toe te passen.

Pakketten installeren

Om een ​​ClusterPackage te installeren, bijvoorbeeld cert-manager, gebruikt u de install-opdracht als volgt:

glasskube install cert-manager --dry-run -o yaml --yes > cert-manager.yaml
Ga naar de volledig scherm-modus

Volledig scherm verlaten

In plaats van het ClusterPackage rechtstreeks te installeren, wordt de aangepaste ClusterPackage-resource naar het bestand cert-manager.yaml geschreven, dat nu in een nieuwe map kan worden geplaatst packages/cert-manager/ in de git-repository. Zodra het naar de repo is gepusht, zal ArgoCD de wijzigingen na maximaal 5 minuten oppikken, de ArgoCD-applicatie maken die de Glasskube ClusterPackage omhult. Daarna zal de Glasskube-operator de ClusterPackage oppikken en deze uiteindelijk in het cluster installeren.

Op dezelfde manier kan men bij gebruik van de Glasskube UI de ClusterPackage-resource genereren door de knop ‘YAML weergeven’ op de pagina van de ClusterPackage te gebruiken.

Pakketten updaten

Er zijn twee opties voor het verwerken van pakketversie-updates:

Handmatig

De … gebruiken glasskube update --dry-run -o yaml opdracht, of de bijbehorende knop op de Glasskube UI. En dan pushen naar je repo zoals eerder gezien.

Het nadeel hiervan is dat iemand de opdracht handmatig moet uitvoeren, ook al is het controleren op updates en het voorbereiden van de updates voor de Git-repository een automatiseerbare taak.

Automatisch met Renovate

Zodra Renovate is geïntegreerd om uw GitOps-repo te volgen, zal het zoeken naar Glasskube-pakketten en hun versies vergelijken met de officiële pakketrepositories. Wanneer er nieuwe versies beschikbaar zijn, zal het automatisch een PR openen. Zodra samengevoegd, zult u de nieuwste versies van uw pakketten gebruiken.

Pakketten verwijderen

Om een ​​pakket of een ClusterPackageverwijder dan eenvoudigweg de aangepaste resource uit de git-repository.

Glasskube updaten

Wanneer een nieuwe Glasskube-versie beschikbaar is, moeten de manifesten worden bijgewerkt. Om de Glasskube-manifesten in uw git-repo bij te werken, voert u de volgende opdracht uit:

glasskube bootstrap --dry-run -o yaml --force > bootstrap/glasskube/glasskube.yaml
Ga naar de volledig scherm-modus

Volledig scherm verlaten

Nadat deze wijzigingen zijn beoordeeld en samengevoegd, wordt de update door ArgoCD opgepakt. --force vlag is nodig om de opdracht door te laten gaan met de manifestvalidatie, zelfs als er fouten optreden.

Werken met apps

Deze sjabloon bevat ook een demo-applicatie: een bladwijzerbeheerder genaamd shiori.
De manifesten ervan worden gedefinieerd in apps/shiorieen patroon dat u kunt volgen voor uw eigen, aangepaste toepassingen.

In een minikube-omgeving zijn twee handmatige stappen vereist om toegang te krijgen tot de applicatie (raadpleeg voor meer informatie de
minikube-documentatie):

  • Loop minikube addons enable ingress -p gitops.
  • Loop minikube ip -p gitops en voeg de regel toe my-shiori.example aan jouw /etc/hosts bestand.

Daarna kunt u de applicatie openen via http://my-shiori.example in uw browser.
De standaard inloggegevens zijn shiori / gopher – voor meer informatie, zie de shiori-documentatie.

Over het algemeen kunt u de apps directory om dergelijke aangepaste applicaties in uw cluster te implementeren. Elke subdirectory zal
opgepikt door ArgoCD en gegroepeerd als een Application.

Monitoring met kube-prometheus-stack

Deze sjabloon installeert ook de kube-prometheus-stack clusterpackage, wat een eenvoudige manier is om te beginnen met het monitoren van uw cluster. U kunt Grafana openen met glasskube open kube-prometheus-stack. Het is niet vooraf geconfigureerd in dit voorbeeld, maar u kunt eenvoudig een mooi postgres-dashboard toevoegen en de statistieken van de database bekijken terwijl u met de bladwijzertoepassing werkt.

Een postgres-dashboard instellen

We gaan gebruik maken van het cloudnativepg-dashboard.
Importeer het door de dashboard-importpagina te openen en te plakken
https://grafana.com/grafana/dashboards/20417-cloudnativepg/
in het eerste tekstveld en druk op “Laden”. Gebruik de gegevensbron “Prometheus” op het volgende scherm en voltooi het importproces.

CloudNativePG-dashboard

Natuurlijk is het monitoren van uw experimentele minikube-cluster een beetje overdreven, maar dit is gewoon om te laten zien hoe dit soort clusterbeheertaken kunnen worden geïntegreerd in deze gitops-stack.

Stapsgewijze handleiding voor het instellen van sjablonen


Aankomende functies

Ondersteuning voor privé-repository’s

We zijn ons ervan bewust dat GitOps-repositories niet openbaar zouden moeten zijn, maar voor de eenvoud hebben we deze functie weggelaten in de eerste versie van de nieuwe GitOps-bootstrap-opdracht. Het ondersteunen van privé-repositories met authenticatie heeft natuurlijk hoge prioriteit voor de komende releases. We zullen de repoURL ook automatisch vervangen, zodat u deze stap niet handmatig hoeft uit te voeren bij het instellen van de repo.

Verbeterde Renovate-integratie

Zoals hierboven beschreven is de renovate-integratie momenteel regex-gebaseerd en houdt het nog geen rekening met afhankelijkheden. We zien deze tekortkomingen echter niet als een blokkade en raden aan om de renovate-integratie uit te proberen in de Glasskube/Argo Gitops-opstelling.

Verbeterde afhankelijkheidsresolutie

Het installeren van pakketten met afhankelijkheden is nog niet 100% GitOps-compatibel, aangezien de afhankelijkheden door de operator worden gemaakt. Denk hier eens over na: om een ClusterPackage die afhankelijk is van Dzou men doen glasskube install

--dry-run -o yaml

wat de output zou zijn van ClusterPackage aangepaste bron voor . However, the dependency D worden pas tijdens de reconciliatie opgelost door de pakketoperator en worden daarom helemaal niet in de git-repository weergegeven.

Een tijdelijke oplossing zou zijn om de uitvoer van de install-opdracht eens nader te bekijken, die ook de afhankelijkheden toont die worden geïnstalleerd en in welke versie. Men zou dan ook handmatig de vereiste aangepaste bronnen van pakketten aan de git-repo kunnen toevoegen. Dit zal echter in een toekomstige versie worden aangepakt om de gebruikerservaring te verbeteren, zie dit probleem.

Samenvatting

Met deze template repository en handleiding laten we zien hoe Glasskube eenvoudig kan worden ingesteld in een door ArgoCD aangestuurde Gitops-omgeving, en hoe efficiënt pakketbeheer mogelijk is met deze stack. Daarnaast installeren we een webapplicatie om te laten zien hoe aangepaste applicaties gebruik kunnen maken van de Gitops-installatie en Glasskube-pakketten.

Dit is een eerste concept met enkele kleine tekortkomingen, maar we zullen de GitOps-ondersteuning blijven verbeteren.

Feedback

We love feedback! Of je nu net begint of een doorgewinterde professional bent, we horen graag je gedachten, input en vragen over deze starterssjabloon en bijbehorende gids hier, in de glasskube/glasskube repo of op onze Discord. Bedankt!

Copyright © 2023 Summer Blog. All Rights Reserved.