

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

# Instal Agen SSM di node pekerja Amazon EKS dengan menggunakan Kubernetes DaemonSet
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset"></a>

*Mahendra Revanasiddappa, Amazon Web Services*

## Ringkasan
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-summary"></a>

**Catatan, September 2021:** Amazon EKS terbaru yang dioptimalkan AMIs menginstal Agen SSM secara otomatis. Untuk informasi lebih lanjut, lihat [catatan rilis](https://github.com/awslabs/amazon-eks-ami/releases/tag/v20210621) untuk Juni 2021 AMIs.

Di Amazon Elastic Kubernetes Service (Amazon EKS), karena pedoman keamanan, node pekerja tidak memiliki pasangan kunci Secure Shell (SSH) yang melekat padanya. Pola ini menunjukkan bagaimana Anda dapat menggunakan tipe DaemonSet sumber daya Kubernetes untuk menginstal AWS Systems Manager Agent (SSM Agent) pada semua node pekerja, alih-alih menginstalnya secara manual atau mengganti Amazon Machine Image (AMI) untuk node. DaemonSet menggunakan pekerjaan cron pada node pekerja untuk menjadwalkan instalasi Agen SSM. Anda juga dapat menggunakan pola ini untuk menginstal paket lain pada node pekerja.

Saat Anda memecahkan masalah di klaster, menginstal Agen SSM sesuai permintaan memungkinkan Anda membuat sesi SSH dengan node pekerja, mengumpulkan log, atau melihat konfigurasi instans, tanpa pasangan kunci SSH.

## Prasyarat dan batasan
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-prereqs"></a>

**Prasyarat**
+ Cluster Amazon EKS yang ada dengan node pekerja Amazon Elastic Compute Cloud (Amazon EC2).
+ Instance kontainer harus memiliki izin yang diperlukan untuk berkomunikasi dengan layanan SSM. Peran terkelola AWS Identity and Access Management (IAM) **Amazon SSMManaged InstanceCore** menyediakan izin yang diperlukan agar Agen SSM berjalan pada instans. EC2 Untuk informasi selengkapnya, lihat [dokumentasi AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html).

**Batasan**
+ Pola ini tidak berlaku untuk AWS Fargate, karena DaemonSets tidak didukung pada platform Fargate.
+ Pola ini hanya berlaku untuk node pekerja berbasis Linux.
+  DaemonSet Pod berjalan dalam mode istimewa. Jika klaster Amazon EKS memiliki webhook yang memblokir pod dalam mode istimewa, Agen SSM tidak akan diinstal.

## Arsitektur
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-architecture"></a>

Diagram berikut menggambarkan arsitektur untuk pola ini.

![\[Menggunakan Kubernetes DaemonSet untuk menginstal Agen SSM di node pekerja Amazon EKS.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/016d53f3-45c1-4913-b542-67124e1462b8/images/3a6dfd00-e54b-44d5-843a-4c26ce9826c9.png)


## Alat
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-tools"></a>

**Alat**
+ [kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) adalah utilitas baris perintah yang digunakan untuk berinteraksi dengan kluster Amazon EKS. Pola ini digunakan `kubectl` untuk menyebarkan a DaemonSet di kluster Amazon EKS, yang akan menginstal Agen SSM di semua node pekerja.
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) memudahkan Anda menjalankan Kubernetes di AWS tanpa harus menginstal, mengoperasikan, dan memelihara bidang kontrol atau node Kubernetes Anda sendiri. Kubernetes adalah sebuah sistem sumber terbuka untuk melakukan otomatisasi terhadap deployment, penskalaan, dan pengelolaan aplikasi terkontainer.
+ [AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) memungkinkan Anda mengelola EC2 instans, instans lokal, dan mesin virtual (VMs) melalui shell interaktif berbasis browser satu klik, atau melalui AWS Command Line Interface (AWS CLI).

**Kode**

Gunakan kode berikut untuk membuat file DaemonSet konfigurasi yang akan menginstal Agen SSM di cluster Amazon EKS. Ikuti instruksi di bagian [Epik](#install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-epics).

```
cat << EOF > ssm_daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    k8s-app: ssm-installer
  name: ssm-installer
  namespace: kube-system
spec:
  selector:
    matchLabels:
      k8s-app: ssm-installer
  template:
    metadata:
      labels:
        k8s-app: ssm-installer
    spec:
      containers:
      - name: sleeper
        image: busybox
        command: ['sh', '-c', 'echo I keep things running! && sleep 3600']
      initContainers:
      - image: amazonlinux
        imagePullPolicy: Always
        name: ssm
        command: ["/bin/bash"]
        args: ["-c","echo '* * * * * root yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm & rm -rf /etc/cron.d/ssmstart' > /etc/cron.d/ssmstart"]
        securityContext:
          allowPrivilegeEscalation: true
        volumeMounts:
        - mountPath: /etc/cron.d
          name: cronfile
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      volumes:
      - name: cronfile
        hostPath:
          path: /etc/cron.d
          type: Directory
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      terminationGracePeriodSeconds: 30
EOF
```

## Epik
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-epics"></a>

### Mengatur kubectl
<a name="set-up-kubectl"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Instal dan konfigurasikan kubectl untuk mengakses kluster EKS. | Jika `kubectl` belum diinstal dan dikonfigurasi untuk mengakses kluster Amazon EKS, lihat [Menginstal kubectl di dokumentasi](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) Amazon EKS. | DevOps | 

### Menyebarkan DaemonSet
<a name="deploy-the-daemonset"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat file DaemonSet konfigurasi. | Gunakan kode di bagian [Kode](#install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-tools) sebelumnya dalam pola ini untuk membuat file DaemonSet konfigurasi yang disebut`ssm_daemonset.yaml`, yang akan digunakan ke cluster Amazon EKS. Pod yang diluncurkan oleh DaemonSet memiliki wadah utama dan `init` wadah. Wadah utama memiliki `sleep` perintah. `init`Wadah menyertakan `command` bagian yang membuat file pekerjaan cron untuk menginstal Agen SSM di jalur. `/etc/cron.d/` Pekerjaan cron hanya berjalan sekali, dan file yang dibuatnya dihapus secara otomatis setelah pekerjaan selesai. Ketika wadah init telah selesai, wadah utama menunggu selama 60 menit sebelum keluar. Setelah 60 menit, pod baru diluncurkan. Pod ini menginstal Agen SSM, jika tidak ada, atau memperbarui Agen SSM ke versi terbaru.Jika diperlukan, Anda dapat memodifikasi `sleep` perintah untuk me-restart pod sekali sehari atau untuk menjalankan lebih sering.  | DevOps | 
| Terapkan DaemonSet di cluster Amazon EKS. | Untuk menyebarkan file DaemonSet konfigurasi yang Anda buat pada langkah sebelumnya di klaster Amazon EKS, gunakan perintah berikut:<pre>kubectl apply -f ssm_daemonset.yaml </pre>Perintah ini membuat sebuah DaemonSet untuk menjalankan pod pada node pekerja untuk menginstal Agen SSM. | DevOps | 

## Sumber daya terkait
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-resources"></a>
+ [Menginstal kubectl (dokumentasi](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) Amazon EKS)
+ [Menyiapkan Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html) (dokumentasi AWS Systems Manager)