Skip to main content
CID222 Docs

0.4.0 sürümüne yükseltme

Bir cihazı veya Docker Compose kurulumunu 0.3.x'ten 0.4.0'a taşıyın, ilk açılışın şemaya ne yaptığını bilin ve geri almanın neyi geri getirip getirmediğini anlayın.

  • Sürüm: 0.4
  • Rol: admin_user
  • Tür: görev

Her 0.3.x kurulumu 0.4.0'a tek adımda geçer — sürüm, yükseltmenin başlayabileceği en düşük bir sürüm bildirmez. Farklı olan şey, güncellemeyi kimin uyguladığıdır: bir cihaz panelden, bir Docker Compose kurulumu ise kendi ana makinesindeki bir kabuktan güncellenir.

Neye ihtiyacım var?

Lisans
Herhangi biri
Rol
admin_user

Ön koşullar

  • İki kurulumdan hangisine sahip olduğunuzu biliyorsunuz: bir cihaz, Ayarlar → System Updates ekranını ve ana makinesinde ayrıcalıklı bir güncelleyiciyi taşır; bir Compose kurulumu ise işletmecinin baktığı bir git çalışma kopyasıdır.
  • Cihazın kendi diskinde bulunmayan güncel bir yedek. Bkz. Yedekleme ve geri yükleme.
  • Bir bakım penceresi. Geçişler yeni konteynerler başlamadan önce çalışır; bu yüzden hâlâ hizmet veren eski sürüm bunların kilitlerine takılır ve yazma işlemleri bloke olabilir.
  • Çevrimiçi yoldaki bir cihaz için: sürüm kanalına HTTPS üzerinden erişebiliyor olması.
  • Hava boşluklu bir cihaz için: 0.4.0'ın imzalı .cidupd paketi, tarayıcısı cihaza erişebilen bir makinede.
  • Bir Compose kurulumu için: Docker çalıştırma izni olan kabuk erişimi ve temiz bir git çalışma ağacı — update.sh kirli bir ağaçta çalışmayı reddeder.

İlk 0.4 açılışının veritabanınıza yaptığı

DB_SYNCHRONIZE artık varsayılan olarak false değerindedir ve konteyner, bu değer true olmadığı sürece açılışta geçiş zincirini uygular. Bir cihazda bu sıradan bir durumdur — şemanın sahibi her zaman sürüm zinciri olmuştur. Bu değişkeni hiç ayarlamamış bir Compose makinesinde ise bu, ilk 0.4 açılışının şemayı her yeniden başlatmada kendiliğinden yeniden biçimlendirmeye son vermesi, bunun yerine temeli damgalayıp tüm zinciri çalıştırması demektir — böyle makinelerin çoğu için bu, yaptıkları ilk geçiş çalıştırmasıdır.

Oradaki bir arıza bilerek ölümcüldür: konteyner, geçiremediği bir şemaya karşı hizmet vermek yerine açılmayı reddeder.

Warning

Otomatik eşitleme, geçişlerin oluşturduğu her dizini ve tetikleyiciyi düşürür; çünkü bunları hiçbir varlık bildirmez. Eski davranışı DB_SYNCHRONIZE=true ile sürdürmek mümkündür ve bundan sonrası için desteklenmez.

Yükseltme

Cihazın üzerinde olmayan bir yedek alın

Sanal makineyi kapalıyken anlık görüntüleyin ya da yedekleme ve geri yükleme sayfasında anlatılan dosya düzeyindeki kopyayı alın.

Güncelleyici, bir sürümü uygulamadan hemen önce kendi veritabanı yedeklerini alır — sıkıştırılmış mantıksal bir döküm ve veri dizininin fiziksel bir anlık görüntüsü; ikisi de /var/lib/cid/backups altında ve son 14 döküm saklanarak. Bunlar cihazın kendi diskinde durur ve yalnızca veritabanını kapsar; dolayısıyla bu adımın istediği yedek değil, bir güncelleme emniyet ağıdır.

Sürümü uygulayın

Çevrimiçi yoldan ya da imzalı paketten cihazı güncelleme sayfasını izleyin.

Sayfa, güncelleyicinin ilerlemesini akıtır ve veritabanınızın boyutu ile gerçekten bekleyen geçiş sayısından türetilmiş bir süre tahmini gösterir.

Ana makine onarımının bitmesini bekleyin

Host repair (ana makine onarımı) kutucuğu geçişlerini uygulanmış olarak bildirene kadar Ayarlar → System Updates (sistem güncellemeleri) ekranında kalın.

0.4.0 ana makine tarafında onarımı getirir: imzalı bir sürüm artık güncelleyicinin yerine geçebilir, systemd birimleri kurabilir ve daha eski bir imajdan kurulmuş bir makinede dağıtım kipini düzeltebilir. 0.3.x'ten gelen bir makinede çalıştırılacak onarımlar vardır ve bunların bazıları uygulanmadan önce güncelleyicinin boşa çıkmasını bekler.

Geri alma neyi geri getirir, neyi getirmez

Geri alma iki kurulumda farklı davranır ve ikisi de bir şema geçişini geri almaz.

CihazDocker Compose
Neyle tetiklenirSiz, Ayarlar → System Updates (sistem güncellemeleri) ekranından; ya da yeni sürüm sağlık denetimini geçemediğinde kendiliğindenSağlık beklemesi zaman aşımına uğradığında update.sh tarafından kendiliğinden
Veritabanını geri yüklerEvet, sürüm uygulanmadan önce alınan anlık görüntüdenEvet, çalıştırmanın başında alınan pg_dump dökümünden
Önceki imajları geri yüklerEvetHayır — günlükleri kalsın diye yeni konteynerler çalışır bırakılır
Güncellemeden sonra yazılan veriKaybolurKaybolur

Danger

Geri alma, veritabanını güncelleme öncesindeki hâline döndürür. O tarihten sonra kaydedilen oturumlar, tespitler, olay günlüğü kayıtları ve yapılandırma değişiklikleri gider. Geri almayı bozuk bir güncellemeden kurtulmak için yapın; bir yapılandırma hatasını düzeltmek için asla.

Bir Compose kurulumunda kendiliğinden çalışan yol yalnızca veritabanını geri alır; bu yüzden başarısız bir güncelleme, 0.3.x veritabanına karşı çalışan 0.4.0 imajları bırakır. update.sh komutunun verdiği 5 çıkış kodunu, elle bitirilmesi gereken bir olay olarak değerlendirin: yazdırdığı günlükleri okuyun ve ya ileriye doğru düzeltin ya da 1. adımda aldığınız yedekten makinenin tamamını geri yükleyin.

Doğrulama

  1. Ayarlar → System Updates (sistem güncellemeleri) ekranı Installed version (kurulu sürüm) altında 0.4.0'ı gösterir ve Last update (son güncelleme) çalıştırmayı başarılı olarak bildirir. Bir Compose makinesinde curl localhost:3000/health 200 yanıtı verir.
  2. Bekleyen geçiş yoktur. Bir Compose makinesinde make migration-status hiçbirini listelemez; cihazda ise Host repair (ana makine onarımı) kutucuğu bekleyen ya da başarısız hiçbir geçiş göstermez.
  3. docker compose ps her konteyneri sağlıklı gösterir ve bunların arasında bir hallucination-guard konteyneri vardır.
  4. Ayarlar → License (lisans) hâlâ katmanınızı ve süre dolumunuzu gösterir. Bir yükseltme lisanslı paketi asla değiştirmez.
  5. İçinde bir test kişisel verisi bulunan tek bir sohbet isteği gönderin. Filtrelerinize göre maskelenir ya da reddedilir ve tespit Tüm Tespitler ekranında görünür.

Başarısız olursa

Ağ geçidi açılmıyor ve günlük bir geçişin adını veriyor:

Çalışma kitabıdata

Bekleyen geçişler var ve yeni sütunları okuyan sayfalar hata veriyor

Şunları görebilirsiniz: compiled migration(s) have never been applied to this database (derlenmiş geçişler bu veritabanına hiç uygulanmamış) · ürünün geri kalanı çalışırken tek bir sayfa 500 döndürüyor · column does not exist (sütun yok) · relation does not exist (tablo ya da görünüm yok)

Başlamadan önce

Denetimler

  1. 1

    Veritabanına kaydedilmemiş derlenmiş geçişlerin listesini okuyun

    tanılama · datastores.postgres.migrationsPending

  2. 2

    Otomatik eşitlemenin kapalı olduğunu doğrulayın; açıkken uygulanmamış bir zinciri doğru görünen bir şemanın arkasına gizler

    tanılama · posture.dbSynchronize = false

  3. 3

    Ağ geçidinin yeniden başlamadığını doğrulayın; başarısız olan bir açılış geçişinin olağan sonucu budur

    tanılama · containers[nestjs-core].restarts = 3

Şema dizinlerini kaybetti ya da makine otomatik eşitlemeyle çalışıyordu:

Çalışma kitabıdata

Veritabanı şeması her açılışta otomatik eşitleniyor

Şunları görebilirsiniz: DB_SYNCHRONIZE=true (otomatik şema eşitlemesi açık) · yeniden başlatmadan sonra indeksler kayboluyor · her yeniden açılıştan sonra arama yine yavaşlıyor · şema, hiçbir geçiş olmadan değişiyor

Başlamadan önce

Denetimler

  1. 1

    Etkin otomatik eşitleme ayarını okuyun

    tanılama · posture.dbSynchronize = false

  2. 2

    Geçiş zincirinin tümüyle uygulandığını doğrulayın; otomatik eşitleme, uygulanmamış bir zinciri gizler

    tanılama · datastores.postgres.migrationsPending

Cihazın güncelleme sayfası bir arıza ya da 0.0.0 sürümü bildiriyor:

Çalışma kitabıupdates

Sistem Güncellemeleri sayfası 0.0.0 gösteriyor ya da güncelleme düğmeleri 500 döndürüyor

Şunları görebilirsiniz: **Sistem Güncellemeleri** sayfası sürümü 0.0.0 olarak gösteriyor · current version 0.0.0 (kurulu sürüm 0.0.0 görünüyor) · güncelleme denetimi 500 döndürüyor · install update → 500 (güncellemeyi kurma eylemi 500 döndürüyor)

Başlamadan önce

Denetimler

  1. 1

    Cihazın bildirdiği ürün sürümünü okuyun

    tanılama · appliance.version = "0.0.0"

  2. 2

    Bir güncelleme kanalının yapılandırıldığını doğrulayın

    tanılama · appliance.channel

  3. 3

    Sürüm kanalının son denemede yanıt verdiğini doğrulayın

    tanılama · appliance.update.channelReachable = true

  4. 4

    Bir güncelleme ya da ana makine onarımı isteğinin ana makine güncelleyicisini beklerken takılı kalıp kalmadığını denetleyin

    tanılama · appliance.update.pendingIntent

  5. 5

    Sayfanın sürümün yanında gösterdiği ana makine onarım durumunu okuyun

    GET /admin/system-update/host-repair

Cihaz sürüm kanalına erişemiyor:

Çalışma kitabıupdates

Güncelleme kanalına cihazdan erişilemiyor

Şunları görebilirsiniz: The update channel host is not reachable from inside the gateway (güncelleme kanalı sunucusuna ağ geçidinin içinden erişilemiyor) · **Check for updates** (güncellemeleri denetle) hiçbir şey yapmıyor · güncelleme denetimi 500 döndürüyor · cihaz hiçbir zaman yeni bir sürüm bulmuyor

Başlamadan önce

Denetimler

  1. 1

    Herhangi bir güncelleme kanalının yapılandırılmış olduğunu doğrulayın

    tanılama · appliance.channel

  2. 2

    Kanalın son denemede yanıt verip vermediğini okuyun

    tanılama · appliance.update.channelReachable = true

  3. 3

    Cihazın erişmesi gereken sunucular için ad çözümleme sonuçlarını okuyun

    tanılama · appliance.dns

  4. 4

    Vekil zorunlu olan bir ağda, giden bir vekilin yapılandırılmış olup olmadığını okuyun

    tanılama · appliance.proxy.configured = true

Sonraki adımlar

Son güncelleme

Bu sayfada