Memperkuat keamanan aplikasi dengan Cloud Service Mesh, Config Sync, dan Policy Controller


Tutorial ini menunjukkan cara meningkatkan postur keamanan cluster dan aplikasi Anda. Bayangkan Anda adalah administrator platform yang organisasinya mengelola aplikasi untuk toko online mereka dengan Cloud Service Mesh, serangkaian alat yang membantu Anda memantau dan mengelola mesh layanan yang andal. Anda bertanggung jawab untuk memastikan bahwa mesh dan aplikasi Anda aman.

Anda dapat mencegah kesalahan konfigurasi dan memvalidasi kebijakan Cloud Service Mesh secara otomatis menggunakan Policy Controller dan Config Sync. Pengontrol Kebijakan memungkinkan penerapan kebijakan yang sepenuhnya dapat diprogram untuk cluster Anda. Policy Controller juga dilengkapi dengan library default template batasan yang dapat Anda gunakan dengan paket keamanan Cloud Service Mesh untuk mengaudit kepatuhan terhadap praktik terbaik dan kerentanan keamanan mesh Anda. Config Sync terus merekonsiliasi status cluster dengan sekumpulan file konfigurasi deklaratif Kubernetes pusat. Dengan menggunakan Pengontrol Kebijakan dan Config Sync secara bersamaan, Anda dapat terus menerapkan batasan pada konfigurasi kebijakan Cloud Service Mesh.

Diagram berikut menunjukkan ringkasan cara Cloud Service Mesh, Policy Controller, dan Config Sync bekerja sama dalam tutorial ini untuk mengelola dan melindungi gateway traffic masuk dan aplikasi contoh Online Boutique yang Anda gunakan dalam tutorial ini:

Diagram yang menampilkan arsitektur yang Anda buat untuk tutorial ini

Tujuan

  • Buat cluster Google Kubernetes Engine (GKE) dan daftarkan cluster ke fleet.
  • Instal Pengontrol Kebijakan, Config Sync, dan Cloud Service Mesh di cluster.
  • Mengonfigurasi Config Sync untuk menyelaraskan beberapa repositori
  • Terapkan praktik terbaik untuk men-deploy konfigurasi, aplikasi, dan resource Istio dengan Config Sync.
  • Deploy konfigurasi cluster, aplikasi contoh Butik Online, dan gateway ingress dengan Config Sync.
  • Manfaatkan paket kebijakan Cloud Service Mesh Policy Controller untuk menerapkan praktik terbaik keamanan berikut:
    • Pastikan semua workload di mesh memiliki injeksi sidecar otomatis.
    • Enkripsi semua traffic di mesh.
    • Menjamin bahwa semua workload di mesh memiliki kontrol akses terperinci.

Biaya

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

  • GKE.
  • GKE Enterprise. The billing for GKE Enterprise includes billing for the Cloud Service Mesh, Config Sync, and Policy Controller.

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Sebelum memulai

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

Menyiapkan lingkungan Anda

Di bagian ini, Anda akan menyiapkan lingkungan agar dapat menginstal Cloud Service Mesh, Policy Controller, dan Config Sync:

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  2. Upgrade Google Cloud CLI ke versi terbaru:

    gcloud components update
    
  3. Untuk menyimpan file yang Anda buat dalam tutorial ini, buat direktori:

    mkdir ~/asm-acm-tutorial-dir
    
  4. Untuk menyederhanakan tutorial selanjutnya, buat variabel lingkungan berikut:

    PROJECT_ID=PROJECT_ID
    gcloud config set project $PROJECT_ID
    CLUSTER=asm-acm-tutorial
    CLUSTER_ZONE=us-east4-a
    MEMBERSHIP=asm-acm-tutorial
    PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} --format='get(projectNumber)')
    

    Ganti PROJECT_ID dengan project ID yang ingin Anda gunakan untuk tutorial ini.

    Jika Anda diminta untuk memberikan otorisasi pada Cloud Shell, klik Authorize untuk menyelesaikan operasi.

  5. Aktifkan API yang Anda perlukan untuk tutorial ini:

    gcloud

    gcloud services enable \
        mesh.googleapis.com \
        anthos.googleapis.com
    

    Config Connector

    Tutorial ini mencakup resource Config Connector. Anda dapat menggunakan resource ini untuk menyelesaikan tugas yang sama dengan yang diselesaikan di tab gcloud. Untuk menggunakan resource ini, instal Config Connector dan terapkan resource dengan cara yang paling sesuai untuk lingkungan Anda.

    Gunakan manifes Services berikut:

    apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
    kind: Service
    metadata:
      annotations:
        cnrm.cloud.google.com/deletion-policy: "abandon"
        cnrm.cloud.google.com/disable-dependent-services: "false"
      name: mesh.googleapis.com
    spec:
      resourceID: mesh.googleapis.com
      projectRef:
        external: PROJECT_ID
    ---
    apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
    kind: Service
    metadata:
      annotations:
        cnrm.cloud.google.com/deletion-policy: "abandon"
        cnrm.cloud.google.com/disable-dependent-services: "false"
      name: anthos.googleapis.com
    spec:
      resourceID: anthos.googleapis.com
      projectRef:
        external: PROJECT_ID
    

    Operasi ini dapat memerlukan waktu lebih dari satu menit untuk selesai.

  6. Menyiapkan cluster GKE

    Di bagian ini, Anda akan membuat cluster GKE, lalu mendaftarkannya ke fleet. Fleet adalah Google Cloud konsep untuk mengatur cluster dan resource lainnya secara logis, sehingga memungkinkan Anda menggunakan dan mengelola kemampuan multi-cluster serta menerapkan kebijakan yang konsisten di seluruh sistem Anda.

    Cluster yang Anda buat di bagian ini adalah cluster tempat Anda menginstal Cloud Service Mesh, Policy Controller, dan Config Sync. Cluster ini juga merupakan tempat Anda men-deploy aplikasi contoh Butik Online.

    Untuk menyiapkan cluster, selesaikan langkah-langkah berikut:

    1. Buat cluster GKE:

      gcloud

      gcloud container clusters create ${CLUSTER} \
          --zone ${CLUSTER_ZONE} \
          --machine-type=e2-standard-4 \
          --num-nodes 4 \
          --workload-pool ${PROJECT_ID}.svc.id.goog \
          --labels mesh_id=proj-${PROJECT_NUMBER}
      

      Config Connector

      Gunakan manifes ContainerCluster dan ContainerNodePool berikut:

      apiVersion: container.cnrm.cloud.google.com/v1beta1
      kind: ContainerNodePool
      metadata:
        annotations:
          cnrm.cloud.google.com/project-id: PROJECT_ID
        name: asm-acm-tutorial
      spec:
        clusterRef:
          name: asm-acm-tutorial
        location: us-east4-a
        nodeConfig:
          machineType: e2-standard-4
        nodeCount: 4
      ---
      apiVersion: container.cnrm.cloud.google.com/v1beta1
      kind: ContainerCluster
      metadata:
        annotations:
          cnrm.cloud.google.com/project-id: PROJECT_ID
          cnrm.cloud.google.com/remove-default-node-pool: "true"
        labels:
          mesh_id: proj-PROJECT_NUMBER
        name: asm-acm-tutorial
      spec:
        location: us-east4-a
        initialNodeCount: 1
        workloadIdentityConfig:
          workloadPool: PROJECT_ID.svc.id.goog
      

      Ganti PROJECT_NUMBER dengan nilai variabel lingkungan PROJECT_NUMBER yang diambil sebelumnya.

      Operasi ini dapat memerlukan waktu lebih dari lima menit untuk selesai.

    2. Untuk memastikan keberhasilan pembuatan cluster GKE, deskripsikan statusnya:

      gcloud container clusters list \
          --zone ${CLUSTER_ZONE} \
          --project ${PROJECT_ID}
      

      Outputnya mirip dengan hal berikut ini:

      NAME                LOCATION      MASTER_VERSION   MASTER_IP      MACHINE_TYPE   NODE_VERSION     NUM_NODES  STATUS
      asm-acm-tutorial    us-east4-a    1.23.12-gke.100  35.186.179.30  e2-standard-4  1.23.12-gke.100  3          RUNNING
      
    3. Hubungkan ke cluster GKE

      gcloud container clusters get-credentials ${CLUSTER} \
          --zone ${CLUSTER_ZONE} \
          --project ${PROJECT_ID}
      
    4. Daftarkan cluster Anda ke fleet:

      gcloud

      gcloud container fleet memberships register ${MEMBERSHIP} \
          --project ${PROJECT_ID} \
          --gke-cluster ${CLUSTER_ZONE}/${CLUSTER} \
          --enable-workload-identity
      

      Outputnya mirip dengan hal berikut ini:

      kubeconfig entry generated for asm-acm-tutorial.
      Waiting for membership to be created...done.
      Created a new membership [projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial] for the cluster [asm-acm-tutorial]
      Generating the Connect Agent manifest...
      Deploying the Connect Agent on cluster [asm-acm-tutorial] in namespace [gke-connect]...
      Deployed the Connect Agent on cluster [asm-acm-tutorial] in namespace [gke-connect].
      Finished registering the cluster [asm-acm-tutorial] with the Fleet.
      

      Config Connector

      Gunakan manifes GKEHubMembership berikut:

      apiVersion: gkehub.cnrm.cloud.google.com/v1beta1
      kind: GKEHubMembership
      metadata:
        annotations:
          cnrm.cloud.google.com/project-id: PROJECT_ID
        name: asm-acm-tutorial
      spec:
        location: global
        authority:
          issuer: https://container.googleapis.com/v1/projects/PROJECT_ID/locations/us-east4-a/clusters/asm-acm-tutorial
        endpoint:
          gkeCluster:
            resourceRef:
              name: asm-acm-tutorial
      
    5. Untuk memastikan keberhasilan pendaftaran cluster GKE, deskripsikan statusnya:

      gcloud container fleet memberships list
      

      Outputnya mirip dengan hal berikut ini:

      NAME              EXTERNAL_ID                           LOCATION
      asm-acm-tutorial  0e12258c-8831-4d81-b5c0-5e7099a468cc  global
      

    Menjelajahi repositori

    Di bagian penginstalan berikut, Anda akan menerapkan file manifest acm-config.yaml. Manifes ini mengonfigurasi cluster Anda untuk menyinkronkan dari folder asm-acm-tutorial repositori contoh. Folder ini berisi semua file konfigurasi yang Anda butuhkan untuk menyelesaikan tutorial ini.

    Untuk menyederhanakan tutorial ini, Anda menggunakan perintah sed untuk memperbarui acm-config.yaml. Dengan file acm-config.yaml, Config Sync men-deploy manifes yang diperlukan untuk setiap langkah tutorial ini. Memperbarui satu file membantu Anda berfokus pada konsep dan alur pengamanan cluster, mesh, dan aplikasi tanpa berulang kali memanipulasi file dan menjalankan perintah git berulang kali.

    Untuk memanfaatkan kemampuan Config Sync dalam menyinkronkan beberapa repositori, Anda menggunakan resource berikut:

    • root-sync, sebagai repositori RootSync, berisi semua konfigurasi di seluruh cluster Anda, termasuk RepoSyncs, Constraints, ClusterRole, RoleBindings, dan resource yang disertakan dalam beberapa namespace sistem seperti istio-system.
    • ingress-gateway, sebagai RepoSync pertama, berisi semua resource yang diperlukan untuk men-deploy gateway ingress dan mengamankannya secara progresif di sepanjang tutorial ini.
    • online-boutique, sebagai RepoSync kedua, berisi semua resource yang diperlukan untuk men-deploy aplikasi Online Boutique dan mengamankannya secara progresif selama tutorial ini.

    Menginstal Policy Controller, Config Sync, dan Cloud Service Mesh terkelola

    Setelah membuat dan mendaftarkan cluster, Anda dapat menginstal Config Sync, Policy Controller, dan Cloud Service Mesh di cluster Anda serta mengonfigurasi cluster Anda untuk menyinkronkan dari konfigurasi RootSync default:

    1. Aktifkan operator ConfigManagement, yang mengelola Config Sync dan Pengontrol Kebijakan:

      gcloud

      gcloud beta container fleet config-management enable
      

      Config Connector

      Gunakan manifes GKEHubFeature berikut:

      apiVersion: gkehub.cnrm.cloud.google.com/v1beta1
      kind: GKEHubFeature
      metadata:
        name: configmanagement
      spec:
        projectRef:
          external: PROJECT_ID
        location: global
        resourceID: configmanagement
      
    2. Aktifkan Cloud Service Mesh di fleet Anda.

      gcloud

      gcloud container fleet mesh enable
      

      Config Connector

      Gunakan manifes GKEHubFeature berikut:

      apiVersion: gkehub.cnrm.cloud.google.com/v1beta1
      kind: GKEHubFeature
      metadata:
        name: servicemesh
      spec:
        projectRef:
          external: PROJECT_ID
        location: global
        resourceID: servicemesh
      
    3. Aktifkan pengelolaan otomatis Cloud Service Mesh agar Google dapat menerapkan konfigurasi yang direkomendasikan untuk Cloud Service Mesh terkelola:

      gcloud

      gcloud container fleet mesh update \
          --management automatic \
          --memberships ${MEMBERSHIP}
      

      Config Connector

      Gunakan manifes GKEHubFeatureMembership berikut:

      apiVersion: gkehub.cnrm.cloud.google.com/v1beta1
      kind: GKEHubFeatureMembership
      metadata:
        name: servicemesh-membership
      spec:
        projectRef:
          external: PROJECT_ID
        location: global
        membershipRef:
          name: asm-acm-tutorial
        featureRef:
          name: servicemesh
        mesh:
          management: MANAGEMENT_AUTOMATIC
      
    4. Aktifkan Config Sync dan Pengontrol Kebijakan:

      gcloud

      Simpan manifes berikut sebagai acm-config.yaml di direktori ~/asm-acm-tutorial-dir:

      applySpecVersion: 1
      spec:
        configSync:
          enabled: true
          policyDir: asm-acm-tutorial/root-sync/init
          secretType: none
          sourceFormat: unstructured
          syncRepo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
          syncBranch: main
        policyController:
          enabled: true
          referentialRulesEnabled: true
          templateLibraryInstalled: true
      

      Untuk mempelajari lebih lanjut kolom konfigurasi Google Cloud CLI, lihat kolom spesifikasi penerapan gcloud.

      Terapkan file:

      gcloud beta container fleet config-management apply \
          --membership ${MEMBERSHIP} \
          --config ~/asm-acm-tutorial-dir/acm-config.yaml
      

      Config Connector

      Gunakan manifes GKEHubFeatureMembership berikut:

      apiVersion: gkehub.cnrm.cloud.google.com/v1beta1
      kind: GKEHubFeatureMembership
      metadata:
        name: configmanagement-membership
      spec:
        projectRef:
          external: PROJECT_ID
        location: global
        membershipRef:
          name: asm-acm-tutorial
        featureRef:
          name: configmanagement
        configmanagement:
          configSync:
            sourceFormat: unstructured
            git:
              policyDir: asm-acm-tutorial/root-sync/init
              secretType: none
              syncBranch: main
              syncRepo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
          policyController:
            enabled: true
            referentialRulesEnabled: true
            templateLibraryInstalled: true
      

      Policy Controller dan Config Sync diinstal di cluster Anda. Selanjutnya, Config Sync mulai menyinkronkan semua konfigurasi RootSync default ke cluster Anda. Konfigurasi ini menginstal dan mengonfigurasi komponen utama berikut:

      • Objek RepoSync yang mengonfigurasi aplikasi Butik Online dan gateway ingress disinkronkan:

        apiVersion: configsync.gke.io/v1beta1
        kind: RepoSync
        metadata:
          name: repo-sync
        spec:
          override:
            enableShellInRendering: true
          sourceFormat: unstructured
          git:
            repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
            revision: HEAD
            branch: main
            dir: asm-acm-tutorial/online-boutique/init
            auth: none
        apiVersion: configsync.gke.io/v1beta1
        kind: RepoSync
        metadata:
          name: repo-sync
        spec:
          override:
            enableShellInRendering: true
          sourceFormat: unstructured
          git:
            repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
            revision: HEAD
            branch: main
            dir: asm-acm-tutorial/ingress-gateway/init
            auth: none
      • Karena rekonsiliator RepoSync memerlukan izin tambahan untuk membuat resource Istio, ClusterRole dan dua objek RoleBinding untuk memberikan izin ini juga diterapkan ke cluster Anda:

        apiVersion: rbac.authorization.k8s.io/v1
        kind: ClusterRole
        metadata:
          labels:
            rbac.authorization.k8s.io/aggregate-to-edit: "true"
          name: custom:aggregate-to-edit:istio
        rules:
        - apiGroups:
          - "networking.istio.io"
          - "security.istio.io"
          resources:
          - "virtualservices"
          - "authorizationpolicies"
          - "gateways"
          verbs:
          - "*"
        apiVersion: rbac.authorization.k8s.io/v1
        kind: RoleBinding
        metadata:
          name: repo-sync
        subjects:
        - kind: ServiceAccount
          name: ns-reconciler-onlineboutique
          namespace: config-management-system
        roleRef:
          kind: ClusterRole
          name: edit
          apiGroup: rbac.authorization.k8s.io
        apiVersion: rbac.authorization.k8s.io/v1
        kind: RoleBinding
        metadata:
          name: repo-sync
        subjects:
        - kind: ServiceAccount
          name: ns-reconciler-asm-ingress
          namespace: config-management-system
        roleRef:
          kind: ClusterRole
          name: edit
          apiGroup: rbac.authorization.k8s.io
    5. Untuk memastikan penginstalan Policy Controller dan Config Sync berhasil, periksa statusnya:

      gcloud beta container fleet config-management status
      

      Outputnya mirip dengan hal berikut ini:

      Name: asm-acm-tutorial
      Status: SYNCED
      Last_Synced_Token: 4b3384d
      Sync_Branch: main
      Last_Synced_Time: 2022-05-04T21:32:58Z
      Policy_Controller: INSTALLED
      

      Jika Anda melihat PENDING atau NOT_INSTALLED di baris Status atau Policy_Controller, tunggu beberapa menit dan jalankan gcloud beta container fleet config-management status lagi.

    6. Untuk memastikan keberhasilan penginstalan Cloud Service Mesh, jelaskan statusnya:

      gcloud container fleet mesh describe
      

      Outputnya mirip dengan hal berikut ini:

      createTime: '2022-09-13T23:12:56.477042921Z'
      membershipSpecs:
        projects/PROJECT_NUMBER/locations/global/memberships/asm-acm-tutorial:
          mesh:
            management: MANAGEMENT_AUTOMATIC
      membershipStates:
        projects/PROJECT_NUMBER/locations/global/memberships/asm-acm-tutorial:
          servicemesh:
            controlPlaneManagement:
              details:
              - code: REVISION_READY
                details: 'Ready: asm-managed'
              state: ACTIVE
            dataPlaneManagement:
              details:
              - code: OK
                details: Service is running.
              state: ACTIVE
          state:
            code: OK
            description: |-
              Revision(s) ready for use: asm-managed.
              All Canonical Services have been reconciled successfully.
            updateTime: '2022-09-14T00:19:10.571552206Z'
      name: projects/PROJECT_ID/locations/global/features/servicemesh
      resourceState:
        state: ACTIVE
      spec: {}
      state:
        state: {}
      updateTime: '2022-09-14T00:19:14.135113118Z'
      

      Jika Anda melihat state.code: ERROR, bukan state.code: OK, tunggu beberapa menit dan jalankan gcloud container fleet mesh describe lagi. Sebelum melanjutkan tutorial, Anda harus memastikan bahwa kolom servicemesh.controlPlaneManagement.details.code memiliki nilai REVISION_READY.

    Men-deploy gateway traffic masuk dan aplikasi contoh

    Di bagian ini, Anda akan men-deploy contoh aplikasi Butik Online dan gateway ingress untuk mengelola traffic ingress.

    1. Deploy contoh aplikasi Butik Online dan gateway ingress.

      Perintah berikut menggunakan sed untuk memperbarui manifes acm-config.yaml agar Config Sync men-deploy resource yang Anda butuhkan untuk men-deploy gateway ingress dan aplikasi contoh.

      sed -i "s,root-sync/init,root-sync/deployments,g" ~/asm-acm-tutorial-dir/acm-config.yaml
      gcloud beta container fleet config-management apply \
          --membership ${MEMBERSHIP} \
          --config ~/asm-acm-tutorial-dir/acm-config.yaml
      

      Perhatikan bahwa langkah ini dapat memerlukan waktu beberapa menit hingga selesai.

    2. Lihat status Config Sync untuk RootSync dan dua RepoSyncs:

      gcloud alpha anthos config sync repo describe
      

      Outputnya mirip dengan:

      getting 3 RepoSync and RootSync from projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial
      [
        {
          "clusters": [
            "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
          ],
          "commit": "95a30c052566357afb9db3d7f6153d9c0f219c03",
          "errors": [],
          "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/root-sync/deployments@main",
          "status": "SYNCED"
        },
        {
          "clusters": [
            "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
          ],
          "commit": "95a30c052566357afb9db3d7f6153d9c0f219c03",
          "errors": [],
          "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/ingress-gateway/deployments@main",
          "status": "SYNCED"
        },
        {
          "clusters": [
            "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
          ],
          "commit": "95a30c052566357afb9db3d7f6153d9c0f219c03",
          "errors": [],
          "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/online-boutique/deployments@main",
          "status": "SYNCED"
        }
      ]
      

      Jika Anda melihat status: RECONCILING, bukan status: SYNCED, tunggu beberapa menit dan jalankan gcloud alpha anthos config sync repo describe lagi.

      Untuk hanya melihat informasi satu repositori, Anda dapat menggunakan flag --sync-name dan --sync-namespace. Untuk melihat resource terkelola secara mendetail, tambahkan tanda --managed-resources. Untuk mengetahui informasi selengkapnya, lihat Melihat status Config Sync di beberapa cluster.

    3. Tunggu hingga alamat IP publik gateway ingress disediakan:

      until kubectl -n asm-ingress get svc asm-ingressgateway -o jsonpath='{.status.loadBalancer}' | grep "ingress"; do : ; done
      
    4. Dapatkan alamat IP publik gateway ingress:

      EXTERNAL_IP=$(kubectl get svc asm-ingressgateway -n asm-ingress -o jsonpath="{.status.loadBalancer.ingress[*].ip}")
      
    5. Kunjungi alamat IP dari browser Anda untuk memverifikasi bahwa aplikasi Online Boutique telah berhasil di-deploy:

      echo http://${EXTERNAL_IP}
      

    Menerapkan kebijakan untuk mengamankan mesh Anda

    Di bagian berikut, Anda akan memanfaatkan Policy Controller untuk menerapkan kebijakan dari paket kebijakan Cloud Service Mesh dengan membuat batasan.

    Menerapkan injeksi proxy file bantuan

    Di bagian ini, Anda akan menerapkan kebijakan untuk memastikan bahwa semua workload di mesh telah mengaktifkan penyisipan sidecar otomatis.

    1. Untuk menerapkan injeksi proxy sidecar, terapkan batasan.

      Perintah berikut menggunakan sed untuk memperbarui manifes acm-config.yaml agar Config Sync men-deploy resource terkait.

      sed -i "s,root-sync/deployments,root-sync/enforce-sidecar-injection,g" ~/asm-acm-tutorial-dir/acm-config.yaml
      gcloud beta container fleet config-management apply \
          --membership ${MEMBERSHIP} \
          --config ~/asm-acm-tutorial-dir/acm-config.yaml
      

      Perintah sebelumnya men-deploy resource berikut:

      • Constraint K8sRequiredLabels yang mengharuskan setiap Namespace dalam mesh berisi label injeksi proxy sidecar Cloud Service Mesh tertentu:

        apiVersion: constraints.gatekeeper.sh/v1beta1
        kind: K8sRequiredLabels
        metadata:
          name: namespace-sidecar-injection-label
        spec:
          enforcementAction: deny
          match:
            kinds:
            - apiGroups:
              - ""
              kinds:
              - Namespace
            excludedNamespaces:
            - config-management-monitoring
            - config-management-system
            - default
            - gatekeeper-system
            - gke-connect
            - istio-system
            - kube-node-lease
            - kube-public
            - kube-system
            - resource-group-system
          parameters:
            labels:
            - allowedRegex: enabled
              key: istio-injection
      • AsmSidecarInjection Constraint yang melarang Pod apa pun dalam mesh melewati injeksi sidecar proxy Istio:

        apiVersion: constraints.gatekeeper.sh/v1beta1
        kind: AsmSidecarInjection
        metadata:
          name: pod-sidecar-injection-annotation
        spec:
          enforcementAction: deny
          match:
            kinds:
            - apiGroups:
              - ""
              kinds:
              - Pod
            excludedNamespaces:
            - kube-system
          parameters:
            strictnessLevel: High
    2. Lihat status Config Sync untuk RootSync:

      gcloud alpha anthos config sync repo describe \
          --sync-name root-sync \
          --sync-namespace config-management-system
      

      Outputnya mirip dengan:

      getting 1 RepoSync and RootSync from projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial
      [
        {
          "clusters": [
            "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
          ],
          "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
          "errors": [],
          "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/root-sync/enforce-sidecar-injection@main",
          "status": "SYNCED"
        }
      ]
      

      Jika Anda melihat status: RECONCILING, bukan status: SYNCED, tunggu beberapa menit dan jalankan gcloud alpha anthos config sync repo describe lagi.

    3. Pastikan Constraints dibuat:

      kubectl get constraints
      

      Mungkin perlu waktu beberapa menit bagi Policy Controller untuk mengevaluasi batasan ini. Jika Anda tidak melihat nilai di kolom TOTAL-VIOLATIONS, tunggu dan jalankan kubectl get constraints lagi.

      Outputnya mirip dengan:

      NAME                                                                                       ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
      podsidecarinjectionannotation.constraints.gatekeeper.sh/pod-sidecar-injection-annotation   deny                 0
      
      NAME                                                                            ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
      k8srequiredlabels.constraints.gatekeeper.sh/namespace-sidecar-injection-label   deny                 0
      

      Karena kita telah menyiapkan Namespaces dan Pods dengan benar, ada 0 TOTAL-VIOLATIONS untuk Constraints ini.

    4. Untuk melihat cara kerja Constraints ini, coba buat Namespace di cluster Anda tanpa label maupun annotation:

      kubectl create namespace test
      

      Outputnya mirip dengan error berikut:

      Error from server (Forbidden): admission webhook "validation.gatekeeper.sh" denied the request: [namespace-sidecar-injection-label] you must provide labels: {"istio-injection"}
      

    Menerapkan enkripsi traffic

    Di bagian ini, Anda akan menerapkan kebijakan untuk memastikan bahwa semua traffic di mesh dienkripsi.

    1. Untuk menerapkan enkripsi traffic, terapkan batasan.

      Perintah berikut menggunakan sed untuk memperbarui manifes acm-config.yaml agar Config Sync men-deploy resource terkait.

      sed -i "s,root-sync/enforce-sidecar-injection,root-sync/enforce-strict-mtls,g" ~/asm-acm-tutorial-dir/acm-config.yaml
      gcloud beta container fleet config-management apply \
          --membership ${MEMBERSHIP} \
          --config ~/asm-acm-tutorial-dir/acm-config.yaml
      

      Perintah sebelumnya men-deploy resource berikut:

      • AsmPeerAuthnMeshStrictMtls Constraint yang menerapkan mTLS tingkat mesh PeerAuthentication di namespace istio-system:

        apiVersion: constraints.gatekeeper.sh/v1beta1
        kind: AsmPeerAuthnMeshStrictMtls
        metadata:
          name: mesh-level-strict-mtls
        spec:
          enforcementAction: deny
          parameters:
            rootNamespace: istio-system
            strictnessLevel: High
      • Batasan referensial Config di namespace gatekeeper-system. Batasan referensial ini memungkinkan AsmPeerAuthnMeshStrictMtls Constraint mereferensikan objek lain dalam definisinya (misalnya, menelusuri PeerAuthentication apa pun di istio-system Namespace):

        apiVersion: config.gatekeeper.sh/v1alpha1
        kind: Config
        metadata:
          name: config
        spec:
          sync:
            syncOnly:
              - group: ""
                version: "v1"
                kind: "Namespace"
              - group: "security.istio.io"
                version: "v1beta1"
                kind: "PeerAuthentication"
              - group: "security.istio.io"
                version: "v1beta1"
                kind: "AuthorizationPolicy"
      • Constraint DestinationRuleTLSEnabled yang melarang penonaktifan TLS untuk semua host dan subset host di Istio DestinationRules:

        apiVersion: constraints.gatekeeper.sh/v1beta1
        kind: DestinationRuleTLSEnabled
        metadata:
          name: destination-rule-tls-enabled
        spec:
          enforcementAction: deny
          match:
            kinds:
            - apiGroups:
              - networking.istio.io
              kinds:
              - DestinationRule
      • AsmPeerAuthnStrictMtls Constraint yang memastikan bahwa semua PeerAuthentications tidak dapat menggantikan mTLS STRICT:

        apiVersion: constraints.gatekeeper.sh/v1beta1
        kind: AsmPeerAuthnStrictMtls
        metadata:
          name: peerauthentication-strict-mtls
        spec:
          enforcementAction: deny
          match:
            kinds:
            - apiGroups:
              - security.istio.io
              kinds:
              - PeerAuthentication
          parameters:
            strictnessLevel: High
    2. Lihat status Config Sync untuk RootSync:

      gcloud alpha anthos config sync repo describe \
          --sync-name root-sync \
          --sync-namespace config-management-system
      

      Outputnya mirip dengan:

      getting 1 RepoSync and RootSync from projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial
      [
        {
          "clusters": [
            "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
          ],
          "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
          "errors": [],
          "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/root-sync/enforce-strict-mtls@main",
          "status": "SYNCED"
        }
      ]
      

      Jika Anda melihat status: RECONCILING, bukan status: SYNCED, tunggu beberapa menit dan jalankan gcloud alpha anthos config sync repo describe lagi.

    3. Jalankan perintah berikut untuk mendapatkan informasi selengkapnya tentang pelanggaran PeerAuthentication:

      kubectl get asmpeerauthnmeshstrictmtls.constraints.gatekeeper.sh/mesh-level-strict-mtls -ojsonpath='{.status.violations}'  | jq
      

      Outputnya mirip dengan:

      [
        {
          "enforcementAction": "deny",
          "group": "constraints.gatekeeper.sh",
          "kind": "AsmPeerAuthnMeshStrictMtls",
          "message": "Root namespace <istio-system> does not have a strict mTLS PeerAuthentication",
          "name": "mesh-level-strict-mtls",
          "version": "v1beta1"
        }
      ]
      
    4. Perbaiki masalah dengan men-deploy PeerAuthentication di istio-system. Untuk mencegah semua layanan Anda di mesh menerima traffic teks biasa, tetapkan kebijakan PeerAuthentication di seluruh mesh dengan mode mTLS ditetapkan ke STRICT. Saat Anda men-deploy kebijakan, bidang kontrol akan otomatis menyediakan sertifikat TLS sehingga workload dapat saling mengautentikasi.

      Perintah berikut menggunakan sed untuk memperbarui manifes acm-config.yaml agar Config Sync men-deploy resource terkait.

      sed -i "s,root-sync/enforce-strict-mtls,root-sync/fix-strict-mtls,g" ~/asm-acm-tutorial-dir/acm-config.yaml
      gcloud beta container fleet config-management apply \
          --membership ${MEMBERSHIP} \
          --config ~/asm-acm-tutorial-dir/acm-config.yaml
      

      Perintah sebelumnya men-deploy STRICT mTLS PeerAuthentication berikut di namespace istio-system. Tindakan ini menerapkan mTLS STRICT ke seluruh mesh:

      apiVersion: security.istio.io/v1beta1
      kind: PeerAuthentication
      metadata:
        name: default
      spec:
        mtls:
          mode: STRICT
    5. Lihat status Config Sync untuk RootSync:

      gcloud alpha anthos config sync repo describe \
          --sync-name root-sync \
          --sync-namespace config-management-system
      

      Outputnya mirip dengan:

      getting 1 RepoSync and RootSync from projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial
      [
        {
          "clusters": [
            "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
          ],
          "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
          "errors": [],
          "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/root-sync/fix-strict-mtls@main",
          "status": "SYNCED"
        }
      ]
      

      Jika Anda melihat status: RECONCILING, bukan status: SYNCED, tunggu beberapa menit dan jalankan gcloud alpha anthos config sync repo describe lagi.

    6. Pastikan Constraints dibuat:

      kubectl get constraints
      

      Perhatikan bahwa proses ini dapat memerlukan waktu beberapa menit agar Policy Controller dapat mengevaluasi Constraints ini. Tunggu dan jalankan kembali perintah kubectl get constraints ini hingga Anda mendapatkan nilai di bawah kolom TOTAL-VIOLATIONS untuk setiap baris.

      Outputnya mirip dengan:

      NAME                                                                            ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
      k8srequiredlabels.constraints.gatekeeper.sh/namespace-sidecar-injection-label   deny                 0
      NAME                                                                          ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
      asmpeerauthnmeshstrictmtls.constraints.gatekeeper.sh/mesh-level-strict-mtls   deny                 0
      NAME                                                                               ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
      destinationruletlsenabled.constraints.gatekeeper.sh/destination-rule-tls-enabled   deny                 0
      NAME                                                                              ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
      asmpeerauthnstrictmtls.constraints.gatekeeper.sh/peerauthentication-strict-mtls   deny                 0
      NAME                                                                             ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
      asmsidecarinjection.constraints.gatekeeper.sh/pod-sidecar-injection-annotation   deny                 0
      

    Menerapkan kontrol akses terperinci

    Di bagian ini, Anda akan menerapkan kebijakan untuk memastikan bahwa semua workload di mesh memiliki kontrol akses terperinci.

    1. Untuk menerapkan kontrol akses terperinci, terapkan batasan.

      Perintah berikut menggunakan sed untuk memperbarui manifes acm-config.yaml agar Config Sync men-deploy resource terkait.

      sed -i "s,root-sync/fix-strict-mtls,root-sync/enforce-authorization-policies,g" ~/asm-acm-tutorial-dir/acm-config.yaml
      gcloud beta container fleet config-management apply \
          --membership ${MEMBERSHIP} \
          --config ~/asm-acm-tutorial-dir/acm-config.yaml
      

      Perintah sebelumnya men-deploy resource berikut:

      • Constraint AsmAuthzPolicyDefaultDeny yang menerapkan penolakan default tingkat mesh AuthorizationPolicy di namespace istio-system:

        apiVersion: constraints.gatekeeper.sh/v1beta1
        kind: AsmAuthzPolicyDefaultDeny
        metadata:
          name: default-deny-authorization-policies
        spec:
          enforcementAction: deny
          parameters:
            rootNamespace: istio-system
            strictnessLevel: High
      • AsmAuthzPolicyEnforceSourcePrincipals Constraint yang memastikan bahwa setiap AuthorizationPolicies menentukan prinsipal sumber terperinci (selain "*"). Hanya gateway masuk di namespace asm-ingress yang menjadi pengecualian untuk aturan ini agar dapat menerima traffic dari pengguna akhir dan mengalihkan traffic ke aplikasi frontend Online Boutique.

        apiVersion: constraints.gatekeeper.sh/v1beta1
        kind: AsmAuthzPolicyEnforceSourcePrincipals
        metadata:
          name: authz-source-principals-not-all
        spec:
          enforcementAction: deny
          match:
            kinds:
            - apiGroups:
              - security.istio.io
              kinds:
              - AuthorizationPolicy
            excludedNamespaces:
              - asm-ingress
    2. Lihat status Config Sync untuk RootSync:

      gcloud alpha anthos config sync repo describe \
          --sync-name root-sync \
          --sync-namespace config-management-system
      

      Outputnya mirip dengan:

      getting 1 RepoSync and RootSync from projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial
      [
        {
          "clusters": [
            "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
          ],
          "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
          "errors": [],
          "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/root-sync/enforce-authorization-policies@main",
          "status": "SYNCED"
        }
      ]
      

      Jika Anda melihat status: RECONCILING, bukan status: SYNCED, tunggu beberapa menit dan jalankan gcloud alpha anthos config sync repo describe lagi.

    3. Jalankan perintah berikut untuk mendapatkan informasi selengkapnya tentang pelanggaran terkait:

      kubectl get asmauthzpolicydefaultdeny.constraints.gatekeeper.sh/default-deny-authorization-policies -ojsonpath='{.status.violations}'  | jq
      

      Outputnya mirip dengan:

      [
        {
          "enforcementAction": "deny",
          "group": "constraints.gatekeeper.sh",
          "kind": "AsmAuthzPolicyDefaultDeny",
          "message": "Root namespace <istio-system> does not have a default deny AuthorizationPolicy",
          "name": "default-deny-authorization-policies",
          "version": "v1beta1"
        }
      ]
      
    4. Perbaiki masalah dengan men-deploy AuthorizationPolicy di namespace istio-system.

      Perintah berikut menggunakan sed untuk memperbarui manifes acm-config.yaml agar Config Sync men-deploy resource terkait.

      sed -i "s,root-sync/enforce-authorization-policies,root-sync/fix-default-deny-authorization-policy,g" ~/asm-acm-tutorial-dir/acm-config.yaml
      gcloud beta container fleet config-management apply \
          --membership ${MEMBERSHIP} \
          --config ~/asm-acm-tutorial-dir/acm-config.yaml
      

      Perintah sebelumnya men-deploy AuthorizationPolicy tolak semua berikut di namespace istio-system:

      apiVersion: security.istio.io/v1beta1
      kind: AuthorizationPolicy
      metadata:
        name: deny-all
      spec:
        {}
    5. Lihat status Config Sync untuk RootSync:

      gcloud alpha anthos config sync repo describe \
          --sync-name root-sync \
          --sync-namespace config-management-system
      

      Outputnya mirip dengan:

      getting 1 RepoSync and RootSync from projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial
      [
        {
          "clusters": [
            "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
          ],
          "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
          "errors": [],
          "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/root-sync/fix-default-deny-authorization-policy@main",
          "status": "SYNCED"
        }
      ]
      

      Jika Anda melihat status: RECONCILING, bukan status: SYNCED, tunggu beberapa menit dan jalankan gcloud alpha anthos config sync repo describe lagi.

    6. Pastikan Constraints dibuat:

      kubectl get constraints
      

      Perhatikan bahwa proses ini dapat memerlukan waktu beberapa menit agar Policy Controller dapat mengevaluasi Constraints ini. Tunggu dan jalankan kembali perintah kubectl get constraints ini hingga Anda mendapatkan nilai di bawah kolom TOTAL-VIOLATIONS untuk setiap baris.

      Outputnya mirip dengan:

      NAME                                                                             ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
      asmsidecarinjection.constraints.gatekeeper.sh/pod-sidecar-injection-annotation   deny                 0
      NAME                                                                            ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
      k8srequiredlabels.constraints.gatekeeper.sh/namespace-sidecar-injection-label   deny                 0
      NAME                                                                                      ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
      asmauthzpolicydefaultdeny.constraints.gatekeeper.sh/default-deny-authorization-policies   deny                 0
      NAME                                                                          ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
      asmpeerauthnmeshstrictmtls.constraints.gatekeeper.sh/mesh-level-strict-mtls   deny                 0
      NAME                                                                               ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
      destinationruletlsenabled.constraints.gatekeeper.sh/destination-rule-tls-enabled   deny                 0
      NAME                                                                              ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
      asmpeerauthnstrictmtls.constraints.gatekeeper.sh/peerauthentication-strict-mtls   deny                 0
      NAME                                                                                              ENFORCEMENT-ACTION   TOTAL-VIOLATIONS
      asmauthzpolicyenforcesourceprincipals.constraints.gatekeeper.sh/authz-source-principals-not-all   deny                 0
      
    7. Buka aplikasi Butik Online dari browser Anda:

      echo http://${EXTERNAL_IP}
      

      Anda akan menerima error: RBAC: access denied yang mengonfirmasi bahwa penolakan default AuthorizationPolicy diterapkan ke seluruh mesh.

    8. Perbaiki masalah ini dengan men-deploy AuthorizationPolicies yang lebih terperinci di namespace asm-ingress dan onlineboutique.

      Perintah berikut menggunakan sed untuk memperbarui manifes acm-config.yaml agar Config Sync men-deploy resource terkait.

      sed -i "s,root-sync/fix-default-deny-authorization-policy,root-sync/deploy-authorization-policies,g" ~/asm-acm-tutorial-dir/acm-config.yaml
      gcloud beta container fleet config-management apply \
          --membership ${MEMBERSHIP} \
          --config ~/asm-acm-tutorial-dir/acm-config.yaml
      

      Perintah sebelumnya men-deploy resource berikut:

      • AuthorizationPolicy di namespace asm-ingress:

        apiVersion: security.istio.io/v1beta1
        kind: AuthorizationPolicy
        metadata:
          name: asm-ingressgateway
        spec:
          selector:
            matchLabels:
              asm: ingressgateway
          rules:
          - to:
            - operation:
                ports:
                - "8080"
      • AuthorizationPolicy per aplikasi di namespace onlineboutique, berikut contoh untuk aplikasi cartservice:

        apiVersion: security.istio.io/v1beta1
        kind: AuthorizationPolicy
        metadata:
          name: cartservice
        spec:
          selector:
            matchLabels:
              app: cartservice
          rules:
          - from:
            - source:
                principals:
                - cluster.local/ns/onlineboutique/sa/frontend
                - cluster.local/ns/onlineboutique/sa/checkoutservice
            to:
            - operation:
                paths:
                - /hipstershop.CartService/AddItem
                - /hipstershop.CartService/GetCart
                - /hipstershop.CartService/EmptyCart
                methods:
                - POST
                ports:
                - "7070"
      • ServiceAccount per aplikasi di namespace asm-ingress dan onlineboutique agar memiliki identitas unik per aplikasi yang dievaluasi sebagai principal di AuthorizationPolicies. Berikut adalah contoh untuk aplikasi cartservice:

        apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: cartservice
    9. Lihat status Config Sync untuk RootSync dan dua RepoSyncs:

      gcloud alpha anthos config sync repo describe
      

      Outputnya mirip dengan:

      getting 3 RepoSync and RootSync from projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial
      [
        {
          "clusters": [
            "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
          ],
          "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
          "errors": [],
          "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/root-sync/deploy-authorization-policies@main",
          "status": "SYNCED"
        },
        {
          "clusters": [
            "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
          ],
          "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
          "errors": [],
          "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/ingress-gateway/authorization-policies@main",
          "status": "SYNCED"
        },
        {
          "clusters": [
            "projects/PROJECT_ID/locations/global/memberships/asm-acm-tutorial"
          ],
          "commit": "7d15d49af13c44aa531a4565b2277ddcf8b81884",
          "errors": [],
          "source": "https://github.com/GoogleCloudPlatform/anthos-config-management-samples//asm-acm-tutorial/online-boutique/authorization-policies@main",
          "status": "SYNCED"
        }
      ]
      

      Jika Anda melihat status: RECONCILING, bukan status: SYNCED, tunggu beberapa menit dan jalankan gcloud alpha anthos config sync repo describe lagi.

      Untuk hanya melihat informasi satu repositori, Anda dapat menggunakan flag --sync-name dan --sync-namespace. Untuk melihat resource terkelola secara mendetail, Anda dapat menambahkan tanda --managed-resources. Untuk mengetahui informasi selengkapnya, lihat Melihat status Config Sync di beberapa cluster.

    10. Kunjungi aplikasi Butik Online lagi dari browser Anda:

      echo http://${EXTERNAL_IP}
      

      Jika Anda menunggu beberapa menit, Anda akan melihat situs berfungsi kembali seperti yang diharapkan.

    Melihat status fitur keamanan GKE Enterprise

    Anda dapat melihat status fitur keamanan GKE Enterprise, termasuk kebijakan autentikasi dan otorisasi, di konsol Google Cloud .

    1. Di konsol Google Cloud , buka halaman GKE Enterprise Security.

      Buka Keamanan GKE Enterprise

      Ringkasan Kebijakan menampilkan status keamanan aplikasi, termasuk Kontrol akses layanan (AuthorizationPolicies) dan mTLS.

    2. Klik Audit Kebijakan untuk melihat status kebijakan beban kerja untuk cluster dan kedua namespace (asm-ingress dan onlineboutique).

      Kartu Kontrol akses layanan dan Status mTLS memberikan ringkasan tingkat tinggi.

      Ringkasan umum kontrol akses layanan dan status mTLS

      Daftar Workloads menampilkan Kontrol akses layanan dan status mTLS setiap workload.

      Daftar mendetail setiap beban kerja serta kontrol akses layanan dan status mTLS-nya

    Sekarang Anda telah mengamankan cluster dan mesh dengan Pengontrol Kebijakan dan Config Sync.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

Menghapus resource satu per satu

Untuk menghapus resource satu per satu:

  1. Membatalkan pendaftaran cluster Anda dari fleet:

    gcloud

    gcloud container fleet memberships unregister ${CLUSTER} \
        --project=${PROJECT_ID} \
        --gke-cluster=${CLUSTER_ZONE}/${CLUSTER}
    

    Outputnya mirip dengan hal berikut ini:

    kubeconfig entry generated for asm-acm-tutorial.
    Waiting for membership to be deleted...done.
    Deleting membership CR in the cluster...done.
    Deleting namespace [gke-connect] in the cluster...done.
    

    Config Connector

    kubectl delete -f ~/asm-acm-tutorial-dir/fleet-membership.yaml
    
  2. Hapus cluster Anda:

    gcloud

    gcloud container clusters delete ${CLUSTER} \
        --zone ${CLUSTER_ZONE}
    

    Tekan y saat diminta. Pemrosesan perintah ini dapat memakan waktu lebih dari lima menit.

    Outputnya mirip dengan hal berikut ini:

    Deleting cluster asm-acm-tutorial...done.
    Deleted [https://container.googleapis.com/v1/projects/PROJECT_ID/zones/us-east4-a/clusters/asm-acm-tutorial].
    

    Config Connector

    kubectl delete -f ~/asm-acm-tutorial-dir/container-cluster.yaml
    
  3. Hapus file yang Anda buat:

    rm -r ~/asm-acm-tutorial-dir
    

Langkah berikutnya