1
0
Fork 0
hscloud-docs/03-create-service.md

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