Menyiapkan cluster Linux untuk deployment
Halaman ini menjelaskan cara menyiapkan cluster target untuk deployment.
Sebelum memulai
Dokumen ini mengasumsikan bahwa Anda telah menyelesaikan migrasi dan memiliki artefak yang dihasilkan.
Pastikan cluster target memiliki akses baca ke registry Docker
Sebagai bagian dari menjalankan migrasi, Migrate to Containers mengupload image Docker yang mewakili VM yang dimigrasikan ke registry Docker. Image Docker ini mewakili file dan direktori VM yang bermigrasi.
Untuk registry Docker, Anda dapat memilih untuk menggunakan:
Semua registry Docker yang mendukung autentikasi dasar
Untuk informasi selengkapnya, lihat Menentukan repositori data.
Men-deploy beban kerja ke project Google Cloud selain beban kerja yang digunakan untuk migrasi
Sering kali Anda memiliki beberapa project Google Cloud di lingkungan Anda. Jika Anda melakukan migrasi dalam satu project Google Cloud, tetapi ingin men-deploy beban kerja yang dimigrasikan ke cluster di project berbeda, Anda harus memastikan bahwa izin telah dikonfigurasi dengan benar.
Misalnya, Anda melakukan migrasi di project A. Dalam hal ini, beban kerja yang dimigrasikan akan disalin ke bucket Container Registry di project A. Contoh:
gcr.io/project-a/image_name:image_tag
Anda kemudian ingin men-deploy beban kerja ke cluster di project B. Jika Anda tidak mengonfigurasi izin dengan benar, pod workload akan gagal dijalankan karena cluster di project B tidak memiliki akses pull image ke project A. Anda kemudian akan melihat peristiwa di pod yang berisi pesan dalam formulir:
Failed to pull image "gcr.io/project-a/image_name:image_tag... pull access denied... repository does not exist or may acquire 'docker login'...
Semua project yang telah mengaktifkan Compute Engine API memiliki akun layanan default Compute Engine, yang memiliki alamat email berikut:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Dengan PROJECT_NUMBER adalah nomor project untuk project B.
Untuk mengatasi masalah ini, pastikan akun layanan default Compute Engine untuk project B memiliki izin yang diperlukan untuk mengakses bucket Container Registry. Misalnya, Anda dapat menggunakan perintah gsutil
berikut untuk mengaktifkan akses:
gsutil iam ch serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com:objectViewer gs://artifacts.project-a.appspot.com
Men-deploy beban kerja pada cluster pemrosesan
Anda dapat men-deploy beban kerja yang dimigrasikan di cluster yang sama seperti yang Anda gunakan untuk melakukan migrasi, yang disebut sebagai cluster pemrosesan Migrate to Containers. Dalam kebanyakan situasi, Anda tidak perlu melakukan konfigurasi tambahan pada cluster pemrosesan karena cluster sudah memerlukan akses baca atau tulis ke registry Docker untuk melakukan migrasi.
Men-deploy pada cluster target menggunakan Container Registry sebagai registry Docker
Untuk memastikan bahwa cluster target memiliki akses ke Container Registry, buat rahasia Kubernetes yang berisi kredensial yang diperlukan untuk mengakses Container Registry:
Buat akun layanan untuk men-deploy migrasi seperti yang dijelaskan dalam artikel Membuat akun layanan untuk mengakses Container Registry dan Cloud Storage.
Proses ini mengharuskan Anda mendownload file kunci JSON bernama
m4a-install.json
.Buat rahasia Kubernetes yang berisi kredensial yang diperlukan untuk mengakses Container Registry:
kubectl create secret docker-registry gcr-json-key \ --docker-server=gcr.io --docker-username=_json_key --docker-password="$(cat ~/m4a-install.json.json)" \ --docker-email=account@project.iam.gserviceaccount.com
dengan:
docker-registry
menentukan nama rahasia Kubernetes, gcr-json-key dalam contoh ini.docker-server=gcr.io
menentukan Container Registry sebagai server.docker-username=_json_key
menentukan bahwa nama pengguna ada dalam file kunci JSON.docker-password
menentukan untuk menggunakan sandi dari file kunci JSON.docker-email
menentukan alamat email akun layanan.
Tetapkan rahasia Kubernetes dengan:
Mengubah nilai
imagePullSecrets
default:kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "gcr-json-key"}]}'
Mengedit file
deployment_spec.yaml
untuk menambahkan nilaiimagePullSecrets
ke definisispec.template.spec
. Jika menggunakan WebSphere tradisional, file YAML deployment akan diberi namatwas_deployment_spec.yaml
,liberty_deployment_spec.yaml
, atauopenliberty_deployment_spec.yaml
, bergantung pada target Anda.spec: containers: - image: gcr.io/PROJECT_ID/mycontainer-instance:v1.0.0 name: mycontainer-instance ... volumes: - hostPath: path: /sys/fs/cgroup type: Directory name: cgroups imagePullSecrets: - name: gcr-json-key
Ganti PROJECT_ID dengan project ID Anda.
Deploy rahasia beban kerja, jika
secrets.yaml
ada. File secret akan ada untuk workload berbasis Tomcat dan workload berbasis tradisional WebSphere dengan Liberty. File Liberty diberi namaliberty-secrets.yaml
.kubectl apply -f secrets.yaml
Men-deploy pada cluster target menggunakan registry Docker dengan autentikasi dasar
Jika Anda menggunakan registry Docker untuk menyimpan image migrasi, registry tersebut harus mendukung autentikasi dasar menggunakan nama pengguna dan sandi. Karena ada banyak cara untuk mengonfigurasi koneksi hanya baca ke registry Docker, Anda harus menggunakan metode yang sesuai dengan platform cluster dan registry Docker Anda.
Langkah selanjutnya
- Pelajari cara mem-build dan men-deploy workload berbasis Linux.
- Pelajari cara menyesuaikan artefak migrasi untuk workload berbasis Windows.
- Pelajari cara membangun dan deploy workload berbasis Windows.
- Pelajari cara meninjau file yang dihasilkan untuk men-deploy penampung sistem Linux.