Hogyan kell szemetet gyűjteni A GitLab konténer nyilvántartást a tárhely felszabadítása érdekében – CloudSavvy IT

Avatar Gadam | 2021.02.13. 61 Views 0 Likes 0 Ratings

61 Views 0 Ratings Rate it

[ad_1]

A GitLab logót ábrázoló grafika, egy stilizált rókafej

A GitLab Container Registry kényelmes helyet biztosít a Docker képek tárolásához. Az idő múlásával a Tároló-nyilvántartás megemésztheti a lemezterületet, ha újabb rétegeket ad hozzá. A felesleges anyagok eltávolításával a következőképpen szabadíthat fel tárhelyet.

A konténer nyilvántartás lehetővé teszi Docker képek tárolását a projekt forráskódja mellett. Ha a rendszerleíró adatbázisban nagy képeket tárol, a várakozáson felül gyorsan megtalálja a tárolási költségeket. A GitLab minden réteget korlátlanul megtart, még akkor is, ha feleslegessé válik.

Tisztítási házirend beállítása

A tárhely visszaszerzésének első lépése a tároló-nyilvántartás tisztítási házirendjének konfigurálása. A takarítási irányelveket minden projektre külön-külön alkalmazzák. Ez azt jelenti, hogy testre szabhatja a megőrzési időszakot az egyes kódbázisoknak megfelelően.

Látogasson el projektjéhez a GitLab-ban, és kattintson az oldalsávon a „Beállítások” linkre. Váltson a „CI / CD” kategóriára, és bontsa ki az oldal alján található „Képcímkék tisztítása” részt.

A Tisztítási házirend aktiválásához kapcsolja az „Engedélyezve” gombot bekapcsolt helyzetbe. Ezután válassza ki, hogy mikor futtassa az irányelvet – a „minden nap” jó alapértelmezés.

A következő szakasz: „Tartsa meg ezeket a címkéket” lehetővé teszi olyan címkék meghatározását, amelyeket a Tisztítási házirend egyedül hagy. A két lehetőség, a „legfrissebbek megtartása” és a „címkék egyeztetése” függetlenek egymástól. Választhatja a megtartást dev és nightly, kiegészítve az öt legfrissebb címkével. A latest tag mindig tartalmazza a beállított címkék mellett.

A következő szakasz: „E címkék eltávolítása” meghatározza az eltávolítandó címkék engedélyezési listáját. A regex mintával nem egyező címkék nem érhetők el. Állítsa be a „Címkék régebbi eltávolítása” értéket az egyes címkék maximális élettartamának beállításához, mielőtt azok megtisztulnának. Ha végzett, kattintson a zöld „Mentés” gombra.

Az API használata

A tisztítási irányelvek webes felhasználói felületen keresztül történő alkalmazása gyorsan unalmassá válhat. Használja inkább az API-t, ha több projektet is módosít.

curl --request PUT --header 'Content-Type: application/json;charset=UTF-8' --header "PRIVATE-TOKEN: <access_token>" --data-binary '{"container_expiration_policy_attributes":{"cadence":"1month","enabled":true,"keep_n":1,"older_than":"14d","name_regex":"","name_regex_delete":".*","name_regex_keep":"latest' "https://gitlab.example.com/api/v4/projects/<project_id>"

Muszáj lesz generál egy API hozzáférési tokent a GitLab profiloldalára irányítva. Használja a tokent as <access_token> a fenti parancsban. Állítsa be az URL-t úgy, hogy a projektre mutasson – azonosítója megtalálható a projekt oldalán a GitLab-on.

A fenti parancs futtatásával minden hónapban futó, 14 napnál régebbi képeket megtisztító rendszerleíró adatbázis-tisztítási házirendet alkalmaz. A latest tag és a legújabb tag (keep_n) megmarad; az összes többi jogosult lesz az eltávolításra (.*).

A tisztítási irányelv hatásai

A Tisztítási házirend a képeket a beállított kritériumok alapján kezeli. A címkék törlődnek a tároló-nyilvántartásból. Ezek a továbbiakban nem jelennek meg a projekted Container Registry képernyőn, és a Docker kliensek nem fogják kihúzni őket.

A kép felcímkézése azonban nem azonos a tényleges törlésével. A takarítási irányelv nem újrahasznosítja az adatokat, így a használaton kívüli címkék metszése után is magas a tárhelyhasználat.

Ez azért van, mert a képrétegek a GitLab szerveren maradnak, és a későbbi használatra tárolva vannak. Az adatok végleges eltávolításához először futtassa a Container Registry Garbage Collection eljárást.

Szemétgyüjtés

A Garbage Collection futtatásával minden képréteg törlésre kerül, amelyek nem kapcsolódnak címkéhez. Ez olyan képek eltávolítását eredményezi, amelyeket a tisztítási irányelvek nem jelöltek meg. Ezenkívül eldobhatja azokat a régi rétegeket is, amelyek feleslegessé váltak, amikor egy címke új verzióját tolta.

A szemétgyűjtést manuálisan kell meghívni a GitLab parancssori felületén keresztül. Csatlakozzon a GitLab kiszolgálóhoz SSH-n keresztül, és futtassa a következő parancsot:

sudo gitlab-ctl registry-garbage-collect

A szemétgyűjtési folyamat lefut. A tároló-nyilvántartásában található fel nem használt címkéket újrahasznosítják. A Garbage Collection címkézetlen képeket keres az egész GitLab példányon.

Feltételezve, hogy először a futtatási rendszert futtatja, akkor a tárolók használatának egészséges csökkenését kell tapasztalnia. Ha most először futtatja a szemétgyűjtést egy gyakran használt GitLab telepítésen, akkor valószínűleg több gigabájt helyet igényelt.

A címkézetlen megnyilvánulások és rétegek eltávolítása

Még több helyet igényelhet, ha utasítja a szemétszedést, hogy távolítsa el a címkézetlen képnyilvántartásokat és a hivatkozatlan rétegeket is. Ez egy rombolóbb művelet, bár általában ezt várja.

sudo gitlab-ctl registry-garbage-collect -m

A -m A flag töröl minden olyan réteget, amely nincs közvetlenül társítva a címkézett képjegyzékhez. Ez a gyorsítótárazott rétegek és a közbenső építési lépések elvesztését eredményezi.

Alapértelmezés szerint a Docker és a GitLab Container Registry megőrzi az összes létrehozott réteget, még akkor is, ha már nincs rá hivatkozás. Ez azt jelenti, hogy egy korábban ismert fóliát mindig meg lehet szerezni annak egyedi használatával tartalom-címezhető azonosító, akkor is, ha már nem rendelkezik címkével.

Ezért ezek a rétegek eltávolítása alapértelmezés szerint nincs engedélyezve. A parancs futtatása előtt ismernie kell a következményeket, mivel egyes munkafolyamatokban komoly következményekkel járhat. Ennek ellenére a -m A kapcsoló gyakran kívánatos – sokkal több lemezterületet szabadít fel, és semmilyen mellékhatással nem járhat, ha csak címkéneveket használ a képekre.

Szemétgyűjtés futtatása ütemezés szerint

A tisztítási házirendek automatikusan futnak az Ön által beállított gyakorisággal. A szemétgyűjtés alapértelmezés szerint nincs beállítva, ezért az első futtatás drámai módon csökkentheti a tárhely kihasználtságát.

A szemétszállítás ütemezés szerinti futtatásához hozzá kell adnia a parancsot a rendszeréhez crontab. Hozzon létre egy fájlt /etc/cron.d/registry-garbage-collection a következő tartalommal a szemétszállítás minden hétfőn hajnali 2 órakor:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 2 * * 1  root gitlab-ctl registry-garbage-collect

A szemétszállítás korlátai

A szemétgyűjtéshez szükséges idő függ a törölni kívánt adatok mennyiségétől. A Garbage Collection használatához le kell állítani a Container Registry szolgáltatást, amíg fut. Ez azt jelenti, hogy a felhasználók nem tudnak képeket húzni vagy tolni, amíg a folyamat nem fejeződik be.

Csökkentheti az állásidő hatását, ha a rendszerleíró adatbázist csak olvasható módba kapcsolja, futtatja a parancsot, majd visszavált írás-írásra. A rendszerleíró adatbázis továbbra is működik, de a felhasználók nem tudnak képeket nyomtatni. Ezenkívül a módváltás megköveteli a GitLab „újrakonfigurálását” (sudo gitlab-ctl reconfigure), amely önmagában leállást okozhat a telepítés beállításától függően.

Szerkesztenie kell a következő sorokat itt: /etc/gitlab/gitlab.rb:

registry['storage'] = {
    'maintenance' => {
      'readonly' => {
        'enabled' => true
      }
    }
  }

Fuss sudo gitlab-ctl reconfigure, majd használja az egyik szemétgyűjtési parancsot. Ha ez megtörtént, tiltsa le az írásvédett módot a enabled sor a gitlab.rb vissza a false, majd konfigurálja újra a GitLab-ot.

[ad_2]
Source link