Daftar layanan kustom yang tidak diizinkan

Secara default, Migrate to Containers menonaktifkan layanan yang tidak diperlukan di VM saat Anda memigrasikannya ke penampung. Layanan ini terkadang dapat menyebabkan masalah pada penampung yang dimigrasikan, atau tidak diperlukan dalam konteks penampung.

Anda juga dapat menentukan daftar layanan kustom Anda sendiri untuk dinonaktifkan di penampung yang dimigrasikan menggunakan daftar yang tidak diizinkan kustom. Dengan daftar blokir, Anda menentukan satu atau beberapa layanan yang akan dinonaktifkan di penampung yang dimigrasikan.

Menentukan daftar blokir

Tentukan daftar blokir yang disesuaikan dalam file .yaml, dalam bentuk:

service_list:
  - name: <var>group-name-1</var>
    services:
      - <var>service-name</var>
  - name: <var>group-name-2</var>
    services:
      - <var>service-name</var>
      - <var>ervice-name</var>

Dengan keterangan:

  • Grup adalah kumpulan layanan yang logis sehingga Anda dapat mengumpulkan layanan serupa dalam satu grup. Tentukan nilai string untuk nama grup.
  • Nama layanan menentukan layanan yang akan dinonaktifkan dalam penampung yang dimigrasikan.

Misalnya, tentukan file my-blocklist.yaml sebagai:

service_list:
  - name: lvm-related
    services:
      - lvm2-lvmetad
  - name: hardware-related
    services:
      - microcode
      - microcode.ctl

Menerapkan daftar yang tidak diizinkan kustom

Terapkan daftar blokir kustom Anda ke penampung dengan:

  • Membuat configmap Kubernetes yang berisi daftar yang tidak diizinkan dan menambahkannya ke spesifikasi deployment penampung.

    Metode ini memungkinkan Anda menambahkan daftar blokir tanpa harus mem-build ulang penampung. Namun, Anda harus membuat ulang configmap di setiap cluster yang digunakan untuk menghosting penampung.

  • Edit Dockerfile untuk penampung dan build ulang image penampung.

    Metode ini mengharuskan Anda mem-build ulang image penampung untuk menambahkan daftar blokir. Karena daftar blokir kini disertakan dalam penampung, Anda tidak perlu melakukan konfigurasi tambahan apa pun pada cluster sebelum deployment.

Menggunakan configmap

Untuk membuat daftar blokir menggunakan configmap:

  1. Migrasikan VM sumber ke container.

  2. Buat file .yaml daftar yang tidak diizinkan seperti yang ditunjukkan di atas yang mencantumkan layanan yang ingin Anda nonaktifkan. Dalam contoh ini, beri nama file my-blocklist.yaml.

  3. Buat configmap dari file .yaml daftar blokir:

    kubectl create configmap configmap-name --from-file=path-to-yaml

    Dalam contoh ini, configmap disebut blocklistcm:

    kubectl create configmap blocklistcm --from-file=./my-blocklist.yaml
  4. Lihat configmap:

    kubectl describe configmaps
  5. Edit deployment_spec.yaml yang dibuat saat Anda memigrasikan penampung:

    vi deployment_spec.yaml
  6. Dalam spesifikasi deployment, tambahkan hal berikut:

    1. Tambahkan volume baru untuk configmap di bagian volumes:

      volumes:
      - configMap: 
           name: blocklistcm # Name of the config map you created above. 
         name: blocklistvol # Name of the configmap volume.
      
    2. Tambahkan pemasangan volume untuk configmap:

      spec:
        containers: 
          volumeMounts: 
          - mountPath: /etc/bl # Mount path for the configmap volume. 
            name: blocklistvol # Name of the configmap volume. 
      
    3. Tambahkan variabel lingkungan baru bernama HC_CUSTOM_SERVICE_BLOCKLIST yang menentukan jalur ke file .yaml daftar blokir. Nama variabel lingkungan harus berupa HC_CUSTOM_SERVICE_BLOCKLIST:

      containers:
       - image: container-image-location
         env:
         - name: HC_CUSTOM_SERVICE_BLOCKLIST
           value: "/etc/bl/my-blocklist.yaml"
      

      Jalur yang ditentukan oleh nilai adalah penyambungan mountPath dari configmap dan nama file .yaml daftar blokir, my-blocklist.yaml.

    4. Simpan file.

  7. Deploy container:

    kubectl apply -f deployment_spec.yaml
  8. Setelah penampung di-deploy, Anda dapat memeriksa penampung untuk memastikan bahwa layanan tidak berjalan. Contoh:

    # Get pod name.
    $ kubectl get pod
    # Connect to pod.
    $ kubectl exec -it POD_NAME -- /bin/bash
    # View running services. This step is OS dependent. For example:
    $ service --status-all```
    

Mengedit Dockerfile

Bagian ini menjelaskan cara membuat daftar blokir kustom dengan mengedit Dockerfile yang dibuat oleh migrasi.

  1. Memigrasikan VM sumber ke container.

  2. Buka Dockerfile di editor.

  3. Tambahkan perintah COPY berikut untuk menambahkan file .yaml daftar blokir ke sistem file penampung:

    COPY src dest 

    Contoh:

    COPY my-blocklist.yaml /etc/mybl/my-blocklist.yaml

    Jalur tujuan dapat berupa jalur apa pun dalam penampung.

  4. Tambahkan variabel lingkungan baru bernama HC_CUSTOM_SERVICE_BLOCKLIST yang menentukan jalur ke file .yaml daftar blokir berdasarkan tujuan file yang ditentukan oleh perintah COPY. Nama variabel lingkungan harus berupa HC_CUSTOM_SERVICE_BLOCKLIST:

    ENV HC_CUSTOM_SERVICE_BLOCKLIST /file-path

    Contoh:

    ENV HC_CUSTOM_SERVICE_BLOCKLIST /etc/mybl/my-blocklist.yaml
  5. Perbarui image container.

    Cara Anda mengupdate image container bergantung pada lingkungan build Anda. Anda dapat menggunakan:

    1. gcloud untuk mem-build image dan menguploadnya ke Container Registry seperti yang dijelaskan di Panduan Mulai Cepat: Build.

    2. docker build seperti yang dijelaskan di Mem-build dan menjalankan image .

  6. Setelah mem-build image baru, buka file deployment_spec.yaml di editor untuk memperbarui lokasi image:

    spec:
      containers:
      - image: new-image-location

    Misalnya, new-image-location dapat berupa gcr.io/my-project/my-new-image:v1.0 jika Anda menggunakan gcloud untuk mem-build image dan menguploadnya ke Container Registry.

  7. Deploy container:

    kubectl apply -f deployment_spec.yaml
  8. Setelah penampung di-deploy, Anda dapat memeriksa penampung untuk memastikan bahwa layanan tidak berjalan. Contoh:

    # Get pod name.
    $ kubectl get pod
    # Connect to pod.
    $ kubectl exec -it POD_NAME -- /bin/bash
    # View running services. This step is OS dependent. For example:
    $ service --status-all