środa, 18 kwietnia 2018

OpenShift i prywatne Docker Registry

Czasami zdarza się, że nasze obrazy kontenerów dockerowych przetrzymujemy w prywatnym rejestrze. Wymaga to wykonania przez nas dodatkowych operacji, które umożliwią nam pobranie danego obrazu.

Na początek logujemy się do OpenShifta tokenem
oc login https://127.0.0.1:8443 --token=viNUjgpTzIReqx-FHRU-c3XEEFojhio4tEQeJ5_3TgE
lub przez login i hasło
oc login -u admin -p admin
Kolejnym krokiem jest zalogowanie się do naszego Registry aby wygenerować plik z danymi uwierzytelniającymi:
docker login adres_serwera
Plik znajduje się pod adresem "/home/katalog_domowy/.docker/config.json". Teraz musimy wygenerować zasób przechowujący dane uwierzytelniające:
oc create secret generic mojeregistry --from-file=.dockerconfigjson=/katalog_domowy/.docker/config.json --type=kubernetes.io/dockerconfigjson
Dalej:
oc secrets link default mojeregistry --for=pull
oc secrets link builder mojeregistry --for=pull
oc secrets link deployer mojeregistry --for=pull
W tym miejscu mała dygresja, a mianowicie OpenShift domyślnie odpala aplikację w kontenerze jako użytkownik o losowym identyfikatorze celem bezpieczeństwa. Prawa są ograniczone i może się tak zdarzyć, że program nie będzie mógł się odpalić. Jeżeli nie można zmienić tego w OpenShifcie to konieczna jest modyfikacja Dockerfile'a. Aby dokonać zmiany w OpenShifcie najpierw wprowadzić
oc edit scc restricted
która otworzy nam plik jednego z Security Context Constraints.

Odnajdujemy linie
runAsUser:
   type: MustRunAsRange
i zamieniamy na
runAsUser:
   type: RunAsAny
Powyższe operacje umożliwią nam pobranie obrazu z prywatnego Registry.