

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Amankan Beban Kerja Kubernetes dengan Sertifikat ACM
<a name="exportable-certificates-kubernetes"></a>

Anda dapat menggunakan sertifikat publik yang dapat AWS Certificate Manager diekspor dengan AWS Controllers for Kubernetes (ACK) untuk menerbitkan dan mengekspor sertifikat TLS publik dari ACM ke beban kerja Kubernetes Anda. Integrasi ini memungkinkan Anda mengamankan pod Amazon Elastic Kubernetes Service (Amazon EKS) dan menghentikan TLS di Kubernetes Ingress Anda. Untuk memulai, lihat [ACM Controller for Kubernetes](https://github.com/aws-controllers-k8s/acm-controller) aktif. GitHub

AWS Controller for Kubernetes (ACK) memperluas API Kubernetes untuk mengelola sumber daya menggunakan manifes Kubernetes asli. AWS Pengontrol layanan ACK untuk ACM menyediakan manajemen siklus hidup sertifikat otomatis dalam alur kerja Kubernetes Anda. Saat Anda membuat sumber daya Sertifikat ACM di Kubernetes, pengontrol ACK melakukan tindakan berikut:

1. Meminta sertifikat dari ACM, yang menghasilkan permintaan penandatanganan sertifikat (CSR).

1. Menunggu validasi domain selesai dan ACM mengeluarkan sertifikat.

1. Jika `exportTo` bidang ditentukan, ekspor sertifikat yang diterbitkan dan kunci pribadi dan menyimpannya di Rahasia Kubernetes yang Anda tentukan.

1. Jika `exportTo` bidang ditentukan dan sertifikat memenuhi syarat untuk diperpanjang, perbarui Rahasia Kubernetes dengan sertifikat yang diperbarui sebelum kedaluwarsa.

Sertifikat yang diterbitkan secara publik memerlukan [validasi domain](https://docs.aws.amazon.com//acm/latest/userguide/dns-validation.html) sebelum ACM dapat menerbitkannya. Anda dapat menggunakan [pengontrol layanan ACK untuk Amazon Route 53](https://github.com/aws-controllers-k8s/route53-controller) untuk secara otomatis membuat catatan CNAME validasi DNS yang diperlukan di zona yang dihosting.

## Opsi penggunaan sertifikat
<a name="kubernetes-ack-certificate-usage"></a>

Anda dapat menggunakan sertifikat ACM dengan Kubernetes dalam beberapa cara:

![](http://docs.aws.amazon.com/id_id/acm/latest/userguide/images/kubernetes-acm.png)


1. *Penghentian penyeimbang beban (tanpa ekspor)*: Menerbitkan sertifikat melalui ACK dan menggunakannya untuk mengakhiri TLS pada penyeimbang beban. AWS Sertifikat tetap dalam ACM dan secara otomatis ditemukan oleh [AWS Load Balancer](https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.1/guide/ingress/cert_discovery/) Controller. Pendekatan ini tidak memerlukan ekspor sertifikat.

1. *Penghentian masuk (dengan ekspor): Ekspor sertifikat dari ACM dan simpan di Rahasia Kubernetes untuk penghentian TLS di tingkat Ingress*. Ini memungkinkan Anda untuk menggunakan sertifikat secara langsung dalam beban kerja Kubernetes Anda.

**catatan**  
Untuk kasus penggunaan yang memerlukan sertifikat pribadi, lihat [Konektor CA AWS Pribadi untuk Kubernetes](https://docs.aws.amazon.com//privateca/latest/userguide/PcaKubernetes-concepts.html), sebuah plugin cert-manager.

## Prasyarat
<a name="kubernetes-ack-prerequisites"></a>

Sebelum Anda menginstal pengontrol layanan ACK untuk ACM, pastikan Anda memiliki yang berikut:
+ Sebuah cluster Kubernetes.
+ Helm dipasang.
+ `kubectl`dikonfigurasi untuk berkomunikasi dengan cluster Anda.
+ `eksctl`diinstal untuk mengonfigurasi asosiasi identitas pod di EKS.

## Instal pengontrol layanan ACK untuk ACM
<a name="kubernetes-ack-installation"></a>

Gunakan Helm untuk menginstal pengontrol layanan ACK untuk ACM di kluster Amazon EKS Anda.

1. Buat namespace untuk pengontrol ACK.

   ```
   $ kubectl create namespace ack-system --dry-run=client -o yaml | kubectl apply -f -
   ```

1. Buat asosiasi identitas pod untuk pengontrol ACK. Ganti {{CLUSTER\_NAME}} dengan nama cluster Anda dan {{REGION}} dengan AWS Region Anda.

   ```
   $ eksctl create podidentityassociation --cluster {{CLUSTER_NAME}} --region {{REGION}} \
       --namespace ack-system \
       --create-service-account \
       --service-account-name ack-acm-controller \
       --permission-policy-arns arn:aws:iam::aws:policy/AWSCertificateManagerFullAccess
   ```

1. Masuk ke registri Publik Amazon ECR.

   ```
   $ aws ecr-public get-login-password --region us-east-1 | helm registry login --username AWS --password-stdin public.ecr.aws
   ```

1. Instal pengontrol layanan ACK untuk ACM. Ganti {{REGION}} dengan AWS wilayah Anda.

   ```
   $ helm install -n ack-system ack-acm-controller oci://public.ecr.aws/aws-controllers-k8s/acm-chart --set serviceAccount.create=false --set serviceAccount.name=ack-acm-controller --set aws.region={{REGION}}
   ```

1. Verifikasi pengontrol sedang berjalan.

   ```
   $ kubectl get pods -n ack-system
   ```

Untuk informasi selengkapnya tentang asosiasi identitas pod, lihat [EKS Pod Identity](https://docs.aws.amazon.com//eks/latest/userguide/pod-identities.html) di *Panduan Pengguna Amazon EKS*.

## Contoh: Hentikan TLS di Ingress
<a name="kubernetes-ack-example"></a>

Contoh berikut menunjukkan cara mengekspor sertifikat ACM dan menggunakannya untuk mengakhiri TLS di tingkat Ingress Kubernetes. Konfigurasi ini membuat sertifikat ACM, mengekspornya ke Rahasia Kubernetes, dan mengonfigurasi sumber daya Ingress untuk menggunakan sertifikat untuk penghentian TLS.

Dalam contoh ini:
+ Rahasia dibuat untuk menyimpan sertifikat yang diekspor () `exported-cert-secret`
+ Sumber daya ACK Certificate meminta sertifikat dari ACM untuk domain Anda dan mengekspornya ke Rahasia. `exported-cert-secret`
+ Sumber daya Ingress mereferensikan `exported-cert-secret` untuk menghentikan TLS untuk lalu lintas masuk.

Ganti `${HOSTNAME}` dengan nama domain Anda.

```
apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
  name: exported-cert-secret
  namespace: demo-app
data:
  tls.crt: ""
  tls.key: ""
---
apiVersion: acm.services.k8s.aws/v1alpha1
kind: Certificate
metadata:
  name: exportable-public-cert
  namespace: demo-app
spec:
  domainName: ${HOSTNAME}
  options:
    certificateTransparencyLoggingPreference: ENABLED
  exportTo: 
    namespace: demo-app
    name: exported-cert-secret
    key: tls.crt
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-traefik
  namespace: demo-app
spec:
  tls:
  - hosts:
    - ${HOSTNAME}
    secretName: exported-cert-secret
  ingressClassName: traefik
  rules:
  - host: ${HOSTNAME}
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: whoami
            port:
              number: 80
```

Setelah digunakan, pengontrol layanan ACK untuk ACM secara otomatis mengelola siklus hidup sertifikat, termasuk perpanjangan. Saat ACM memperbarui sertifikat, pengontrol memperbarui `exported-cert-secret` Rahasia dengan sertifikat baru, memastikan Ingress Anda terus menggunakan sertifikat yang valid tanpa intervensi manual.