Mengamankan dengan GKE Sandbox


Dokumen ini menjelaskan cara mengonfigurasi penayangan Knative yang berjalan di Google Kubernetes Engine (GKE) untuk menggunakan GKE Sandbox guna meningkatkan isolasi workload dari kernel host.

Tujuan

  • Pelajari cara mengaktifkan GKE Sandbox di cluster penayangan Knative Anda.
  • Men-deploy layanan yang ditentukan untuk berjalan di node dengan sandbox.

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

Menambahkan node pool GKE Sandbox ke Cluster penayangan Knative yang ada

Ikuti langkah-langkah untuk menambahkan node pool yang diaktifkan untuk menggunakan GKE Sandbox ke cluster penayangan Knative yang ada. Di sinilah workload yang Anda pilih untuk menggunakan GKE Sandbox dijalankan.

Men-deploy workload di node pool GKE Sandbox

Setelah Anda memiliki cluster GKE dengan node pool yang mengaktifkan GKE Sandbox, update konfigurasi penayangan Knative Anda. Selain itu, perbarui setiap spesifikasi layanan untuk memanfaatkan node baru. Pembaruan ini hanya diperlukan satu kali.

Mengaktifkan tombol fitur class runtime

Di bagian ini, Anda akan mengaktifkan class runtime Kubernetes menggunakan flag ekstensi dan fitur Knative di ConfigMap config-features dalam namespace knative-serving. Untuk mengaktifkan class runtime, Anda menetapkan tanda ConfigMap kubernetes.podspec-runtimeclassname ke enabled. Untuk informasi selengkapnya, lihat Class runtime Kubernetes dan Mengonfigurasi flag dalam dokumentasi Fitur dan ekstensi Knative.

  1. Buka ConfigMap config-features untuk mengedit:

    kubectl edit configmap config-features -n knative-serving
    
  2. Tambahkan tanda fitur kubernetes.podspec-runtimeclassname: enabled ke kolom data.

  3. Sebagai alternatif untuk langkah-langkah sebelumnya, Anda dapat menjalankan perintah berikut untuk menerapkan patch pada flag ini ke dalam fitur Knative:

    kubectl patch configmap config-features \
        --type='json' \
        -p="[{'op': 'replace', 'path': '/data/kubernetes.podspec-runtimeclassname', 'value': 'enabled'}]" \
        -n knative-serving
    
  4. Untuk memverifikasi hasil edit, jalankan perintah berikut untuk melihat ConfigMap:

    kubectl get configmap config-features -n knative-serving -o yaml
    

    ConfigMap akan terlihat seperti berikut:

    apiVersion: v1
    kind: ConfigMap
    metadata:
        name: config-features
        namespace: knative-serving
        labels:
            serving.knative.dev/release: v0.22.0
    data:
        kubernetes.podspec-runtimeclassname: enabled
    

Men-deploy Layanan yang dikonfigurasi untuk berjalan di GKE Sandbox

Setelah mengaktifkan flag fitur class runtime, Anda dapat membuat Layanan yang menentukan runtimeClassName dalam spesifikasi. Tetapkan runtimeClassName ke gvisor untuk menunjukkan bahwa layanan harus berjalan di node pool GKE Sandbox.

  1. Deploy aplikasi Knative "Hello World" dengan menjalankan perintah berikut:

    cat <<EOF | kubectl apply -f -
    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
        name: helloworld-go
    spec:
        template:
            spec:
                runtimeClassName: gvisor
                containers:
                    -   image: gcr.io/knative-samples/helloworld-go
                        env:
                        -   name: TARGET
                            value: "gVisor User"
    EOF
    

    Jika fitur nama class runtime Kubernetes diaktifkan, perintah akan selesai tanpa error.

  2. Dapatkan pod untuk layanan Anda yang berjalan dan class runtime yang dikonfigurasi dengan menjalankan:

    kubectl get pods \
        -o=custom-columns='NAME:.metadata.name,RUNTIME CLASS:.spec.runtimeClassName,STATUS:.status.phase'
    

    Output akan terlihat seperti berikut:

    NAME                                              RUNTIME CLASS   STATUS
    helloworld-go-00001-deployment-55f58477f-fxm6m    gvisor          Running
    

Langkah berikutnya

Setelah memverifikasi bahwa Anda dapat men-deploy aplikasi tidak tepercaya di node pool GKE Sandbox yang baru dibuat, Anda siap menambahkan runtimeClassName: gvisor ke spec Kubernetes untuk layanan tidak tepercaya lainnya yang ingin dieksekusi di node pool GKE Sandbox.

Bacaan tambahan: