Pembaruan gambar pascamigrasi

Artefak container yang Anda buat dengan perintah migctl migration generate-artifacts tidak dimaksudkan hanya untuk men-deploy beban kerja yang dimigrasikan di cluster target. Layanan ini juga digunakan untuk operasi pemeliharaan "Hari ke-2", termasuk menerapkan update software OS aplikasi dan mode pengguna, patch keamanan, mengedit konfigurasi tersemat, menambahkan atau mengganti file, dan mengupdate software runtime Migrate to Containers.

Meninjau Dockerfile gambar yang dibuat

Operasi pemeliharaan tersebut memanfaatkan Dockerfile yang dihasilkan dan lapisan image sistem yang diambil. Jika digabungkan dengan lapisan runtime Migrate to Containers, file ini dapat di-build menjadi image container yang dapat dieksekusi.

Artefak container yang dihasilkan telah dibuat dengan mempertimbangkan integrasi fase build pipeline CI/CD, seperti yang dijelaskan dalam diagram berikut:

Diagram yang menunjukkan pipeline CI/CD.

Dockerfile disusun sebagai build multi-tahap untuk pemeliharaan dan manipulasi yang lebih mudah, sambil menjaga gambar agar tidak meng-inflate.

Berikut adalah contoh Dockerfile yang dihasilkan:

# Please refer to the documentation:
# https://cloud.google.com/migrate/anthos/docs/dockerfile-reference

FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.6.0 as migrate-for-anthos-runtime

# Image containing data captured from the source VM
FROM gcr.io/myproject/myworkload-non-runnable-base:v1.0.0 as source-content

# If you want to update parts of the image, add your commands here.
# For example:
# RUN apt-get update
# RUN apt-get install -y \
#               package1=version \
#               package2=version \
#               package3=version
# RUN yum update
# RUN wget http://github.com

COPY --from=migrate-for-anthos-runtime / /

# Migrate for GKE Enterprise image includes entrypoint
ENTRYPOINT [ "/.v2k.go" ]

Perintah FROM kedua merujuk ke lapisan image sistem yang diambil dari VM yang dimigrasikan. Lapisan ini tidak dapat dijalankan dengan sendirinya dan perlu digabungkan dengan lapisan runtime Migrate to Containers untuk mem-build image yang dapat dieksekusi.

Untuk mengetahui informasi selengkapnya tentang cara mem-build image container dengan Cloud Build, lihat Membangun image container.

Mengupdate lapisan komponen workload yang dimigrasikan

Untuk pembaruan atau modifikasi apa pun yang ingin Anda terapkan ke lapisan gambar beban kerja yang dimigrasikan, Anda harus menerapkannya setelah perintah FROM kedua.

Pada contoh berikut, kami memperbarui image container yang dimigrasikan dari VM SUSE Enterprise Linux (SLES) sebagai sumber, menggunakan Cloud Build dan gcloud CLI. Contoh berikut mengupdate paket distro SLES openssh.

Dockerfile yang diperbarui:

# Image containing data captured from the source VM
FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.6.0 as migrate-for-anthos-runtime

# Image containing data captured from the source VM
FROM gcr.io/myproject/myworkload-non-runnable-base:v1.0.0 as source-content

# If you want to update parts of the image, add your commands here.
# For example:
# RUN apt-get update
# RUN apt-get install -y \
#               package1=version \
#               package2=version \
#               package3=version
# RUN yum update
# RUN wget http://github.com

RUN zypper ref -s && zypper -n in openssh
COPY --from=migrate-for-anthos-runtime / /

# Migrate to Containers image includes entrypoint
ENTRYPOINT [ "/.v2k.go" ]

Membuat gambar yang diperbarui:

  1. Download Dockerfile yang dihasilkan dari bucket Cloud Storage ke direktori lokal di lingkungan Cloud Shell Anda.
  2. Edit Dockerfile untuk menambahkan perintah RUN yang ditandai seperti dalam contoh di atas.
  3. Build image yang telah diupdate dan kirim ke Container Registry dengan tag versi yang telah diupdate, sehingga Anda memiliki cukup waktu hingga proses selesai. Dalam contoh berikut, gambar berada di direktori saat ini:

    gcloud builds submit --timeout 4h --tag gcr.io/myproject/mySUSEworkload:v1.0.1 .
    
  4. Anda dapat menggunakan image yang baru di-build untuk mengupdate deployment yang ada - seperti melakukan upgrade berkelanjutan pada aplikasi yang di-deploy:

    kubectl set image deployment/myWorkload my-app=gcr.io/myproject/mySUSEworkload:v1.0.1 --record
    

Memperbarui versi lapisan Migrate to Containers

Saat versi baru software Migrate to Containers dirilis, Anda dapat mengupdate versi software tersebut di image workload yang di-deploy. Update tersebut dapat mencakup fungsi baru, peningkatan, atau perbaikan bug.

Untuk mengupdate lapisan software Migrate to Containers, edit Dockerfile dan ubah tag versi ke versi terbaru yang ingin Anda terapkan.

Dengan menggunakan contoh sebelumnya, Anda dapat mengupdate versi dari v1.6.0 ke versi hipotetis v1.15.0 dengan mengedit perintah FROM menjadi berikut:

FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.15.0 as migrate-for-anthos-runtime

Setelah mengupdate Dockerfile, Anda harus mem-build versi image container workload baru dan menerapkannya ke deployment yang ada agar dapat diupdate.

Langkah selanjutnya