Instal Agen SSM di node pekerja Amazon EKS dengan menggunakan Kubernetes DaemonSet - AWS Prescriptive Guidance

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

Mahendra Revanasiddappa, Amazon Web Services

Ringkasan

Catatan, September 2021: Amazon EKS terbaru yang dioptimalkan AMIs menginstal Agen SSM secara otomatis. Untuk informasi lebih lanjut, lihat catatan rilis 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

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.

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

Diagram berikut menggambarkan arsitektur untuk pola ini.

Menggunakan Kubernetes DaemonSet untuk menginstal Agen SSM di node pekerja Amazon EKS.

Alat

Alat

  • kubectl 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 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 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 kluster Amazon EKS. Ikuti instruksi di bagian Epik.

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

TugasDeskripsiKeterampilan 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 Amazon EKS.

DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Buat file DaemonSet konfigurasi.

Gunakan kode di bagian Kode sebelumnya dalam pola ini untuk membuat file DaemonSet konfigurasi yang disebutssm_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. initWadah 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:

kubectl apply -f ssm_daemonset.yaml

Perintah ini membuat sebuah DaemonSet untuk menjalankan pod pada node pekerja untuk menginstal Agen SSM.

DevOps

Sumber daya terkait