Menggunakan sertifikat SSL yang dikelola Google

Halaman ini menunjukkan cara menggunakan sertifikat SSL yang dikelola Google untuk Ingress yang aman di GKE. Anda akan mempelajari cara menggunakan layanan pengelolaan sertifikat otomatis Google untuk menyederhanakan enkripsi HTTPS bagi aplikasi Anda.

Sertifikat ini adalah sertifikat Validasi Domain (DV) yang disediakan, diperpanjang, dan dikelola Google untuk nama domain Anda. Sertifikat ini tidak menunjukkan identitas Anda atau organisasi Anda.

Halaman ini ditujukan untuk spesialis Jaringan dan spesialis Keamanan yang merencanakan dan menerapkan keamanan jaringan, serta yang mengembangkan dan memelihara kebijakan keamanan. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam kontenGoogle Cloud , lihat Peran dan tugas pengguna GKE umum.

Sebelum membaca halaman ini, pastikan Anda memiliki pengetahuan yang baik tentang GKE, dan pemahaman yang baik tentang jaringan dan keamanan jaringan.

Untuk mempelajari cara membuat sertifikat yang dikelola Google dengan Google Cloud, lihat Sertifikat yang dikelola Google.

Membuat Ingress dengan sertifikat yang dikelola Google

Untuk mengonfigurasi sertifikat SSL yang dikelola Google dan mengaitkannya dengan Ingress, Anda harus:

  • Membuat objek ManagedCertificate dalam namespace yang sama dengan Ingress.
  • Mengaitkan objek ManagedCertificate ke Ingress dengan menambahkan anotasi networking.gke.io/managed-certificates ke Ingress. Anotasi ini adalah daftar objek ManagedCertificate yang dipisahkan koma.

Batasan

Sertifikat yang dikelola Google kurang fleksibel jika dibandingkan dengan sertifikat yang Anda dapatkan dan kelola sendiri. Sertifikat yang dikelola Google mendukung hingga 100 domain non-karakter pengganti. Tidak seperti sertifikat yang dikelola sendiri, sertifikat yang dikelola Google tidak mendukung domain karakter pengganti.

Jika Anda memerlukan sertifikat yang dikelola sendiri atau jika sudah memiliki sertifikat SSL yang ingin dikonfigurasi di Ingress, lihat Menyiapkan HTTPS (TLS) antara klien dan load balancer.

Jumlah dan jenis sertifikat yang didukung oleh Ingress ditentukan oleh batas sertifikat SSL yang dikelola Google.

Memperbarui sertifikat yang dikelola Google tidak didukung. Untuk mengetahui informasi selengkapnya, silakan melihat Memperbarui sertifikat yang dikelola Google secara manual.

Jika sertifikat dicabut secara langsung dengan Certificate Authority, Google tidak akan merotasi sertifikat tersebut secara otomatis. Anda harus menghapus ManagedCertificate dan membuat yang baru.

Prasyarat

  • Anda harus memiliki nama domain tersebut. Nama domain tidak boleh lebih dari 63 karakter. Anda dapat menggunakan registrar nama domain apa pun untuk mendapatkan nama domain.

  • Jika Anda menggunakan cluster GKE Standard, add-on HttpLoadBalancing harus diaktifkan.

  • Manifes Ingress Anda harus menyertakan anotasi kubernetes.io/ingress.class: "gce". Kolom ingressClassName tidak didukung.

  • Anda harus menerapkan resource Ingress dan ManagedCertificate dalam project dan namespace yang sama.

  • Buat alamat IP eksternal yang dipesan (statis). Memesan alamat IP statis akan memastikan bahwa alamat tersebut tetap menjadi milik Anda, meskipun Anda menghapus Ingress. Jika Anda tidak memesan alamat IP, alamat IP mungkin berubah, sehingga mengharuskan Anda mengonfigurasi ulang data DNS domain. Gunakan Google Cloud CLI atau konsol Google Cloud untuk membuat alamat IP yang dipesan.

    gcloud

    Untuk membuat alamat IP yang dipesan, jalankan perintah berikut:

    gcloud compute addresses create ADDRESS_NAME --global
    

    Ganti ADDRESS_NAME dengan nama alamat IP yang dipesan yang sedang Anda buat.

    Untuk menemukan alamat IP statis yang Anda buat, jalankan perintah berikut:

    gcloud compute addresses describe ADDRESS_NAME --global
    

    Outputnya mirip dengan yang berikut ini:

    address: 203.0.113.32
    ...
    

    Konsol

    Untuk membuat alamat IP yang dipesan, lakukan langkah-langkah berikut:

    1. Buka halaman External IP addresses di konsol Google Cloud .

      Buka External IP addresses

    2. Tentukan nama untuk alamat IP (misalnya, example-ip-address).

    3. Tentukan apakah Anda menginginkan alamat IPv4 atau IPv6.

    4. Pilih opsi Global untuk Type.

    5. Klik Pesan. Alamat IP tersebut akan tercantum di kolom Alamat Eksternal.

    Config Connector

    Catatan: Langkah ini memerlukan Config Connector. Ikuti petunjuk penginstalan untuk menginstal Config Connector di cluster Anda.

    apiVersion: compute.cnrm.cloud.google.com/v1beta1
    kind: ComputeAddress
    metadata:
      name: example-ip-address
    spec:
      location: global
    Untuk men-deploy manifes ini, download manifes ke komputer Anda sebagai compute-address.yaml, lalu jalankan:

    kubectl apply -f compute-address.yaml
    

Menyiapkan sertifikat yang dikelola Google

  1. Membuat objek ManagedCertificate. Resource ini menentukan domain untuk sertifikat SSL. Domain karakter pengganti tidak didukung.

    Manifes berikut menjelaskan objek ManagedCertificate. Simpan manifes sebagai managed-cert.yaml.

    apiVersion: networking.gke.io/v1
    kind: ManagedCertificate
    metadata:
      name: managed-cert
    spec:
      domains:
        - FQDN_1
        - FQDN_2
    

    Ganti kode berikut:

    • FQDN_1, FQDN_2: nama domain yang sepenuhnya memenuhi syarat (FQDN) milik Anda. Misalnya, example.com dan www.example.com.
  2. Terapkan manifes ke cluster Anda:

    kubectl apply -f managed-cert.yaml
    
  3. Buat Service jenis NodePort untuk mengekspos aplikasi Anda ke internet.

    Manifes berikut menjelaskan Service jenis NodePort. Simpan manifes sebagai mc-service.yaml.

    apiVersion: v1
    kind: Service
    metadata:
      name: mc-service
    spec:
      selector:
        app: mc-service
      type: NodePort
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
    
  4. Terapkan manifes ke cluster Anda:

    kubectl apply -f mc-service.yaml
    
  5. Buat Ingress.

    Manifes berikut menjelaskan Ingress yang menggunakan ManagedCertificate yang Anda buat. Simpan manifes sebagai managed-cert-ingress.yaml.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: managed-cert-ingress
      annotations:
        kubernetes.io/ingress.global-static-ip-name: ADDRESS_NAME
        networking.gke.io/managed-certificates: managed-cert
        kubernetes.io/ingress.class: "gce"
    spec:
      defaultBackend:
        service:
          name: mc-service
          port:
            number: SERVICE_PORT
    

    Ganti kode berikut:

    • ADDRESS_NAME: nama alamat IP yang dipesan.
    • SERVICE_PORT: nilai ports.port di Manifes layanan Anda.
  6. Terapkan manifes ke cluster Anda:

    kubectl apply -f managed-cert-ingress.yaml
    
  7. Dapatkan alamat IP load balancer:

    kubectl get ingress
    

    Outputnya mirip dengan yang berikut ini:

    NAME                 HOSTS       ADDRESS         PORTS     AGE
    managed-cert-ingress   *         203.0.113.32     80       54s
    

    Alamat IP load balancer tercantum di kolom ADDRESS. Jika Anda menggunakan alamat IP statis yang dipesan, alamat IP tersebut akan menjadi alamat load balancer.

    Jika alamat tidak tercantum, tunggu sampai Ingress menyelesaikan penyiapan.

  8. Konfigurasi data DNS untuk domain Anda agar mengarah ke alamat IP load balancer. Jika Anda menggunakan Cloud DNS, silakan melihat Mengelola data untuk mengetahui detailnya.

  9. Tunggu hingga penyediaan sertifikat yang dikelola Google selesai. Proses ini mungkin memerlukan waktu hingga 60 menit. Anda dapat memeriksa status sertifikat menggunakan perintah berikut:

    kubectl describe managedcertificate managed-cert
    

    Outputnya mirip dengan yang berikut ini:

    Name:         managed-cert
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    API Version:  networking.gke.io/v1
    Kind:         ManagedCertificate
    (...)
    Spec:
     Domains:
       FQDN_1
       FQDN_2
    Status:
     CertificateStatus: Active
    (...)
    

    Nilai kolom Status.CertificateStatus menunjukkan bahwa sertifikat disediakan. Jika Status.CertificateStatus bukan Active, sertifikat belum disediakan.

  10. Anda dapat memeriksa peristiwa di Ingress menggunakan perintah berikut:

    kubectl describe ingress INGRESS_NAME
    

    Ganti INGRESS_NAME dengan nama Ingress Anda.

  11. Pastikan SSL berfungsi dengan membuka domain Anda menggunakan awalan https://. Browser Anda menunjukkan bahwa koneksi aman dan Anda dapat melihat detail sertifikat.

Bermigrasi ke sertifikat yang dikelola Google dari sertifikat yang dikelola sendiri

Saat Anda memigrasikan Ingress dari penggunaan sertifikat SSL yang dikelola sendiri ke sertifikat SSL yang dikelola Google, jangan sampai ada sertifikat SSL yang dikelola sendiri yang dihapus sebelum sertifikat SSL yang dikelola Google aktif. Setelah sertifikat SSL yang dikelola Google berhasil disediakan, sertifikat tersebut akan otomatis aktif. Setelah sertifikat SSL yang dikelola Google aktif, Anda dapat menghapus sertifikat SSL yang dikelola sendiri.

Gunakan petunjuk ini untuk bermigrasi dari sertifikat SSL yang dikelola sendiri ke sertifikat SSL yang dikelola Google.

  1. Tambahkan sertifikat baru yang dikelola Google ke Ingress, seperti yang dijelaskan di bagian Menyiapkan sertifikat yang dikelola Google.
  2. Tunggu hingga status resource sertifikat yang dikelola Google adalah Aktif. Periksa status sertifikat dengan perintah berikut:

    kubectl describe managedcertificate managed-cert
    
  3. Jika statusnya adalah Active, perbarui Ingress untuk menghapus referensi ke sertifikat yang dikelola sendiri.

Menghapus sertifikat yang dikelola Google

Untuk menghapus sertifikat yang dikelola Google dari cluster, Anda harus menghapus objek ManagedCertificate dan menghapus anotasi Ingress yang mereferensikannya.

  1. Hapus objek ManagedCertificate:

    kubectl delete -f managed-cert.yaml
    

    Outputnya mirip dengan yang berikut ini:

    managedcertificate.networking.gke.io "managed-cert" deleted
    
  2. Hapus anotasi dari Ingress:

    kubectl annotate ingress managed-cert-ingress networking.gke.io/managed-certificates-
    

    Perhatikan tanda minus, -, di akhir perintah.

  3. Rilis alamat IP statis yang Anda pesan untuk load balancer.

    Anda dapat menggunakan Google Cloud CLI, konsol Google Cloud , atau Config Connector untuk merilis alamat IP yang dipesan.

    gcloud

    Gunakan perintah berikut untuk merilis alamat IP yang dipesan:

    gcloud compute addresses delete ADDRESS_NAME --global
    

    Ganti ADDRESS_NAME dengan nama alamat IP.

    Konsol

    Untuk merilis alamat IP yang dipesan, lakukan langkah-langkah berikut:

    1. Buka halaman External IP addresses di konsol Google Cloud .

      Buka External IP addresses

    2. Pilih kotak centang di samping alamat IP yang ingin Anda rilis.

    3. Klik Rilis alamat IP.

    Config Connector

    Catatan: Langkah ini memerlukan Config Connector. Ikuti petunjuk penginstalan untuk menginstal Config Connector di cluster Anda.

    apiVersion: compute.cnrm.cloud.google.com/v1beta1
    kind: ComputeAddress
    metadata:
      name: example-ip-address
    spec:
      location: global

    Untuk men-deploy manifes ini, download manifes ke komputer Anda sebagai compute-address.yaml, lalu jalankan:

    kubectl delete -f compute-address.yaml
    

Langkah berikutnya