Daftar layanan kustom yang tidak diizinkan

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

Anda juga dapat menentukan daftar layanan khusus yang akan dinonaktifkan dalam penampung yang dimigrasikan menggunakan daftar yang tidak diizinkan kustom. Dengan daftar yang tidak diizinkan, Anda menentukan satu atau beberapa layanan yang akan dinonaktifkan dalam penampung yang dimigrasikan.

Menentukan daftar yang tidak diizinkan

Tentukan daftar yang tidak diizinkan yang disesuaikan di 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 apa pun untuk nama grup.
  • Nama layanan menentukan layanan yang akan dinonaktifkan di 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 yang tidak diizinkan kustom ke penampung dengan:

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

    Metode ini memungkinkan Anda menambahkan daftar yang tidak diizinkan tanpa harus membuat ulang penampung. Namun, Anda harus membuat ulang configmap di setiap cluster yang digunakan untuk menghosting container.

  • Edit Dockerfile untuk container dan build ulang image container.

    Metode ini mengharuskan Anda membuat ulang image container untuk menambahkan daftar yang tidak diizinkan. Karena daftar yang tidak diizinkan kini disertakan dalam container, Anda tidak perlu melakukan konfigurasi tambahan pada cluster sebelum deployment.

Menggunakan configmap

Untuk membuat daftar yang tidak diizinkan menggunakan configmap:

  1. Migrasikan VM sumber ke penampung.

  2. Buat file .yaml 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 yang tidak diizinkan:

    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. Tampilkan 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 yang tidak diizinkan. Nama variabel lingkungan harus 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 value adalah penyambungan mountPath dari configmap dan nama file .yaml yang tidak diizinkan, my-blocklist.yaml.

    4. Simpan file.

  7. Deploy container:

    kubectl apply -f deployment_spec.yaml
  8. Setelah container di-deploy, kemudian Anda dapat memeriksa container tersebut untuk memastikan 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 yang tidak diizinkan kustom dengan mengedit Dockerfile yang dibuat oleh migrasi.

  1. Migrasikan VM sumber ke penampung.

  2. Buka Dockerfile di editor.

  3. Tambahkan perintah COPY berikut untuk menambahkan file .yaml yang tidak diizinkan ke sistem file container:

    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 yang tidak diizinkan berdasarkan tujuan file yang ditentukan oleh perintah COPY. Nama variabel lingkungan harus 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 memperbarui image container bergantung pada lingkungan build Anda. Anda dapat menggunakan:

    1. gcloud untuk mem-build image dan menguploadnya ke Container Registry seperti yang dijelaskan dalam Panduan Memulai: Build.

    2. docker build seperti yang dijelaskan pada Membuat dan menjalankan image Anda .

  6. Setelah Anda membuat gambar baru, buka file deployment_spec.yaml di editor untuk memperbarui lokasi gambar:

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

    Misalnya, new-image-location dapat menjadi 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 container di-deploy, kemudian Anda dapat memeriksa container tersebut untuk memastikan 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