تا اینجا packageهای سیستمعامل، ایمیجهای کانتینر و کتابخانههای زبانها را آفلاین کردیم. برای اینکه بتوانیم یک سرویس کامل را روی Kubernetes بدون اینترنت مستقر کنیم، دو قطعهی دیگر هم لازم است: چارتهای Helm و ایمیجهای سیستم.
Mirror چارتهای Helm
یک مخزن Helm در سادهترین شکل، مجموعهای از فایلهای چارت (.tgz) بههمراه یک فایل index.yaml است که روی HTTP سرو میشود. در حالت آنلاین چارتهای موردنیاز را میگیریم و ایندکس را میسازیم:
helm pull podinfo/podinfo -d /srv/mirror/helm
helm repo index /srv/mirror/helm --url http://10.10.0.1/helm
podinfo و ساخت index.yaml روی سرور Mirror. همچنین یک ایمیج سیستمعامل بههمراه فایل checksum آماده میشود.در سمت کلاینت، مخزن محلی را اضافه میکنیم و مثل همیشه با Helm کار میکنیم؛ فقط اینبار همهچیز از Mirror محلی میآید. خود باینری helm را هم از Mirror میگیریم تا حتی ابزار هم به اینترنت نیاز نداشته باشد:
helm repo add localmirror http://10.10.0.1/helm
helm repo update
helm template localmirror/podinfo
یک استقرار کامل و آفلاین
هر چارت به چند ایمیج کانتینر اشاره میکند. کافی است آن ایمیجها را (مثل بخش سوم) در رجیستری محلی نگه دارید و مقدار image.repository چارت را به رجیستری محلی تغییر دهید. آنوقت چارت + ایمیجها + packageها با هم یک استقرار Kubernetes کاملاً آفلاین میسازند.
ایمیجهای سیستم
برای نصب سیستمعامل روی ماشینهای تازه هم به ایمیج نیاز داریم: فایلهای ISO یا cloud image. اینها فقط فایلاند، پس همان میزبان Mirror با nginx آنها را سرو میکند. نکتهی مهم، نگهداری فایل checksum در کنار هر ایمیج است تا کلاینت بتواند سالمبودن فایل را تأیید کند:
wget http://10.10.0.1/images/alpine-minirootfs-3.20.3-x86_64.tar.gz
sha256sum -c SHA256SUMS
# alpine-minirootfs-3.20.3-x86_64.tar.gz: OK
همانطور که در تصویر بالا دیدید، دانلود و تأیید ایمیج روی کلاینت بدون اینترنت بهدرستی انجام میشود. تأیید checksum مهم است؛ چون در محیط جداشده نمیتوانید بهسادگی دوباره دانلود کنید و باید مطمئن شوید فایل درست منتقل شده است.
جمعبندی و بخش بعد
در این بخش چارتهای Helm و ایمیجهای سیستم را هم به Mirror اضافه کردیم. حالا همهی قطعههای لازم برای یک زیرساخت کاملاً آفلاین را داریم: از وصلههای امنیتی سیستمعامل تا ایمیجها، کتابخانهها و چارتها.
در بخش پایانی، همهی اینها را با اتوماسیون به هم گره میزنیم: همگامسازی زمانبندیشده که وقتی اینترنت هست بهروز میشود و وقتی نیست، سرویسدهی محلی ادامه دارد.
بخشهای این مجموعه
- بخش ۱: مفاهیم، معماری و راهاندازی میزبان Mirror
- بخش ۲: Mirror packageهای سیستمعامل (apt و dnf)
- بخش ۳: رجیستری کانتینر محلی
- بخش ۴: packageهای زبانها؛ PyPI و npm
- بخش ۵: چارتهای Helm و ایمیجهای سیستم (همین بخش)
- بخش ۶: اتوماسیون همگامسازی و بهروزرسانی خودکار