🚨 Shai-Hulud Strikes Again:834 Packages Compromised.Technical Analysis →
Socket
Book a DemoInstallSign in
Socket

karist

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

karist

bundlerRubyGems.org
Version
0.1.7
Version published
Maintainers
1
Created
Source

Karist

Karist est une manière plus simple de configurer et déployer ses applications sur Kubernetes. Plus concrètement :

  • Aucun CRD requis dans vos clusters Kubernetes
  • Support natif d'une infinitĂ© d'environnement
  • Structure opiniatĂ©e de repository Git
  • ImplĂ©mentation de fonctions muables
  • Une CLI pour initialiser, prĂ©dire et appliquer les changements

Il peut être comparé avec Helm, bien que plus limité dans ses fonctions.

Installation

Karist dépend entièrement de Ruby (> 3.0) car il est construit avec, mais aucune connaissance de Ruby n'est nécessaire pour utiliser cette application.

gem install karist

Quick start

Concepts

Karist s'article autour des opinions suivants:

  • Un fichier YAML ne doit contenir que du YAML
  • Les environnements concernent des valeurs parfois communes, parfois diffĂ©rentes
  • Un dĂ©ploiement Kubernetes a besoin de plusieurs manifests (Deployment, Service, Ingress, ServiceAccount...), tous doivent ĂŞtre liĂ©s
  • L'utilisation des fonctions natives de Kubernetes doit ĂŞtre mis en avant

Le lexique suivant s'applique Ă  Karist:

  • template: un template est un dossier contenant plusieurs manifests Kubernetes. Un bon manifest doit pouvoir ĂŞtre modifiĂ© aisĂ©ment par injection de variables.
  • customization: une customization est l'application de variables Ă  un manifest Kubernetes appartant Ă  un template.
  • release: une release est l'instantiation d'un template en accord avec des customizations appliquĂ©es Ă  ses manifests.
  • environment: un environnement possède une ou plusieurs releases, qui sont des templates adaptĂ©s au contexte de l'environnement.
karist --init .

Crée une structure initiale dans le répertoire courant, directement utilisable.

.
├── templates
│   ├── stateless-app
│   │   ├── karist.yml
│   │   └── manifests
│   │       ├── deployment.yml
│   │       ├── service.yml
│   │       └── serviceaccount.yml
│   └── yourapp
├── environments
│   ├── development
│   │   ├── releases.yml
│   │   └── nginx
│   │       └── custom.yml
│   ├── local
│   └── production
└── karist.yml

Le fichier releases.yml indique par défaut ceci:

releases:
  - name: nginx
    namespace: default
    template: stateless-app

Lors de l'exécution de la commande suivante :

karist --render --env development

Karist va automatiquement utiliser les manifests de stateless-app et charger les variables définies dans le fichier custom.yml.

Variables et fonctions

Helm utilise un moteur de langage qui rend selon moi la lecture de fichiers YAML complexe. En créant Karist, j'ai préféré mettre en avant la simplicité de YAML en implémentant une logique au niveau des valeurs des types standards. Ainsi, des fonctions (toujours préfixées par _) sont utilisables auprès des manifests:

# templates/stateless-app/manifests/deployment.yml
yaml
apiVersion: v1
metadata:
  name: $release.name
  labels:
    _merge: release.labels
    karist/template-name: stateless-app
# environments/development/nginx/custom.yml
release:
  name: nginx
  labels:
    key: value

Lors de l'évaluation du manifest, Karist remplace les fonctions par une évaluation.

# karist --dry-render \
#   ./templates/stateless-app/manifests/deployment.yml
#   ./environments/development/nginx/custom.yml

apiVersion: v1
metadata:
  name: nginx
  labels:
    karist/template-name: stateless-app
    key: value

Functions

WIP

$variable: inserts a string from custom.yml
_merge: merges the current dictionnary with dictionnary from custom.yml
_sum: recursively sums an array of values (curry)
_concat: recursively concatenates an array of values (curry)

FAQs

Package last updated on 30 Jun 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts