

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

# Addons
<a name="addons"></a>

Topik ini menjelaskan cara mengelola Add-On Amazon EKS untuk kluster Amazon EKS Anda menggunakan eksctl. EKS Add-Ons adalah fitur yang memungkinkan Anda mengaktifkan dan mengelola perangkat lunak operasional Kubernetes melalui EKS API, menyederhanakan proses menginstal, mengonfigurasi, dan memperbarui add-on klaster.

**Awas**  
eksctl sekarang menginstal addons default (vpc-cni, coredns, kube-proxy) sebagai addons EKS alih-alih addon yang dikelola sendiri. Ini berarti Anda harus menggunakan `eksctl update addon` alih-alih `eksctl utils update-*` perintah untuk cluster yang dibuat dengan eksctl v0.184.0 dan di atasnya.

Anda dapat membuat cluster tanpa addons jaringan default ketika Anda ingin menggunakan plugin CNI alternatif seperti Cilium dan Calico.

Eks Add-on sekarang mendukung penerimaan izin IAM melalui Asosiasi Identitas Pod EKS, memungkinkan mereka untuk terhubung dengan layanan AWS di luar klaster

## Membuat addons
<a name="addons-create"></a>

Eksctl memberikan lebih banyak fleksibilitas untuk mengelola addons cluster:

Di file konfigurasi, Anda dapat menentukan addon yang Anda inginkan dan (jika diperlukan) peran atau kebijakan yang akan dilampirkan padanya:

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: example-cluster
  region: us-west-2

iam:
  withOIDC: true

addons:
- name: vpc-cni
  # all below properties are optional
  version: 1.7.5
  tags:
    team: eks
  # you can specify at most one of:
  attachPolicyARNs:
  - arn:aws:iam::account:policy/AmazonEKS_CNI_Policy
  # or
  serviceAccountRoleARN: arn:aws:iam::account:role/AmazonEKSCNIAccess
  # or
  attachPolicy:
    Statement:
    - Effect: Allow
      Action:
      - ec2:AssignPrivateIpAddresses
      - ec2:AttachNetworkInterface
      - ec2:CreateNetworkInterface
      - ec2:DeleteNetworkInterface
      - ec2:DescribeInstances
      - ec2:DescribeTags
      - ec2:DescribeNetworkInterfaces
      - ec2:DescribeInstanceTypes
      - ec2:DetachNetworkInterface
      - ec2:ModifyNetworkInterfaceAttribute
      - ec2:UnassignPrivateIpAddresses
      Resource: '*'
```

Anda dapat menentukan paling banyak salah satu`attachPolicy`, `attachPolicyARNs` dan`serviceAccountRoleARN`.

Jika tidak ada yang ditentukan, addon akan dibuat dengan peran yang memiliki semua kebijakan yang direkomendasikan terlampir.

**catatan**  
Untuk melampirkan kebijakan ke addons, klaster Anda harus telah `OIDC` diaktifkan. Jika tidak diaktifkan, kami mengabaikan kebijakan apa pun yang dilampirkan.

Anda kemudian dapat membuat addon ini selama proses pembuatan cluster:

```
eksctl create cluster -f config.yaml
```

Atau buat addons secara eksplisit setelah pembuatan cluster menggunakan file konfigurasi atau flag CLI:

```
eksctl create addon -f config.yaml
```

```
eksctl create addon --name vpc-cni --version 1.7.5 --service-account-role-arn <role-arn>
```

```
eksctl create addon --name aws-ebs-csi-driver --namespace-config 'namespace=custom-namespace'
```

**Tip**  
Gunakan `--namespace-config` bendera untuk menyebarkan addons ke namespace khusus, bukan namespace default.

Selama pembuatan addon, jika versi addon yang dikelola sendiri sudah ada di cluster, Anda dapat memilih bagaimana potensi `configMap` konflik akan diselesaikan dengan menyetel `resolveConflicts` opsi melalui file konfigurasi, mis.

```
addons:
- name: vpc-cni
  attachPolicyARNs:
    - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
  resolveConflicts: overwrite
```

Untuk addon create, `resolveConflicts` bidang ini mendukung tiga nilai yang berbeda:
+  `none`- EKS tidak mengubah nilainya. Create mungkin gagal.
+  `overwrite`- EKS menimpa perubahan konfigurasi apa pun kembali ke nilai default EKS.
+  `preserve`- EKS tidak mengubah nilainya. Create mungkin gagal. (Mirip dengan`none`, tetapi berbeda dari [`preserve`dalam memperbarui addons](#update-addons)).

## Daftar addons yang diaktifkan
<a name="_listing_enabled_addons"></a>

Anda dapat melihat addons apa yang diaktifkan di cluster Anda dengan menjalankan:

```
eksctl get addons --cluster <cluster-name>
```

atau

```
eksctl get addons -f config.yaml
```

## Mengatur versi addon
<a name="_setting_the_addons_version"></a>

Mengatur versi addon adalah opsional. Jika `version` bidang dibiarkan kosong `eksctl` akan menyelesaikan versi default untuk addon. Informasi lebih lanjut tentang versi mana yang merupakan versi default untuk addon tertentu dapat ditemukan di dokumentasi AWS tentang EKS. Perhatikan bahwa versi default mungkin belum tentu versi terbaru yang tersedia.

Versi addon dapat diatur ke`latest`. Atau, versi dapat diatur dengan tag build EKS yang ditentukan, seperti `v1.7.5-eksbuild.1` atau`v1.7.5-eksbuild.2`. Ini juga dapat diatur ke versi rilis addon, seperti `v1.7.5` atau`1.7.5`, dan tag `eksbuild` akhiran akan ditemukan dan diatur untuk Anda.

Lihat bagian di bawah ini tentang cara menemukan addons yang tersedia dan versinya.

## Menemukan addons
<a name="_discovering_addons"></a>

Anda dapat menemukan addons apa yang tersedia untuk diinstal pada cluster Anda dengan menjalankan:

```
eksctl utils describe-addon-versions --cluster <cluster-name>
```

Ini akan menemukan versi kubernetes cluster Anda dan memfilternya. Atau jika Anda ingin melihat addon apa yang tersedia untuk versi kubernetes tertentu, Anda dapat menjalankan:

```
eksctl utils describe-addon-versions --kubernetes-version <version>
```

Anda juga dapat menemukan addons dengan memfilternya`type`,. `owner` and/or `publisher` Misalnya, untuk melihat addons untuk pemilik dan jenis tertentu yang dapat Anda jalankan:

```
eksctl utils describe-addon-versions --kubernetes-version 1.22 --types "infra-management, policy-management" --owners "aws-marketplace"
```

Bendera`types`, `owners` dan `publishers` bendera adalah opsional dan dapat ditentukan bersama-sama atau secara individual untuk memfilter hasilnya.

## Menemukan skema konfigurasi untuk addons
<a name="_discovering_the_configuration_schema_for_addons"></a>

Setelah menemukan addon dan versi, Anda dapat melihat opsi penyesuaian dengan mengambil skema konfigurasi JSON-nya.

```
eksctl utils describe-addon-configuration --name vpc-cni --version v1.12.0-eksbuild.1
```

Ini mengembalikan skema JSON dari berbagai opsi yang tersedia untuk addon ini.

## Bekerja dengan nilai konfigurasi
<a name="_working_with_configuration_values"></a>

 `ConfigurationValues`dapat disediakan dalam file konfigurasi selama pembuatan atau pembaruan addons. Hanya format JSON dan YAMAL yang didukung.

Untuk misalnya. ,

```
addons:
- name: coredns
  configurationValues: |-
    replicaCount: 2
```

```
addons:
- name: coredns
  version: latest
  configurationValues: "{\"replicaCount\":3}"
  resolveConflicts: overwrite
```

**catatan**  
Ingatlah bahwa ketika nilai konfigurasi addon sedang dimodifikasi, konflik konfigurasi akan muncul.

```
Thus, we need to specify how to deal with those by setting the `resolveConflicts` field accordingly.
As in this scenario we want to modify these values, we'd set `resolveConflicts: overwrite`.
```

Selain itu, perintah get sekarang juga akan mengambil `ConfigurationValues` untuk addon. misalnya

```
eksctl get addon --cluster my-cluster --output yaml
```

```
- ConfigurationValues: '{"replicaCount":3}'
  IAMRole: ""
  Issues: null
  Name: coredns
  NewerVersion: ""
  Status: ACTIVE
  Version: v1.8.7-eksbuild.3
```

## Menggunakan namespace khusus
<a name="_using_custom_namespace"></a>

Namespace khusus dapat disediakan dalam file konfigurasi selama pembuatan addons. Namespace tidak dapat diperbarui setelah addon dibuat.

### Menggunakan file konfigurasi
<a name="_using_config_file"></a>

```
addons:
  - name: aws-ebs-csi-driver
    version: latest
    namespaceConfig:
      namespace: custom-namespace
```

### Menggunakan bendera CLI
<a name="_using_cli_flag"></a>

Atau, Anda dapat menentukan namespace kustom menggunakan bendera: `--namespace-config`

```
eksctl create addon --cluster my-cluster --name aws-ebs-csi-driver --namespace-config 'namespace=custom-namespace'
```

Perintah get juga akan mengambil nilai namespace untuk addon

```
- ConfigurationValues: ""
  IAMRole: ""
  Issues: null
  Name: aws-ebs-csi-driver
  NamespaceConfig:
    namespace: custom-namespace
  NewerVersion: ""
  PodIdentityAssociations: null
  Status: ACTIVE
  Version: v1.47.0-eksbuild.1
```

## Memperbarui addons
<a name="update-addons"></a>

Anda dapat memperbarui addon ke versi yang lebih baru dan mengubah kebijakan apa yang dilampirkan dengan menjalankan:

```
eksctl update addon -f config.yaml
```

```
eksctl update addon --name vpc-cni --version 1.8.0 --service-account-role-arn <new-role>
```

**catatan**  
Konfigurasi namespace tidak dapat diperbarui setelah addon dibuat. `--namespace-config`Bendera hanya tersedia selama pembuatan addon.

Demikian pula dengan pembuatan addon, Saat memperbarui addon, Anda memiliki kontrol penuh atas perubahan konfigurasi yang mungkin telah Anda terapkan sebelumnya pada add-on itu. `configMap` Secara khusus, Anda dapat melestarikan, atau menimpa mereka. Fungsionalitas opsional ini tersedia melalui bidang file konfigurasi yang `resolveConflicts` sama. misalnya,

```
addons:
- name: vpc-cni
  attachPolicyARNs:
    - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
  resolveConflicts: preserve
```

Untuk pembaruan addon, `resolveConflicts` bidang menerima tiga nilai berbeda:
+  `none`- EKS tidak mengubah nilainya. Pembaruan mungkin gagal.
+  `overwrite`- EKS menimpa perubahan konfigurasi apa pun kembali ke nilai default EKS.
+  `preserve`- EKS mempertahankan nilainya. Jika Anda memilih opsi ini, kami sarankan Anda menguji setiap bidang dan perubahan nilai pada klaster non-produksi sebelum memperbarui add-on pada cluster produksi Anda.

## Menghapus addons
<a name="_deleting_addons"></a>

Anda dapat menghapus addon dengan menjalankan:

```
eksctl delete addon --cluster <cluster-name> --name <addon-name>
```

Ini akan menghapus addon dan peran IAM apa pun yang terkait dengannya.

Saat Anda menghapus klaster, semua peran IAM yang terkait dengan addons juga akan dihapus.

## Fleksibilitas pembuatan cluster untuk addons jaringan default
<a name="barecluster"></a>

Ketika sebuah cluster dibuat, EKS secara otomatis menginstal VPC CNI, CoreDNS dan kube-proxy sebagai addon yang dikelola sendiri. Untuk menonaktifkan perilaku ini agar dapat menggunakan plugin CNI lain seperti Cilium dan Calico, eksctl sekarang mendukung pembuatan cluster tanpa addon jaringan default. Untuk membuat cluster seperti itu, atur`addonsConfig.disableDefaultAddons`, seperti pada:

```
addonsConfig:
  disableDefaultAddons: true
```

```
eksctl create cluster -f cluster.yaml
```

Untuk membuat cluster hanya dengan CoreDNS dan kube-proxy dan bukan VPC CNI, tentukan addon secara eksplisit di dan atur, seperti pada: `addons` `addonsConfig.disableDefaultAddons`

```
addonsConfig:
  disableDefaultAddons: true
addons:
  - name: kube-proxy
  - name: coredns
```

```
eksctl create cluster -f cluster.yaml
```

Sebagai bagian dari perubahan ini, eksctl sekarang menginstal addon default sebagai addon EKS alih-alih addon yang dikelola sendiri selama pembuatan cluster jika tidak secara eksplisit disetel ke true. `addonsConfig.disableDefaultAddons` Dengan demikian, `eksctl utils update-*` perintah tidak dapat lagi digunakan untuk memperbarui addons untuk cluster yang dibuat dengan eksctl v0.184.0 dan di atasnya:
+  `eksctl utils update-aws-node` 
+  `eksctl utils update-coredns` 
+  `eksctl utils update-kube-proxy` 

Sebaliknya, `eksctl update addon` harus digunakan sekarang.

Untuk mempelajari lebih lanjut, lihat [Amazon EKS memperkenalkan fleksibilitas pembuatan klaster untuk add-on jaringan](https://aws.amazon.com/about-aws/whats-new/2024/06/amazon-eks-cluster-creation-flexibility-networking-add-ons/).