🐦 Remove language options

This commit is contained in:
Ch3shireDev 2023-10-26 19:21:25 +02:00
parent 40189a01c1
commit aa7fae715e
15 changed files with 15 additions and 487 deletions

View file

@ -4,6 +4,13 @@ In this chapter, I will describe how to build an environment on an already prepa
The description is based on information obtained from conversations with @inf and from [hscloud user documentation](https://code.hackerspace.pl/hswaw/hscloud/src/branch/master/cluster/doc/user.md).
## Requirements
Working nix. You can install nix with command:
```bash
sh <(curl -L https://nixos.org/nix/install) --daemon
```
## Steps

View file

@ -1,24 +1,21 @@
# hscloud-docs
Intro to hscloud service creation. This set of documents aims to document the process of getting into hscloud.
- [english version](./en/README.md)
- [polish version](./pl/README.md)
Introduction to creating services in hscloud. This set of documents is intended to document the process of biting into the operation of the cloud.
## Preparing the environment
- Building on NixOS ([en](./en/01-prepare-nixos.md) / [pl](./pl/01-prepare-nixos.md))
- Building on Ubuntu ([en](./en/01-prepare-ubuntu.md) / [pl](./pl/01-prepare-ubuntu.md))
- [Building on NixOS](01-prepare-nixos.md)
- [Building on Ubuntu](01-prepare-ubuntu.md)
## Preparing tools
- Building environment ([en](./en/02-build-environment.md) / [pl](./pl/02-build-environment.md))
- [Building environment](02-build-environment.md)
## Deploying a sample service
- Deploying the ldapweb service ([en](./en/03-create-service.md) / [pl](./pl/03-create-service.md))
- [Deploying the ldapweb service](03-create-service.md)
## Building and deploying own service
## Building own service
- Building a simple Flask web application ([en](./en/04-build-web-app.md) / [pl](./pl/04-build-web-app.md))
- Deploying a docker image on hscloud ([en](./en/05-deploy-web-app.md) / [pl](./pl/05-deploy-web-app.md))
- [Building a simple Flask web application](04-build-web-app.md)
- [Deploying docker image on hscloud](05-deploy-web-app.md)

View file

@ -1,21 +0,0 @@
# hscloud-docs
Introduction to creating services in hscloud. This set of documents is intended to document the process of biting into the operation of the cloud.
## Preparing the environment
- [Building on NixOS](01-prepare-nixos.md)
- [Building on Ubuntu](01-prepare-ubuntu.md)
## Preparing tools
- [Building environment](02-build-environment.md)
## Deploying a sample service
- [Deploying the ldapweb service](03-create-service.md)
## Building own service
- [Building a simple Flask web application](04-build-web-app.md)
- [Deploying docker image on hscloud](05-deploy-web-app.md)

View file

@ -1,33 +0,0 @@
# Kompilacja w środowisku NixOS
NixOS jest systemem operacyjnym, który pozwala na deklaratywne opisywanie środowiska. W tym rozdziale opisane są kroki potrzebne do zbudowania środowiska, w którym można budować usługi w chmurze.
W tym tutorialu została wykorzystana wersja NixOS 23.05.
Skrypt wykonujący dostępny w [01-build-nixos.sh](01-build-nixos.sh) wykonuje wszystkie kroki opisane w tym rozdziale.
## Wymagania
Chęć do zainstalowania NixOSa, bare metal lub wirtualnie. Wirtualizacja może być wykonana np. za pomocą [VirtualBox](https://www.virtualbox.org/).
## Kroki
Pobierz system NixOS z [nixos.org](https://nixos.org/download.html#nixos-iso) i zainstaluj go na swojej maszynie.
Potrzebujemy zainstalować pakiet `git` i sklonować repozytorium z kodem źródłowym usług w chmurze. W terminalu wpisujemy:
```bash
nix-env -iA nixos.git
git clone https://code.hackerspace.pl/hswaw/hscloud
cd hscloud
```
Jeśli chcemy publikować cokolwiek na gerricie, musimy wykonać dodatkowe kroki ([źródło](https://gerrit.hackerspace.pl/admin/repos/hscloud,general)):
```bash
mkdir -p .git/hooks/
curl -Lo .git/hooks/commit-msg https://gerrit.hackerspace.pl/tools/hooks/commit-msg
chmod +x .git/hooks/commit-msg
```
Następny krok: [Budowa środowiska](02-build-environment.md)

View file

@ -1,45 +0,0 @@
# Kompilacja w środowisku Ubuntu
W tym rozdziale opisane są kroki potrzebne do zbudowania środowiska, w którym można budować usługi w chmurze hscloud. Instrukcja wzoruje się na [01-build-nixos.md](01-build-nixos.md), jedynie z dodatkowym krokiem pobierania i instalacji menedżera pakietów `nix`.
## Wymagania
Uprawnienia administratora, środowisko Ubuntu 22.04 lub nowsze, bądź odpowiedni Ubuntu-like desktop.
## Kroki
Instalujemy pakiety `git` oraz `curl`:
```bash
sudo apt update
sudo apt install git curl
```
Pobieramy i instalujemy menadżer pakietów `nix` (źródło: [nixos.org](https://nixos.org/download)):
```bash
sh <(curl -L https://nixos.org/nix/install) --daemon
```
Po tej operacji należy wylogować się i zalogować ponownie, aby móc korzystać z `nix`.
```bash
reboot # overkill, ale pewne
```
Klonujemy repozytorium z kodem źródłowym usług w chmurze:
```bash
git clone https://code.hackerspace.pl/hswaw/hscloud
cd hscloud
```
Jeśli chcemy publikować cokolwiek na gerricie, musimy wykonać dodatkowe kroki ([źródło](https://gerrit.hackerspace.pl/admin/repos/hscloud,general)):
```bash
mkdir -p .git/hooks/
curl -Lo .git/hooks/commit-msg https://gerrit.hackerspace.pl/tools/hooks/commit-msg
chmod +x .git/hooks/commit-msg
```
Następny krok: [Budowa środowiska](02-build-environment.md)

View file

@ -1,57 +0,0 @@
# Budowa środowiska
W tym rozdziale przedstawię, jak na przygotowanej już platformie (NixOS, Ubuntu, etc.) zbudować środowisko, w którym będziemy budować usługi w chmurze hscloud.
Opis opiera się na informacjach uzyskanych z rozmów z @inf oraz z [dokumentacji użytkownika hscloud](https://code.hackerspace.pl/hswaw/hscloud/src/branch/master/cluster/doc/user.md).
## Kroki
Tworzymy środowisko, w którym będziemy budować usługi. W tym celu tworzymy środowisko na podstawie definicji w pliku `shell.nix`:
```bash
nix-shell
```
Używamy teraz narzędzia `bazel`, aby zbudować i uruchomić potrzebne usługi, m.in. `prodaccess` oraz `kubectl`:
```bash
bazel build //tools:install
bazel run //tools:install
```
Teraz możemy poprosić o przyznanie nam dostępu do klastra hscloud poprzez narzędzie [prodaccess](https://pkg.go.dev/code.hackerspace.pl/hscloud/cluster/prodaccess#section-readme). w miejsce `$hs_username` należy wstawić nazwę użytkownika w SSO hackerspejsu:
```bash
hs_username=$USER # if your username is the same as your SSO username
prodaccess -username $hs_username
```
W przypadku braku dostępu do klastra, należy skontaktować się w ramach [Matrix](https://matrix.hackerspace.pl/) z [@q3k](q3k:hackerspace.pl) bądź z [@inf](informatic:hackerspace.pl).
Aby sprawdzić, czy mamy dostęp do klastra, możemy wykonać polecenie:
```bash
# pokazuje wersję Kubernetesów
kubectl version
# pokazuje statystyki klastra
kubectl top nodes
```
Możemy również wywołać publiczny obraz Dockera (ponownie, w miejsce `$hs_username` należy wstawić nazwę użytkownika w SSO hackerspejsu):
```bash
# aby utworzyć instancję (pod) alpine
kubectl -n personal-$hs_username run --image=alpine:latest -it foo
```
If you want to delete the instance, run:
```bash
# aby skasować instancję (pod) alpine
kubectl -n personal-$hs_username delete pod foo
```
## Następny krok
Następny krok: [Tworzenie usługi http](03-create-service.md)

View file

@ -1,98 +0,0 @@
# Tworzenie publicznej usługi w hscloud
W tym rozdziale przedstawię, jak stworzyć usługę, która będzie dostępna publicznie w Internecie.
## Tworzenie kopii ldapweb
Zaczynamy od włączenia środowiska nix-shell:
```bash
cd hscloud
nix-shell
```
Zaczynamy w katalogu `hscloud`, z włączonym środowiskiem `nix-shell`. Jeśli w folderze `//personal` jeszcze nie masz swojej przestrzeni nazw, to ją tworzymy:
```bash
mkdir personal/$hs_username
```
Kopiujemy do przestrzeni roboczej konfigurację usługi `ldapweb`:
```bash
cp -r hswaw/ldapweb/ personal/$hs_username/
cd personal/$hs_username/ldapweb/
```
## Modyfikacja usługi
Konfiguracja `ldapweb` zawiera się w pliku `prod.jsonnet`. Format `jsonnet` jest bardzo podobny do `json`, ale pozwala na użycie zmiennych, funkcji oraz importowanie innych plików.
Interesuje nas początkowy fragment pliku:
```jsonnet
local kube = import "../../kube/kube.libsonnet";
{
local top = self,
local cfg = self.cfg,
cfg:: {
name: 'ldapweb',
namespace: 'ldapweb',
domain: 'profile.hackerspace.pl',
image: 'registry.k0.hswaw.net/radex/ldap-web:1695486391',
},
...
}
```
Import następuje z pliku `kube.libsonnet` w folderze `kube` w folderze `hscloud`. Aby w tym wypadku import przebiegał poprawnie, potrzebujemy cofnąć się o jeden folder więcej: `../../../kube/kube.libsonnet`.
Konfiguracja `hscloud` pozwala na przestrzeń nazw jedynie w formacie `personal-$hs_username`. Dodatkowo, musimy zmienić domenę na `*.$hs_username.hscloud.ovh`. Na końcu, zmieniamy nazwę usługi na `test`.
Ostatecznie, powyższy fragment pliku `prod.jsonnet` powinien wyglądać tak (pamiętaj o podmianie `$hs_username` na swoją nazwę użytkownika!):
```jsonnet
local kube = import "../../../kube/kube.libsonnet";
{
local top = self,
local cfg = self.cfg,
cfg:: {
name: 'test',
namespace: 'personal-$hs_username',
domain: 'test.$hs_username.hscloud.ovh',
image: 'registry.k0.hswaw.net/radex/ldap-web:1695486391',
},
...
}
```
Logujemy się do klastra:
```bash
prodaccess -username $hs_username
```
Wywołujemy komendę zastosowania zmian:
```bash
kubecfg update prod.jsonnet
```
Nasza usługa powinna być pod adresem `https://test.$hs_username.hscloud.ovh/`. W trakcie pierwszych paru minut dostaniemy informację o niepoprawnym certyfikacie, ponieważ usługa Let's Encrypt nie zdążyła jeszcze wygenerować certyfikatu dla naszej domeny.
Aby usunąć usługę, należy wywołać:
```bash
kubecfg delete prod.jsonnet
```
lub
```bash
kubectl delete service test -n personal-$hs_username
```

View file

@ -1,111 +0,0 @@
# Tworzenie własnej usługi internetowej Flask
W tym rozdziale zbudujemy własną usługę sieciową przy użyciu frameworka Flask, dockeryzujemy ją i zarejestrujemy w rejestrze.
## Wymagania
W tym przykładzie wymagany będzie `docker`. Zainstaluj go ze swojej standardowej powłoki.
```bash
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
```
W rzeczywistości można utworzyć, zbudować i zarejestrować obraz docker w zupełnie innym środowisku i po prostu wdrożyć go na kubernetes w środowisku hscloud.
## Kroki
Stworzymy prostą aplikację Flask:
```py
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
```
Możemy sprawdzić, czy aplikacja działa, uruchamiając ją:
```bash
pip3 install flask
python3 app.py
```
Teraz tworzymy plik `Dockerfile` dla naszej aplikacji:
```Dockerfile
# Use an official Python runtime as a base image
FROM python:3.8-slim-buster
# Set the working directory in docker
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --upgrade pip && \
pip install flask gunicorn
# Set environment variables
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
# Expose port 5000 for the Flask app to listen on
EXPOSE 5000
# Define command to run the application using gunicorn
CMD ["gunicorn", "-w", "4", "-b", ":5000", "app:app"]
```
Możemy sprawdzić, czy aplikacja działa w Dockerze:
```bash
docker build -t myflask . # Build the image
docker run -d -p 5000:5000 myflask # Run the container
```
Otwieramy przeglądarkę pod adresem `http://localhost:5000`.
## Przesyłanie obrazu do rejestru
Najpierw musimy uwierzytelnić się w rejestrze:
```
https://registry.k0.hswaw.net
```
Otrzymasz polecenie podobne do:
```
docker login -u $hs_username -p *************** https://registry.k0.hswaw.net
```
Teraz musimy utworzyć lokalny serwer dla naszego obrazu docker:
```bash
docker tag myflask registry.k0.hswaw.net/$hs_username/myflask:latest
docker push registry.k0.hswaw.net/$hs_username/myflask:latest
```
Aby sprawdzić, czy obraz znajduje się w rejestrze:
```bash
curl -X GET https://registry.k0.hswaw.net/v2/$hs_username/myflask/tags/list
```
Aby usunąć obraz z rejestru:
```bash
docker rmi registry.k0.hswaw.net/$hs_username/myflask:latest
```

View file

@ -1,90 +0,0 @@
# Wdrażanie obrazu docker na hscloud
W tym rozdziale wdrożymy nasz zarejestrowany obraz docker na hscloud jako prostą usługę webową z HTTPS z Let's Encrypt.
## Wymagania
Potrzebujemy zarejestrowanego obrazu docker w rejestrze. Jeśli go nie masz, możesz go utworzyć, postępując zgodnie z rozdziałem [Building your own Flask web service](04-build-web-app.md). Potrzebujemy również działającej autoryzacji `prodaccess` (szczegóły: [Budowa środowiska](./02-build-environment.md)).
## Kroki
Tworzymy plik `prod.jsonnet` dla naszej aplikacji w lokalizacji `//personal/$hs_username/myflask/`:
```jsonnet
# Pamiętaj, aby zastąpić $hs_username nazwą użytkownika SSO!
local kube = import "../../../kube/kube.libsonnet";
{
local top = self,
local cfg = self.cfg,
cfg:: {
name: 'web-app',
namespace: 'personal-$hs_username',
domain: 'web-app.$hs_username.hscloud.ovh',
image: 'registry.k0.hswaw.net/$hs_username/myflask:latest',
},
ns: kube.Namespace(cfg.namespace),
deployment: top.ns.Contain(kube.Deployment(cfg.name)) {
spec+: {
replicas: 1,
template+: {
spec+: {
containers_: {
default: kube.Container("default") {
image: cfg.image,
ports_: {
http: { containerPort: 5000 },
}
},
},
},
},
},
},
service: top.ns.Contain(kube.Service(cfg.name)) {
target_pod:: top.deployment.spec.template,
},
ingress: top.ns.Contain(kube.Ingress(cfg.name)) {
metadata+: {
annotations+: {
"kubernetes.io/tls-acme": "true",
"cert-manager.io/cluster-issuer": "letsencrypt-prod",
"nginx.ingress.kubernetes.io/proxy-body-size": "0",
},
},
spec+: {
tls: [ { hosts: [ cfg.domain ], secretName: cfg.name + "-tls" } ],
rules: [
{
host: cfg.domain,
http: {
paths: [
{ path: "/", backend: top.service.name_port },
],
},
},
],
},
},
}
```
Możemy teraz wdrożyć naszą aplikację:
```bash
kubecfg update prod.jsonnet
```
Aplikacja powinna być dostępna pod adresem `http://web-app.$hs_username.hscloud.ovh`. Należy poczekać kilka sekund na działającą usługę HTTPS.
Aby usunąć aplikację:
```bash
kubecfg delete prod.jsonnet
```

View file

@ -1,21 +0,0 @@
# hscloud-docs
Wprowadzenie do tworzenia usług w hscloud. Niniejszy zestaw dokumentów ma na celu dokumentację procesu wgryzania się w działanie chmury.
## Przygotowanie środowiska
- [Budowa na NixOS](01-prepare-nixos.md)
- [Budowa na Ubuntu](01-prepare-ubuntu.md)
## Przygotowywanie narzędzi
- [Budowanie środowiska](02-build-environment.md)
## Wdrażanie przykładowej usługi
- [Wdrażanie usługi ldapweb](03-create-service.md)
## Budowanie własnej usługi
- [Tworzenie prostej aplikacji internetowej Flask](04-build-web-app.md)
- [Wdrażanie aplikacji internetowej](05-deploy-web-app.md)