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:

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:

  1. 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.

  2. 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.
  3. 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 nilai imagePullSecrets ke definisi spec.template.spec. Jika menggunakan WebSphere tradisional, file YAML deployment akan diberi nama twas_deployment_spec.yaml, liberty_deployment_spec.yaml, atau openliberty_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.

  4. 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 nama liberty-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