2.7 KiB
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:
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:
mkdir personal/$hs_username
Kopiujemy do przestrzeni roboczej konfigurację usługi ldapweb
:
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:
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!):
local kube = import "../../../kube/kube.libsonnet";
{
local top = self,
local cfg = self.cfg,
cfg:: {
name: 'test',
namespace: 'profile-$hs_username',
domain: 'test.$hs_username.hscloud.ovh',
image: 'registry.k0.hswaw.net/radex/ldap-web:1695486391',
},
...
}
Logujemy się do klastra:
prodaccess -username $hs_username
Z pliku prod.jsonnet
generujemy plik deployment.json
:
kubecfg show prod.jsonnet > deployment.json
Wywołujemy komendę zastosowania zmian:
kubectl apply -f deployment.json
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ć:
kubectl delete -f deployment.json
lub
kubectl delete service $hs_username-test -n personal-$hs_username