GNU/Linux >> Belajar Linux >  >> Linux

Cara Menyimpan Bagan Helm di Azure Container Registry

Salah satu keuntungan besar memahami cara kerja ekosistem container adalah Anda dapat menggunakan pola yang sama untuk beberapa spesifikasi.

Belum lama ini, Helm mengumumkan akan mendukung Artefak OCI, yang tidak lebih dari spesifikasi terbuka OCI untuk mendistribusikan gambar kontainer dan jenis data lainnya, yang disebut artefak.

Spesifikasi ini, seperti semua spesifikasi OCI lainnya, adalah cloud-agnostic, yang menjadikannya alat yang fantastis untuk digunakan.

Catatan Kontainer

Catatan kontainer (CR), atau registri, adalah sesuatu yang harus digunakan oleh setiap orang yang pernah terlibat dengan kontainer. CR adalah tempat kami menyimpan gambar container, sehingga kami dapat mengambilnya dari mana saja dan kapan saja kami mau.

Intinya, gambar pada dasarnya adalah sekumpulan file yang mengikuti struktur kurang lebih seperti ini:

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

File index.json adalah daftar semua manifes yang tersedia, yaitu daftar semua gambar yang tersedia di suatu lokasi. Dalam kasus kami, ini adalah daftar semua bagan kemudi.

Setiap file di dalam blobs/sha256 adalah JSON yang mengidentifikasi artefak, baik itu gambar atau bagan. JSON ini sesuai dengan spesifikasi OCI untuk file SHA.

Singkatnya, mereka adalah daftar pengaturan yang menjelaskan karakteristik gumpalan, pengaturannya, properti, lapisan sistem file, dan juga perintah awal.

Dalam kasus Bagan Helm, kami memiliki file berikut:

{
  "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
    }
  ]
}

Perhatikan bahwa kita memiliki perbedaan mediaType , sedangkan gambar Docker umum memiliki jenis application/vnd.oci.image.config.v1+json .

Di sini, kami memiliki jenis  application/vnd.cncf.helm.config , hal yang sama berlaku untuk lapisan, setiap lapisan gambar OCI bertipe application/vnd.oci.image.layer.v1.tar+gzip , sedangkan disini kita hanya memiliki format .tar.gz .

Grafik hosting di Azure Container Registry

Hosting grafik Helm di Azure CR sangat mirip dengan menyimpannya secara lokal. Anda harus memiliki akses ke Azure melalui Azure CLI. Saya akan menganggap Anda sudah memiliki Azure CLI, jadi mari buat ACR kami.

Pertama kita harus membuat grup sumber daya kita dan kemudian ACR dengan perintah:

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

Tipnya adalah untuk menyimpan nama repositori dalam sebuah variabel:

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

Sekarang kita akan masuk ke registri kita menggunakan kunci terkelola Azure, tetapi kita perlu mengaktifkan kontrol administratif dengan az acr update -n $ACR --admin-enabled true .

Selanjutnya, jalankan dua perintah berikut untuk mengambil kredensial login dan menyimpannya di 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)

Sekarang kita bisa login ke registry kita dengan Helm menggunakan helm registry login $ACR --username $ACRUSER --password $ACRPASS , dan dari sini kita sudah mengonfigurasi registri kita.

Mari buat artefak lain dengan helm chart save hrepo $ACR/hrepo:2.1.3 (sebagai contoh, saya akan menggunakan bagan dari  repositori dumpy bernama hrepo). Kemudian kita akan mendorongnya dengan helm chart push $ACR/hrepo:3.8.0 .

Setelah itu ada, kami akan dapat membuat daftar semua yang ada di repositori dengan perintah Azure CLI:

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

Perhatikan bahwa kita akan memiliki output yang persis seperti yang kita kirim:

{
  "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
}

Kami juga bisa mendapatkan detail lebih lanjut dengan perintah show-manifests dengan menambahkan --detail :

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

Ini akan memberi kita definisi yang tepat tentang artefak 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"
    ]
  }
]

Untuk menyimpannya, kita cukup:

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

Kesimpulan

Meskipun menggunakan Helm itu mudah, namun tidak ada cara "sederhana" untuk meng-host bagan Helm sebagai semacam catatan pribadi.

Meskipun Helm memiliki alat yang sangat baik seperti Chart Museum, alat tersebut masih belum sepenuhnya standar dan untuk pengembangan yang mudah didistribusikan, penting bagi kami untuk memiliki standar terbuka yang dapat diikuti oleh semua orang secara keseluruhan.

Helm baru-baru ini memindahkan dukungan Registri OCI dari fitur eksperimental ke fitur umum, yang merupakan indikasi kuat bahwa ekosistem container menjadi semakin baik.

Info penulis:Talha Khalid adalah pengembang web lepas dan penulis teknis.


Linux
  1. Cara meringankan beban pada registri kontainer Anda menggunakan Quay.io

  2. Cara menggunakan Podman di dalam wadah

  3. Cara Keluar dari Kontainer Docker

  1. Cara Menggunakan Variabel Lingkungan dengan Diagram Helm

  2. Bagaimana mengelola pendaftar penampung Linux

  3. Mutt:Bagaimana Cara Menyimpan Kata Sandi dengan Aman?

  1. Cara Membuat Bagan Helm

  2. Cara Menampung Aplikasi Legacy

  3. Cara Menarik dan Mendorong Bagan Helm