103 lines
2.7 KiB
Markdown
103 lines
2.7 KiB
Markdown
|
# 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
|
||
|
```
|