Menginstal Pengontrol Kebijakan

Halaman ini menunjukkan cara menginstal Pengontrol Kebijakan. Pengontrol Kebijakan memeriksa, mengaudit, dan menerapkan kepatuhan cluster Anda terhadap kebijakan yang berkaitan dengan keamanan, peraturan, atau aturan bisnis.

Pengontrol Kebijakan tersedia jika Anda menggunakan edisi Google Kubernetes Engine (GKE) Enterprise. Untuk mempelajari lebih lanjut, baca artikel Harga edisi Google Kubernetes Engine (GKE) Enterprise. Anda dapat membuat laporan untuk mencoba Pengontrol Kebijakan sebelum menginstalnya tanpa biaya.

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:

  1. Instal dan inisialisasi Google Cloud CLI, yang menyediakan perintah gcloud, gsutil, kubectl, dan nomos yang digunakan dalam petunjuk ini. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update. Jika Anda menggunakan Cloud Shell, Google Cloud CLI sudah terinstal.
  2. Pastikan Open Policy Agent Gatekeeper open source tidak diinstal di cluster Anda. Jika ya, uninstal Gatekeeper sebelum menginstal Pengontrol Kebijakan.
  3. Aktifkan GKE Enterprise API.

    Mengaktifkan GKE Enterprise API

  4. Buat atau pastikan Anda memiliki akses ke cluster yang menjalankan Kubernetes versi 1.14.x atau yang lebih baru. Pengontrol Kebijakan mungkin terlihat berjalan pada versi Kubernetes yang lebih lama dari 1.14.x, tetapi produknya tidak berperilaku dengan benar.

  5. Berikan peran IAM yang diperlukan kepada pengguna yang mendaftarkan cluster.

  6. Jika Anda berencana menggunakan Google Cloud CLI untuk mengonfigurasi Pengontrol Kebijakan, daftarkan cluster Anda ke fleet sekarang. Jika Anda berencana menggunakan Konsol Google Cloud, daftarkan cluster saat menginstal Pengontrol Kebijakan.

  7. Jika Anda menggunakan cluster terpasang GKE, pastikan cluster AKS Anda tidak memiliki add-on Kebijakan Azure dan hindari memberi label pada namespace dengan kunci control-plane.

  8. Jika Anda menggunakan GKE di VMware atau Google Distributed Cloud Virtual untuk Bare Metal, pastikan Anda menginstal Pengontrol Kebijakan di cluster pengguna. Pengontrol Kebijakan tidak dapat diinstal di cluster admin.

Menginstal Pengontrol Kebijakan

Mulai versi 1.16.0, jika menggunakan Google Cloud CLI, Anda dapat menginstal dan mengelola Pengontrol Kebijakan secara langsung (direkomendasikan) atau melalui objek ConfigManagement.

Konsol

Untuk menginstal Pengontrol Kebijakan di Konsol Google Cloud, selesaikan langkah-langkah berikut:

  1. Di Konsol Google Cloud, buka halaman Kebijakan GKE Enterprise di bagian Features.

    Buka Kebijakan

  2. Pilih Install Policy Controller.

  3. Di panel Penginstalan Pengontrol Kebijakan, pilih salah satu opsi penginstalan berikut:

    • Untuk menginstal Pengontrol Kebijakan pada semua cluster dalam fleet:

      1. Tetap pilih Instal di perangkat Anda.

        Jika tidak memiliki fleet dalam project, Anda dapat membuat fleet pada langkah berikutnya.

      2. Jika belum memiliki armada, pilih nama untuk armada Anda.

      3. Pilih Aktifkan Pengontrol Kebijakan.

    • Untuk menginstal Pengontrol Kebijakan di cluster individual:

      1. Pilih Instal pada cluster individual.

      2. Pada tabel Cluster yang tersedia, pilih cluster tempat Anda ingin menginstal Pengontrol Kebijakan.

      3. Pilih Aktifkan Pengontrol Kebijakan.

Anda akan dialihkan ke tab Setelan Pengontrol Kebijakan. Saat Pengontrol Kebijakan diinstal dan dikonfigurasi di cluster Anda, kolom status akan menampilkan Terinstal . Proses ini dapat memerlukan waktu beberapa menit.

Pengontrol Kebijakan gcloud

Aktifkan Pengontrol Kebijakan dengan menjalankan perintah berikut:

gcloud alpha container fleet policycontroller enable \
    --memberships=MEMBERSHIP_NAME

Anda dapat menetapkan kolom tambahan untuk mengonfigurasi Pengontrol Kebijakan. Misalnya, Anda mungkin ingin memberi tahu Pengontrol Kebijakan untuk mengecualikan beberapa namespace dari penerapan. Untuk mengetahui daftar lengkap kolom yang dapat Anda konfigurasi, baca dokumentasi Google Cloud CLI Pengontrol Kebijakan atau jalankan gcloud alpha container fleet policycontroller enable --help.

gcloud ConfigManagement

  1. Siapkan konfigurasi dengan membuat manifes apply-spec.yaml baru atau dengan menggunakan manifes yang ada. Menggunakan manifes yang ada memungkinkan Anda mengonfigurasi cluster dengan setelan yang sama dengan yang digunakan oleh cluster lain.

    Buat manifes baru

    Untuk mengonfigurasi Pengontrol Kebijakan dengan setelan baru untuk cluster Anda, buat file bernama apply-spec.yaml dan salin file YAML berikut ke dalamnya:

    # apply-spec.yaml
    
    applySpecVersion: 1
    spec:
      policyController:
        # Set to true to install and enable Policy Controller
        enabled: true
        # Uncomment to prevent the template library from being installed
        # templateLibraryInstalled: false
        # Uncomment to enable support for referential constraints
        # referentialRulesEnabled: true
        # Uncomment to disable audit, adjust value to set audit interval
        # auditIntervalSeconds: 0
        # Uncomment to log all denies and dryrun failures
        # logDeniesEnabled: true
        # Uncomment to enable mutation
        # mutationEnabled: true
        # Uncomment to exempt namespaces
        # exemptableNamespaces: ["namespace-name"]
        # Uncomment to change the monitoring backends
        # monitoring:
        #     backends:
        #     - cloudmonitoring
        #     - prometheus
      # ...other fields...
    

    Anda harus menambahkan kolom spec.policyController dan menetapkan nilai enabled ke true. Anda dapat memilih untuk mengaktifkan fitur Pengontrol Kebijakan lainnya. Namun, dukungan untuk batasan referensial dinonaktifkan secara default. Sebelum mengaktifkannya, pastikan Anda memahami peringatan tentang konsistensi akhir.

    Menggunakan manifes yang ada

    Untuk mengonfigurasi cluster Anda dengan setelan yang sama dengan yang digunakan oleh cluster lain, ambil setelan dari cluster yang terdaftar:

    gcloud alpha container fleet config-management fetch-for-apply \
         --membership=MEMBERSHIP_NAME \
         --project=PROJECT_ID \
         > CONFIG_YAML_PATH
    

    Ganti kode berikut:

    • MEMBERSHIP_NAME: nama keanggotaan cluster terdaftar yang memiliki setelan Pengontrol Kebijakan yang ingin Anda gunakan
    • PROJECT_ID: project ID Anda
    • CONFIG_YAML_PATH: jalur ke file apply-spec.yaml
  2. Terapkan file apply-spec.yaml:

    gcloud beta container fleet config-management apply \
        --membership=MEMBERSHIP_NAME \
        --config=CONFIG_YAML \
        --project=PROJECT_ID
    

    Ganti kode berikut:

    • MEMBERSHIP_NAME: nama keanggotaan cluster terdaftar yang memiliki setelan Pengontrol Kebijakan yang ingin Anda gunakan.
    • CONFIG_YAML: tambahkan jalur ke file apply-spec.yaml Anda.
    • PROJECT_ID: tambahkan project ID Anda.

Pod dibuat dan Pengontrol Kebijakan mulai memeriksa dan menerapkan batasan.

Memverifikasi penginstalan Pengontrol Kebijakan

Setelah menginstal Pengontrol Kebijakan, Anda dapat memverifikasi bahwa penyelesaiannya berhasil.

Konsol

Selesaikan langkah berikut:

  1. Di Konsol Google Cloud, buka halaman Kebijakan GKE Enterprise di bagian Features.

    Buka Kebijakan

  2. Di tab Setelan, di tabel cluster, periksa kolom Status pengontrol kebijakan. Penginstalan yang berhasil akan menampilkan status Terinstal .

Pengontrol Kebijakan gcloud

Jalankan perintah berikut:

gcloud alpha container fleet policycontroller describe --memberships=MEMBERSHIP_NAME

Penginstalan yang berhasil akan menampilkan membershipStates: MEMBERSHIP_NAME: policycontroller: state: ACTIVE.

gcloud ConfigManagement

Jalankan perintah berikut:

gcloud beta container fleet config-management status \
    --project=PROJECT_ID

Ganti PROJECT_ID dengan ID project Anda.

Anda akan melihat output yang mirip dengan contoh berikut ini:

Name          Status  Last_Synced_Token  Sync_Branch  Last_Synced_Time      Policy_Controller
CLUSTER_NAME  SYNCED  a687c2c            1.0.0        2021-02-17T00:15:55Z  INSTALLED

Penginstalan yang berhasil akan menampilkan status INSTALLED di kolom Pengontrol Kebijakan.

Memverifikasi penginstalan library template batasan

Saat Anda menginstal Pengontrol Kebijakan, library template batasan akan diinstal secara default. Penginstalan ini dapat memerlukan waktu beberapa menit hingga selesai. Anda dapat memastikan bahwa library template berhasil diselesaikan.

Konsol

Selesaikan langkah berikut:

  1. Di Konsol Google Cloud, buka halaman Kebijakan GKE Enterprise di bagian Features.

    Buka Kebijakan

  2. Di tab Settings, pada tabel cluster, pilih nomor yang tercantum di kolom Bundles installed. Di panel Policy content status, penginstalan library template yang berhasil akan memiliki status installed .

gcloud

Jalankan perintah berikut:

kubectl get constrainttemplates

Anda akan melihat output yang mirip dengan contoh berikut ini:

NAME                                      AGE
k8sallowedrepos                           84s
k8scontainerlimits                        84s
k8spspallowprivilegeescalationcontainer   84s
...[OUTPUT TRUNCATED]...

Jika template batasan individual diinstal dengan benar, kolom status.created-nya adalah true.

Mengonfigurasi setelan default tingkat fleet

Jika telah mengaktifkan edisi Google Kubernetes Engine (GKE) Enterprise, Anda dapat mengaktifkan dan mengonfigurasi Pengontrol Kebijakan sebagai default level fleet untuk cluster Anda. Artinya, setiap GKE baru di cluster Google Cloud yang terdaftar saat pembuatan cluster akan mengaktifkan Pengontrol Kebijakan di cluster dengan setelan yang Anda tentukan. Anda dapat mengetahui konfigurasi default fleet lebih lanjut di Mengelola fitur level fleet.

Guna mengonfigurasi setelan default tingkat fleet untuk Pengontrol Kebijakan, selesaikan langkah-langkah berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman Feature Manager.

    Buka Feature Manager

  2. Di panel Policy, klik Configure.

  3. Tinjau setelan tingkat perangkat Anda. Semua klaster baru yang Anda daftarkan ke armada akan mewarisi pengaturan ini.

  4. Opsional: Untuk mengubah setelan default, klik Sesuaikan setelan perangkat. Pada dialog yang muncul, lakukan hal berikut:

    1. Di bagian Tambahkan/Edit paket kebijakan, sertakan atau kecualikan paket kebijakan dengan mengklik tombol yang relevan.
    2. Di bagian Edit Policy Controller configuration, lakukan tindakan berikut:
      1. Untuk mengaktifkan webhook mutasi, pilih kotak centang Aktifkan webhook mutasi. Fitur ini tidak kompatibel dengan cluster Autopilot.
      2. Di kotak Interval audit, masukkan periode dalam detik antara dua audit berturut-turut.
      3. Di kotak Exemptible namespaces, masukkan daftar namespace. Pengontrol Kebijakan mengabaikan objek dalam namespace ini.
      4. Untuk mengaktifkan batasan referensi, pilih kotak centang Enable Constraint Templates yang merujuk ke objek selain objek yang sedang dievaluasi.
      5. Dalam daftar Version, pilih versi Pengontrol Kebijakan yang ingin Anda gunakan.
    3. Klik Simpan perubahan.
  5. Klik Konfigurasikan.

  6. Pada dialog konfirmasi, klik Confirm. Jika Anda belum pernah mengaktifkan Pengontrol Kebijakan, mengklik Confirm akan mengaktifkan anthospolicycontroller.googleapis.com API.

  7. Opsional: Sinkronkan cluster yang ada ke setelan default:

    1. Pada daftar Clusters in the fleet, pilih cluster yang ingin Anda sinkronkan.
    2. Klik Sinkronkan ke setelan fleet, lalu klik Konfirmasi di dialog konfirmasi yang muncul. Operasi ini dapat memerlukan waktu beberapa menit hingga selesai.

gcloud

  1. Buat file bernama fleet-default.yaml yang berisi konfigurasi default untuk Pengontrol Kebijakan. Kolom installSpec diperlukan untuk mengaktifkan setelan default tingkat fleet. Contoh ini menunjukkan opsi yang dapat Anda konfigurasi:

    # cat fleet-default.yaml
    
     policyControllerHubConfig:
      installSpec: INSTALL_SPEC_ENABLED 
      # Uncomment to set default deployment-level configurations.
      # deploymentConfigs:
      #   admission:
      #     containerResources:
      #       limits:
      #        cpu: 1000m
      #         memory: 8Gi
      #       requests:
      #         cpu: 500m
      #         memory: 4Gi
      # Uncomment to set policy bundles that you want to install by default.
      # policyContent:
      #   bundles:
      #     cis-k8s-v1.5.1:
      #       exemptedNamespaces:
      #       - "namespace-name"
      # Uncomment to exempt namespaces from admission.
      # exemptableNamespaces:
      # - "namespace-name"
      # Uncomment to enable support for referential constraints
      # referentialRulesEnabled: true
      # Uncomment to disable audit, adjust value to set audit interval
      # auditIntervalSeconds: 0
      # Uncomment to log all denies and dryrun failures
      # logDeniesEnabled: true
      # Uncomment to enable mutation
      # mutationEnabled: true
      # Uncomment to adjust the value to set the constraint violation limit
      # constraintViolationLimit: 20
      # ... other fields ...
    
  2. Terapkan konfigurasi default ke fleet Anda:

    gcloud alpha container fleet policycontroller enable \
      --fleet-default-member-config=fleet-default.yaml
    
  3. Untuk memastikan bahwa konfigurasi telah diterapkan, jalankan perintah berikut:

    gcloud alpha container hub policycontroller describe
    
  4. Untuk menghapus konfigurasi default tingkat fleet, jalankan perintah berikut:

    gcloud alpha container fleet policycontroller enable \
      --no-fleet-default-member-config
    

Interaksi Pengontrol Kebijakan dengan Config Sync

Jika menggunakan Pengontrol Kebijakan dengan Config Sync, Anda harus mengetahui interaksi berikut dengan resource yang disimpan dalam sumber kebenaran yang disinkronkan oleh Config Sync:

  • Anda tidak dapat menyinkronkan template batasan yang juga merupakan bagian dari library template kecuali jika library template batasan dinonaktifkan.

  • Jika ingin menyinkronkan resource Config yang disimpan di namespace gatekeeper-system, Anda hanya boleh mendefinisikan resource Config di sumber tepercaya. gatekeeper-system Namespace tidak boleh ditentukan dengannya.

Mengelola library template batasan

Untuk informasi tentang cara meng-uninstal atau menginstal template batasan, batasan terkaitnya, atau library template batasan, lihat Membuat batasan.

Kecualikan namespace dari penerapan

Anda dapat mengonfigurasi Pengontrol Kebijakan untuk mengabaikan objek dalam namespace. Untuk mengetahui informasi selengkapnya, lihat Mengecualikan namespace dari Pengontrol Kebijakan.

Mengubah resource

Pengontrol Kebijakan juga bertindak sebagai webhook yang berubah. Untuk mengetahui informasi selengkapnya, lihat Mutasi resource.

Melihat versi Pengontrol Kebijakan

Untuk mengetahui versi Gatekeeper Policy Controller yang digunakan, lihat tag gambar dengan menjalankan perintah berikut:

kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
  -o="jsonpath={.spec.template.spec.containers[0].image}"

Tag Git (atau hash) yang digunakan untuk membuat Gatekeeper dan nomor versi ConfigManagement Operator disertakan dalam tag image sebagai berikut:

.../gatekeeper:VERSION_NUMBER-GIT_TAG.gBUILD_NUMBER

Misalnya, untuk gambar berikut:

gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
  • anthos1.3.2 adalah nomor versi.
  • 480baac adalah tag Git.
  • 0 adalah nomor build.

Anda juga dapat melihat daftar semua versi Pengontrol Kebijakan bersama manifes, penginstalan, dan nomos versi biner yang terkait di Matriks versi rilis.

Pengontrol Kebijakan Upgrade

Sebelum mengupgrade Pengontrol Kebijakan, periksa catatan rilis untuk mengetahui detail tentang apa yang berubah antar-versi.

Untuk mengupgrade Pengontrol Kebijakan, selesaikan langkah-langkah berikut:

Konsol

  1. Di Konsol Google Cloud, buka halaman Policy GKE Enterprise di bagian Features.

    Buka Kebijakan

  2. Pada tab Settings, di samping cluster yang versinya ingin Anda upgrade, pilih Edit configuration.
  3. Luaskan menu Edit Policy Controller configuration.
  4. Dari menu drop-down Version, pilih versi yang ingin Anda upgrade.
  5. Klik Simpan perubahan.

gcloud

Jalankan perintah berikut:

gcloud alpha container fleet policycontroller update \
  --version=VERSION \
  --membership=MEMBERSHIP_NAME

Ganti kode berikut:

  • VERSION: versi yang ingin Anda upgrade
  • MEMBERSHIP_NAME: nama keanggotaan yang dipilih saat mendaftarkan cluster Anda. Anda dapat menemukan nama keanggotaan dengan menjalankan gcloud container fleet memberships list.

Uninstal Pengontrol Kebijakan

Ikuti langkah-langkah berikut untuk meng-uninstal Pengontrol Kebijakan dari cluster Anda.

Konsol

Untuk menonaktifkan Pengontrol Kebijakan di cluster Anda, selesaikan tugas-tugas berikut:

  1. Di Konsol Google Cloud, buka halaman Kebijakan GKE Enterprise di bagian Features.

    Buka Kebijakan

  2. Di tab Settings, pada tabel cluster, pilih Edit di kolom Edit configuration.

  3. Di panel cluster, scroll ke bawah dan luaskan menu About Policy Controller.

  4. Pilih Uninstal Pengontrol Kebijakan.

  5. Konfirmasi uninstal dengan mengikuti petunjuk di dialog konfirmasi dan memilih Konfirmasi.

Ketika Pengontrol Kebijakan di-uninstal, kolom status akan menampilkan Not installed .

Pengontrol Kebijakan gcloud

Untuk meng-uninstal Pengontrol Kebijakan, jalankan perintah berikut:

gcloud alpha container fleet policycontroller disable \
  --memberships=MEMBERSHIP_NAME

Ganti MEMBERSHIP_NAME dengan nama keanggotaan cluster terdaftar untuk menonaktifkan Pengontrol Kebijakan. Anda dapat menentukan beberapa langganan yang dipisahkan dengan koma.

gcloud ConfigManagement

Untuk meng-uninstal Pengontrol Kebijakan:

  1. Edit konfigurasi Operator ConfigManagement di file apply-spec.yaml Anda dan tetapkan policyController.enabled ke false.

  2. Terapkan perubahan dalam file apply-spec.yaml:

     gcloud beta container fleet config-management apply \
         --membership=CLUSTER_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    Ganti kode berikut:

    • CLUSTER_NAME: menambahkan cluster terdaftar yang ingin Anda terapkan konfigurasinya.
    • CONFIG_YAML: tambahkan jalur ke file apply-spec.yaml Anda.
    • PROJECT_ID: tambahkan project ID Anda.

Menghapus Operator ConfigManagement

Jika menginstal Pengontrol Kebijakan melalui objek ConfigManagement, Anda juga harus menghapus Operator ConfigManagement dari cluster.

Untuk menghapus Operator ConfigManagement, jalankan perintah berikut:

  1. Hapus objek ConfigManagement dari cluster:

    kubectl delete configmanagement --all
    

    Setelah Anda menjalankan perintah ini, hal-hal berikut akan terjadi:

    • Semua ClusterRoles dan ClusterRoleBindings yang dibuat di cluster oleh Operator ConfigManagement akan dihapus dari cluster.
    • Semua konfigurasi pengontrol penerimaan yang diinstal oleh ConfigManagement Operator akan dihapus.
    • Konten namespace config-management-system akan dihapus, dengan pengecualian Secret git-creds, dan untuk versi Pengontrol Kebijakan, Config Sync, dan Pengontrol Konfigurasi mulai 1.9.0, Deployment config-management-operator, dan Pod config-management-operator. Operator ConfigManagement tidak dapat berfungsi tanpa namespace config-management-system. Semua CustomResourceDefinitions (CRD) yang dibuat atau diubah oleh pengontrol ConfigManagement Operator akan dihapus dari cluster tempat mereka dibuat atau diubah. CRD yang diperlukan untuk menjalankan ConfigManagement Operator masih ada karena dari sudut pandang Kubernetes, CRD ditambahkan oleh pengguna yang menginstal ConfigManagement Operator. Informasi tentang menghapus komponen ini dibahas di langkah berikutnya.
  2. Jika Anda perlu mempertahankan Secret git-creds, lakukan sekarang:

    kubectl -n config-management-system get secret git-creds -o yaml
    
  3. Hapus namespace config-management-system:

    kubectl delete ns config-management-system
    
  4. Hapus namespace config-management-monitoring:

    kubectl delete ns config-management-monitoring
    
  5. Hapus ConfigManagement CustomResourceDefinition:

    kubectl delete crd configmanagements.configmanagement.gke.io
    

RBAC dan izin Pengontrol Kebijakan

Pengontrol Kebijakan mencakup workload dengan hak istimewa tinggi. Izin untuk workload ini tercakup dalam dokumentasi operasi Open Policy Agent Gatekeeper.

Permintaan resource Pengontrol Kebijakan

Tabel berikut mencantumkan persyaratan resource Kubernetes untuk setiap versi yang didukung. Permintaan resource untuk Operator ConfigManagement hanya berlaku jika Anda menginstal Pengontrol Kebijakan melalui objek ConfigManagement.

1.16

Komponen CPU Memori
Operator ConfigManagement 100 m 100 M
Pengontrol Kebijakan 100 m 256 M

1.15

Komponen CPU Memori
Operator ConfigManagement 100 m 100 M
Pengontrol Kebijakan 100 m 256 M

1,14

Komponen CPU Memori
Operator ConfigManagement 100 m 100 M
Pengontrol Kebijakan 100 m 256 M

Langkah selanjutnya