Kamis, 24 Oktober 2024

COZYSTACK-install otomatis

 

Perkembangan

https://cozystack.io/docs/development/
https://github.com/aenix-io/cozystack/blob/main/manifests/cozystack-installer.yaml

Informasi Internal dan Pengembangan Cozystack

Bagaimana cara kerjanya

Singkatnya, cozystack adalah wadah benih yang mendukung seluruh platform. Terdiri dari:

  • skrip installer.sh : Berisi logika bisnis minimal, melakukan migrasi, menginstal FluxCD, dan mempersiapkan Kubernetes untuk menjalankan bagan platform.

  • bagan platform : Bagan Helm yang melakukan bootstrap pada konfigurasi yang tersisa. Bagan ini membaca status dari kluster Kubernetes menggunakan fungsi pencarian Helm dan membuat templat untuk semua manifes yang diperlukan. installer.shSkrip tersebut terus menjalankan bagan platform untuk memastikan perubahan dalam kluster diselaraskan dengan benar.

  • Server HTTP : Melayani aset (grafik Helm dan dasbor Grafana) yang dibangun dari repositori Cozystack.

  • FluxCD : Mesin utama yang menerapkan semua bagan Helm yang diperlukan dari server HTTP ke Kubernetes sesuai dengan konfigurasi yang diterapkan oleh bagan platform.

Struktur Repositori

Struktur utama repositori cozystack adalah:

.
├── packages        # Main directory for cozystack packages
│   ├── core            # Core platform logic charts
│   ├── system          # System charts used to configure the system
│   ├── apps            # User-facing charts shown in the dashboard catalog
│   └── extra           # Tenant-specific applications that can be deployed as tenant options
├── dashboards      # Grafana dashboards
├── hack            # Helper scripts for local development
└── scripts         # Scripts mainly used by the cozystack container
    └── migrations  # Migrations between versions

Pengembangan dapat dilakukan secara lokal dengan memodifikasi dan memperbarui file di repositori ini.

Paket

inti

Paket inti digunakan untuk mem-bootstrap Cozystack dan konfigurasinya sendiri.

Terdiri dari dua paket:

pemasang

Menyediakan semua yang dibutuhkan untuk bootstrap awal cozystack: skrip installer.sh dan server HTTP dengan aset yang dibangun dari repositori ini.

platform

Membaca konfigurasi dari kluster, membuat templat manifes, dan menerapkannya kembali ke kluster.

Ia terutama membaca cozystackConfigMap dari cozy-systemnamespace, dan templat memanifestasikan sesuai dengan opsi yang ditentukan. ConfigMap ini menentukan nama dan opsi bundel , merinci komponen sistem mana yang harus diinstal di kluster.

sistem

Paket sistem mengonfigurasi sistem untuk mengelola dan menyebarkan aplikasi pengguna. Komponen sistem yang diperlukan ditentukan dalam konfigurasi bundel. Ini juga dapat mencakup komponen tanpa operator, yang instalasinya dapat dipicu sebagai bagian dari aplikasi pengguna.

aplikasi

Aplikasi yang menghadap pengguna ini muncul di dasbor dan menyertakan manifes yang akan diterapkan ke kluster.

Mereka tidak boleh berisi logika bisnis, karena dikelola oleh operator yang diinstal dari sistem.

tambahan

Mirip dengan appstetapi tidak ditampilkan dalam katalog aplikasi. Mereka hanya dapat diinstal sebagai bagian dari penyewa. Mereka diizinkan untuk digunakan oleh penyewa bawah yang diinstal di namespace penyewa saat ini.

Baca selengkapnya tentang Sistem Penyewa di halaman Konsep Inti.

Dimungkinkan untuk menggunakan hanya satu jenis aplikasi dalam satu namespace penyewa.

Struktur Paket

Setiap paket adalah bagan Helm yang berisi semua gambar dan manifes yang diperlukan untuk platform. Kami mengikuti logika bagan umum untuk menyimpan bagan hulu di ./chartsdirektori dan mengganti values.yaml di akar aplikasi. Struktur ini menyederhanakan pembaruan bagan hulu.

.
├── Chart.yaml                           # Helm chart definition and parameter description
├── Makefile                             # Common targets for simplifying local development
├── charts                               # Directory for upstream charts
├── images                               # Directory for Docker images
├── patches                              # Optional directory for upstream chart patches
├── templates                            # Additional manifests for the upstream Helm chart
├── templates/dashboard-resourcemap.yaml # Role used to display k8s resources in dashboard
├── values.yaml                          # Override values for the upstream Helm chart
└── values.schema.json                   # JSON schema used for input values validation and to render UI elements in dashboard

Anda dapat menggunakan readme-generator bitnami untuk menghasilkan file README.mddan values.schema.json.

Instal saja sebagai readme-generatorbiner di sistem Anda dan jalankan pembangkitan menggunakan make generateperintah.

Perkembangan

Konfigurasi Buildx

Untuk membangun gambar, Anda perlu memasang dan mengonfigurasi docker buildxplugin.

Perintah berikut memungkinkan Anda membuat gambar langsung di kluster Kubernetes:

docker buildx create \
  --bootstrap \
  --name=buildkit \
  --driver=kubernetes \
  --driver-opt=namespace=tenant-kvaps,replicas=2 \
  --platform=linux/amd64 \
  --platform=linux/arm64 \
  --use

Atau, abaikan opsi –driver* untuk menyiapkan lingkungan pembangunan di lingkungan Docker lokal.

Manajemen paket

Setiap aplikasi menyertakan Makefile untuk menyederhanakan proses pengembangan. Kami mengikuti logika ini untuk setiap paket:

make update  # Update Helm chart and versions from the upstream source
make image   # Build Docker images used in the package
make show    # Show output of rendered templates
make diff    # Diff Helm release against objects in a Kubernetes cluster
make apply   # Apply Helm release to a Kubernetes cluster

Misalnya, untuk memperbarui silia:

cd packages/system/cilium         # Go to application directory
make update                       # Download new version from upstream
make image                        # Build cilium image
git diff .                        # Show diff with changed manifests
make diff                         # Show diff with applied cluster manifests
make apply                        # Apply changed manifests to the cluster 
kubectl get pod -n cozy-cilium    # Check if everything works as expected
git commit -m "Update cilium"     # Commit changes to the branch

Untuk membangun kontainer cozystack dengan bagan yang diperbarui:

cd packages/core/installer        # Go to the cozystack package
make image-cozystack              # Build cozystack image
make apply                        # Apply to the cluster
kubectl get pod -n cozy-system    # Check if everything works as expected
kubectl get hr -A                 # Check HelmRelease objects

Pengujian

Platform ini menyertakan e2e.shskrip yang melakukan tugas-tugas berikut:

  • Menjalankan tiga mesin virtual QEMU
  • Mengonfigurasi Talos Linux
  • Menginstal Cozystack
  • Menunggu semua HelmReleases diinstal
  • Melakukan pemeriksaan tambahan untuk memastikan komponen berfungsi dan berjalan

Anda dapat menjalankan e2e.sh secara lokal atau langsung dalam kontainer Kubernetes.

Untuk menjalankan pengujian di kluster Kubernetes, navigasikan ke packages/core/testingdirektori dan jalankan perintah berikut:

make apply    # Create testing sandbox in Kubernetes cluster
make test     # Run the end-to-end tests in existing sandbox
make delete   # Remove testing sandbox from Kubernetes cluster

Lingkungan Pengembangan Dinamis

Jika Anda lebih suka mengembangkan Cozystack di mesin virtual daripada memodifikasi kluster yang ada, Anda dapat memanfaatkan sandbox yang sama dari lingkungan pengujian. Makefile di dalamnya packages/core/testingmencakup opsi tambahan:

make exec     # Opens an interactive shell in the sandbox container.
make login    # Downloads the kubeconfig into a temporary directory and runs a shell with the sandbox environment; mirrord must be installed.
make proxy    # Enable a SOCKS5 proxy server; mirrord and gost must be installed.

Proksi Socks5 dapat dikonfigurasikan di browser untuk mengakses layanan kluster yang berjalan di sandbox. Firefox memiliki ekstensi praktis untuk mengaktifkan/menonaktifkan proksi:

Tidak ada komentar:

Posting Komentar