diff --git a/03-create-service.md b/03-create-service.md new file mode 100644 index 0000000..13af41e --- /dev/null +++ b/03-create-service.md @@ -0,0 +1,103 @@ +# 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 `test.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: 'profile-$hs_username', + domain: '$hs_username-test.hscloud.ovh', + image: 'registry.k0.hswaw.net/radex/ldap-web:1695486391', + }, +... +} +``` + +Logujemy się do klastra: + +```bash +prodaccess -username $hs_username +``` + +Z pliku `prod.jsonnet` generujemy plik `deployment.json`: + +```bash +kubecfg show prod.jsonnet > deployment.json +``` + +Wywołujemy komendę zastosowania zmian: + +```bash +kubectl apply -f deployment.json +``` + +Nasza usługa powinna być pod adresem `https://$hs_username-test.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 +kubectl delete -f deployment.json +``` + +lub + +```bash +kubectl delete service $hs_username-test -n personal-$hs_username +``` \ No newline at end of file diff --git a/README.md b/README.md index 8a1d03d..efafafa 100644 --- a/README.md +++ b/README.md @@ -9,4 +9,8 @@ Wprowadzenie do tworzenia usług w hscloud. Niniejszy zestaw dokumentów ma na c ## Przygotowywanie narzędzi -- [Budowa środowiska](02-build-environment.md) \ No newline at end of file +- [Budowa środowiska](02-build-environment.md) + +## Wdrażanie przykładowej usługi + +- [Wdrażanie usługi ldapweb](03-create-service.md) \ No newline at end of file