Prywatny rejestr Docker w OKD na zasobie NFS
Przetłumaczone automatycznie z angielskiego. Przeczytaj oryginał
Jeśli używasz OKD/OpenShift, najprawdopodobniej uruchamiasz też wewnętrzny, prywatny rejestr Docker dla swoich buildów. Klaster korzysta z niego, wyszukując obrazy kontenerów do dalszych wdrożeń. W podstawowej, domyślnej instalacji Docker Registry znajduje się w projekcie o nazwie default. Używa on też quasi-trwałego magazynu, który przetrwa tylko do następnego ponownego wdrożenia kontenera (poda) rejestru. Istnieje jednak możliwość zamontowania wolumenu NFS w konfiguracji wdrożenia rejestru, dzięki czemu obrazy wypchnięte do rejestru nie znikną, gdy trzeba będzie ponownie wdrożyć sam rejestr. Taka potrzeba może się pojawić, jeśli uruchamiasz playbook Ansible do ponownego wdrażania certyfikatów. Przeglądając ten playbook, zobaczysz krok, w którym następuje ponowne wdrożenie rejestru, więc w takim scenariuszu potrzebujesz trwałego magazynu dla rejestru.
Najpierw zainstaluj serwer NFS na osobnej maszynie i skonfiguruj katalog oraz /etc/exports. Następnie zrestartuj serwer NFS (service nfs-server restart).
/opt/PVdirectory *(rw,root_squash,no_wdelay)Następnie trzeba utworzyć na masterze OKD konfigurację PV (czyli persistent volume):
apiVersion: v1
kind: PersistentVolume
metadata:
name: PVname
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
nfs:
path: /opt/PVdirectory
server: 192.168.1.2
persistentVolumeReclaimPolicy: RecycleZastosuj tę konfigurację:
oc create -f filename.yamlWłaśnie utworzyłeś definicję PV, która mówi OKD, by szukał wolumenu NFS na 192.168.1.2 w /opt/PVdirectory o pojemności 10GiB, który zostanie odzyskany (recycle), jeśli nie będzie powiązany. Następnie musisz skopiować bieżącą zawartość rejestru, czyli obrazy Docker. Nie ma scp do kopiowania plików, ale najpierw spakuj je za pomocą tar:
cd /registry
tar -cf docker.tar dockerTeraz przejdź na mastera i znajdź nazwę kontenera docker-registry (zastąp abcdefg właściwym ID):
oc rsync docker-registry-abcdefg:/registry/docker.tar .Przenieś archiwum na serwer NFS i tam je rozpakuj. Główny folder ma właściciela nfsnobody, ale wewnętrzna zawartość taką samą jak oryginał:
sudo chown -R 1000000000:1000000000 dockerTeraz przejdź do webconsole OKD i wyłącz rejestr (przeskaluj do 0 podów). Przejdź do konfiguracji wdrożenia, usuń domyślny magazyn i dodaj w jego miejsce swój, podając /registry jako ścieżkę. Uruchom rejestr ponownie i przetestuj go. Teraz powinien korzystać z zasobu NFS i możesz swobodnie ponownie wdrażać rejestr, gdy zajdzie taka potrzeba.