npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@bitnoi.se/generator-devops

v1.0.6

Published

## Usage ### Set up generator ``` npm -g install yo npm -g install @bitnoi.se/generator-devops ```

Downloads

9

Readme

Generator plików devopsowych

Usage

Set up generator

npm -g install yo
npm -g install @bitnoi.se/generator-devops

Available Generators

  • fe: any type of frontend app that create their build with yarn build and store the build files in the public catalogue

Generate devops configuration

// Go to your project catalogue
yo @bitnoi.se/devops:<generator>
// for example
yo @bitnoi.se/devops:fe

Overview

Technologia

  • Cloud: AWS EKS (kubernetes v1.20
    • Command line tool: aws-cli 2.7.9, eksctl v0.102
  • Orkiestrator: Kubernetes v1.20
    • Command line tool: kubectl v1.20
    • testy lokalne można oprzeć o narzędzie minikube v1.18
  • Deployment CI/CD
    • Bitbucket pipelines
  • Tworzenie szablonów
    • aplikacja node.js: btn_devops
    • wykorzystanie generatora szablonów: yoaman-generator

Idea

  • każda aplikacja posiada pewien powtarzający się schemat działania, np.
    • FE + Api na next.js + Postgress
    • FE + Koa + MySQL
  • na poziomie infrastruktury każdy element jesteśmy w stanie opakować w uniwersalny kontener dockerowy:
    • FE w HTTP Serwer nginx
    • API jako uruchomiony proces node.js
    • MySQL/Postgress/itd jako kontener bazodanowy z volumenem
  • znając typy kontenerów tworzymy szablony Kubernetesm, które będą opakowywały określone aplikacje
  • rozpoczynając projekt generujemy pliki konfiguracyjne za pomocą wizarda, które dołączamy do projektu
  • pliki można dostosować pod siebie, jeżeli wymagane są jakieś specjalne konfiguracje
  • szablon zawiera konfiguracje CI/CD, która aplikuje konfiguracje kubernentes oraz tworzy obrazy dla kontenenerów, które umieszcza w repozytorium na AWS ECR
  • release na staging polega na wypchnięciu repozytorium na określony branch

Pre-konfiguracja

  • ustawienie clustra AWS EKS (Elastic Kuberenetes Service) na którym będziemy deployować aplikacje stagingowe
  • instalacja Ingressa na clustrze, który będzie obsługiwał żądania HTTP oraz przyjmował ruch HTTPS
  • konfiguracja kluczy AWS (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION) dla pipelinów CI/CD w Bitbucket
  • stworzenie generatora szablonów
  • dodanie domeny z wildcardem (*.btn.fyi) - każdy projekt dostaje swoją subdomenę automatycznie

Obiekty Kubernetes

Każda aplikacja HTTP (FE/API) składa się kilku obiektów Kubernetes:

  • obiekt typu Ingress:
    • określaja reguły routowania
    • określa domenę
    • wskazuje na obiekt typu Service
    • konfiguruje HTTPS dla endpointu
    • konfiguruje load balancer (funkcja AWS EKS)
  • obiekt typu Service:
    • pośrednik pomiędzy Ingressem, a Pod'em
    • mapuje port przychodzący z Ingressa na port kontenera w podzie
    • wskazuje na konkretny Pod (zbiór kontenerów dockerowych)
  • obiekt typu Deployment:
    • konfiguruje Pod'y
    • Pod zawiera w sobie 1 lub więcej kontenerów dockerowych
    • odpowiednik Task Definition z ECS lub plików docker-compose
    • określa z jakiego obrazu mają być zbudowane kontenery
    • określa ile instancji podów ma być stworzonych (skalowanie), sposób deploymentu (zero downtime, canary, blue-green), itp
    • zazwyczaj zawiera kontener z aplikacją i np. nginx, który na niego kieruje
  • obiekty typu Config-Map
    • aplikowalne konfiguracje, które mogą być użyte w kontenerach, np. pliki konfiguracyjne nginx, listy zmiennych środowiskowych, konfiguracje .ini dla serwisów, itp
  • Persitent Volume Claim (PVC) i Persistent Volume (PV)
    • PVC deklaruje konfiguracje dla PV
    • PV tworzy wolumen danych, których następnie jest montowany do kontenerów
    • PV jest przechowywane na stałe (stosujemy np. do trzymania danych z baz danych)
    • zależność pomiędzy PVC, a PV jest jak pomiędzy klasą, a instancją klasy

CI/CD

  • wykorzystujemy konfiguracje dla Bitbucket Pipelines

  • pojedynczy pipeline składa się z kilku kroków:

    1. Konfiguracja - ustawienie zmiennych
    2. Zbudowanie obrazu dockerowego - każdy serwis powinien sam wiedzieć jak się budować
    3. Wypchnięcie obrazu na repozytorium AWS ECR (Elastic Container Repository) z odpowiednimi tagami
    4. Zaaplikowanie obiektów Kubernetes z katalogu k8s
    5. Aktualizacja tagu obrazu w deploymencie, co wymusi przeładowanie kontenera (kubectl set image)