GNU/Linux >> Znalost Linux >  >> Linux

Jak ukládat grafy kormidla v Azure Container Registry

Jednou z velkých výhod pochopení toho, jak kontejnerový ekosystém funguje, je to, že můžete použít stejný vzor pro několik specifikací.

Není to tak dlouho, co Helm oznámil, že bude podporovat OCI Artifacts, což není nic jiného než otevřená specifikace OCI pro distribuci obrázků kontejnerů a dalších typů dat, nazývaných artefakty.

Tato specifikace, stejně jako všechny ostatní specifikace OCI, je cloud-agnostická, což z ní dělá fantastický nástroj pro práci.

Záznamy kontejneru

Kontejnerový záznam (CR) nebo registr je něco, co musel použít každý, kdo se kdy musel zabývat kontejnery. CR je místo, kde ukládáme obrázky kontejnerů, takže je můžeme načítat odkudkoli a kdykoli chceme.

Obrázek je v podstatě sada souborů, které mají strukturu víceméně podobnou této:

 ├── blobs
       │   └── sha256
       │       ├── 1b251d38cfe948dfc0a5745b7af5ca574ecb61e52aed10b19039db3...
       │       ├── 31fb454efb3c69fafe53672598006790122269a1b3b458607dbe106...
       │       └── 8ec7c0f2f6860037c19b54c3cfbab48d9b4b21b485a93d87b64690f...
       ├── index.json
       └── oci-layout

Soubor index.json je seznam všech dostupných manifestů, tj. je to seznam všech obrázků dostupných v umístění. V našem případě je to seznam všech žebříčků kormidel.

Každý soubor uvnitř blobs/sha256 je JSON, který identifikuje artefakt, ať už je to obrázek nebo graf. Tento JSON je v souladu se specifikací OCI pro soubory SHA.

Stručně řečeno, jedná se o seznam nastavení popisující vlastnosti objektu BLOB, jeho nastavení, vlastnosti, vrstvy systému souborů a také počáteční příkazy.

V případě Helm Chart máme následující soubor:

{
  "schemaVersion": 2,
  "config": {
    "mediaType": "application/vnd.cncf.helm.config.v1+json",
    "digest": "sha256:8ec7c0f2f6860037c19b54c3cfbab48d9b4b21b485a93d87b64690fdb68c2111",
    "size": 117
  },
  "layers": [
    {
      "mediaType": "application/tar+gzip",
      "digest": "sha256:1b251d38cfe948dfc0a5745b7af5ca574ecb61e52aed10b19039db39af6e1617",
      "size": 2487
    }
  ]
}

Všimněte si, že rozlišujeme mediaType , zatímco běžný obrázek Dockeru má typ application/vnd.oci.image.config.v1+json .

Zde máme typ  application/vnd.cncf.helm.config , totéž platí pro vrstvy, každá vrstva obrázku OCI je typu application/vnd.oci.image.layer.v1.tar+gzip , zatímco zde máme pouze formát .tar.gz .

Hostovací grafy v Azure Container Registry

Hostování grafů Helm v Azure CR je do značné míry podobné jejich místnímu ukládání. Musíte mít přístup k Azure přes Azure CLI. Předpokládám, že již máte Azure CLI, takže pojďme vytvořit naše ACR.

Nejprve musíme vytvořit naši skupinu prostředků a poté ACR pomocí příkazů:

az group create -n helm-reg -l eastus
az acr create -n chartregistry$RANDOM -g helm-reg --sku Basic -o tsv --query loginServer

Tip je uložit název úložiště do proměnné:

export ACR=$(az acr create -n chartregistry$RANDOM -g helm-reg --sku Basic -o tsv --query loginServer)

Nyní se přihlásíme do našeho registru pomocí spravovaných klíčů Azure, ale musíme povolit správu pro správu pomocí az acr update -n $ACR --admin-enabled true .

Dále spusťte následující dva příkazy k načtení přihlašovacích údajů a jejich uložení do prostředí shell:

export ACRUSER=$(az acr credential show -n $ACR --query username -o tsv)
export ACRPASS=$(az acr credential show -n $ACR --query 'passwords[0].value' -o tsv)

Nyní se můžeme přihlásit do našeho registru pomocí Helm pomocí helm registry login $ACR --username $ACRUSER --password $ACRPASS a odtud již máme nakonfigurovaný náš registr.

Pojďme vytvořit další artefakt pomocí helm chart save hrepo $ACR/hrepo:2.1.3 (Jako příklad použiji graf z  dumpy repository s názvem hrepo). Pak to posuneme pomocí helm chart push $ACR/hrepo:3.8.0 .

Jakmile to tam bude, budeme moci vypsat vše v úložišti pomocí příkazu Azure CLI:

az acr repository show -n $ACR --repository hrepo

Všimněte si, že budeme mít výstup, který je přesně to, co jsme odeslali:

{
  "changeableAttributes": {
    "deleteEnabled": true,
    "listEnabled": true,
    "readEnabled": true,
    "writeEnabled": true
  },
  "createdTime": "2022-03-05T20:56:49.6118202Z",
  "imageName": "hrepo",
  "lastUpdateTime": "2022-03-05T20:56:49.7812323Z",
  "manifestCount": 1,
  "registry": "chartregistry23657.azurecr.io",
  "tagCount": 1
}

Další podrobnosti můžeme získat také příkazem show-manifests přidáním --detail :

az acr repository show-manifests -n $ACR --repository hrepo --detail

To nám dá přesnou definici artefaktů OCI:

[
  {
    "changeableAttributes": {
      "deleteEnabled": true,
      "listEnabled": true,
      "quarantineState": "Passed",
      "readEnabled": true,
      "writeEnabled": true
    },
    "configMediaType": "application/vnd.cncf.helm.config.v1+json",
    "createdTime": "2022-03-05T20:56:49.7213057Z",
    "digest": "sha256:4780713fa23d7144d356c353795b5b84e66ad2b8bbd47c7118b4b85435d50bbc",
    "imageSize": 1378,
    "lastUpdateTime": "2022-03-05T20:56:49.7213057Z",
    "mediaType": "application/vnd.oci.image.manifest.v1+json",
    "tags": [
      "2.1.3"
    ]
  }
]

K jeho uložení musíme jednoduše:

helm chart pull $ACR/hrepo:3.8.0
helm chart export $ACR/hrepo:3.8.0 -d ./destination
helm install hrepo-acr ./destination

Závěr

Ačkoli je použití Helm snadné, neexistuje "jednoduchý" způsob, jak hostit Helmův graf jako nějaký druh soukromého záznamu.

I když má Helm vynikající nástroje, jako je Chart Museum, stále nejsou zcela standardní a pro snadný distribuovaný vývoj je nezbytné, abychom měli otevřené standardy, které může každý jako celek sledovat.

Helm nedávno přesunul podporu registru OCI z experimentální na obecnou funkci, což je jasným znamením, že ekosystém kontejnerů je stále lepší.

Informace o autorovi:Talha Khalid je webový vývojář a technický spisovatel na volné noze.


Linux
  1. Jak spravovat registry kontejnerů Linux

  2. Jak používat Podman uvnitř kontejneru

  3. Mutt:Jak bezpečně uložit heslo?

  1. Jak používat proměnné prostředí s Helm Charts

  2. Jak snížit zátěž registru kontejnerů pomocí Quay.io

  3. Jak opustit kontejner Docker

  1. Jak vytvořit tabulku kormidla

  2. Jak kontejnerizovat starší aplikace

  3. Jak tahat a tlačit tabulky kormidla