

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

# Apa itu Eksctl?
<a name="what-is-eksctl"></a>

eksctl adalah alat utilitas baris perintah yang mengotomatiskan dan menyederhanakan proses pembuatan, pengelolaan, dan pengoperasian kluster Amazon Elastic Kubernetes Service (Amazon EKS). Ditulis dalam Go, eksctl menyediakan sintaks deklaratif melalui konfigurasi YAMAL dan perintah CLI untuk menangani operasi cluster EKS kompleks yang jika tidak memerlukan beberapa langkah manual di berbagai layanan AWS.

eksctl sangat berharga bagi para DevOps insinyur, tim platform, dan administrator Kubernetes yang perlu secara konsisten menerapkan dan mengelola kluster EKS dalam skala besar. Ini sangat berguna untuk organisasi yang beralih dari Kubernetes yang dikelola sendiri ke EKS, atau mereka yang menerapkan praktik infrastruktur sebagai kode (IAc), karena dapat diintegrasikan ke dalam pipeline dan alur kerja otomatisasi yang ada. CI/CD Alat ini mengabstraksi banyak interaksi kompleks antara layanan AWS yang diperlukan untuk penyiapan kluster EKS, seperti konfigurasi VPC, pembuatan peran IAM, dan manajemen grup keamanan.

Fitur utama eksctl termasuk kemampuan untuk membuat cluster EKS yang berfungsi penuh dengan satu perintah, dukungan untuk konfigurasi jaringan khusus, manajemen grup node otomatis, dan integrasi alur kerja. GitOps Alat ini mengelola peningkatan klaster, menskalakan grup node, dan menangani manajemen add-on melalui pendekatan deklaratif. eksctl juga menyediakan kemampuan canggih seperti konfigurasi profil Fargate, kustomisasi grup node terkelola, dan integrasi instans spot, sambil mempertahankan kompatibilitas dengan alat dan layanan AWS lainnya melalui integrasi AWS SDK asli.

## Fitur
<a name="_features"></a>

Fitur yang saat ini diterapkan adalah:
+ Buat, dapatkan, daftar, dan hapus cluster
+ Buat, tiriskan, dan hapus nodegroup
+ Skala nodegroup
+ Perbarui klaster
+ Gunakan kustom AMIs
+ Konfigurasikan Jaringan VPC
+ Konfigurasikan akses ke titik akhir API
+ Support untuk nodegroup GPU
+ Instance spot dan instance campuran
+ Manajemen IAM dan Kebijakan Add-on
+ Daftar cluster Cloudformation tumpukan
+ Instal coredns
+ Menulis berkas kubeconfig untuk sebuah klaster

# Eksctl FAQ
<a name="faq"></a>

## Umum
<a name="_general"></a>

 **Dapatkah saya menggunakan `eksctl` untuk mengelola cluster yang tidak dibuat oleh? `eksctl`** 

Ya\$1 Dari versi `0.40.0` Anda dapat menjalankan `eksctl` terhadap cluster apa pun, apakah itu dibuat oleh `eksctl` atau tidak. Untuk informasi selengkapnya, lihat [Cluster yang tidak dibuat eksctl](unowned-clusters.md).

## Nodegroup
<a name="nodegroup-faq"></a>

 **Bagaimana saya bisa mengubah tipe instance nodegroup saya?** 

Dari sudut pandang`eksctl`, nodegroup tidak dapat diubah. Ini berarti bahwa setelah dibuat, satu-satunya hal yang `eksctl` dapat dilakukan adalah menskalakan nodegroup ke atas atau ke bawah.

Untuk mengubah jenis instance, buat nodegroup baru dengan tipe instance yang diinginkan, lalu tiriskan sehingga beban kerja berpindah ke yang baru. Setelah langkah itu selesai, Anda dapat menghapus nodegroup lama.

 **Bagaimana saya bisa melihat data pengguna yang dihasilkan untuk nodegroup?** 

Pertama, Anda memerlukan nama tumpukan Cloudformation yang mengelola nodegroup:

```
eksctl utils describe-stacks --region=us-west-2 --cluster NAME
```

Anda akan melihat nama yang mirip dengan`eksctl-CLUSTER_NAME-nodegroup-NODEGROUP_NAME`.

Anda dapat menjalankan yang berikut ini untuk mendapatkan data pengguna. Perhatikan baris terakhir yang menerjemahkan kode dari base64 dan mendekompresi data gzip.

```
NG_STACK=eksctl-scrumptious-monster-1595247364-nodegroup-ng-29b8862f # your stack here
LAUNCH_TEMPLATE_ID=$(aws cloudformation describe-stack-resources --stack-name $NG_STACK \
| jq -r '.StackResources | map(select(.LogicalResourceId == "NodeGroupLaunchTemplate") \
| .PhysicalResourceId)[0]')
aws ec2 describe-launch-template-versions --launch-template-id $LAUNCH_TEMPLATE_ID \
| jq -r '.LaunchTemplateVersions[0].LaunchTemplateData.UserData' \
| base64 -d | gunzip
```

## Ingress
<a name="_ingress"></a>

 **Bagaimana cara mengatur ingress dengan? `eksctl`** 

Sebaiknya gunakan [AWS Load Balancer](https://github.com/kubernetes-sigs/aws-load-balancer-controller) Controller. [Dokumentasi tentang cara menerapkan controller ke cluster Anda, serta cara bermigrasi dari ALB Ingress Controller lama, dapat ditemukan di sini.](https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html)

Untuk Nginx Ingress Controller, setup akan sama dengan cluster [Kubernetes lainnya](https://kubernetes.github.io/ingress-nginx/deploy/#aws).

## Kubectl
<a name="_kubectl"></a>

 **Saya menggunakan proxy HTTPS dan validasi sertifikat cluster gagal, bagaimana saya bisa menggunakan sistem? CAs** 

Tetapkan variabel lingkungan `KUBECONFIG_USE_SYSTEM_CA` untuk `kubeconfig` menghormati otoritas sertifikat sistem.

# Lari Kering
<a name="dry-run"></a>

Fitur dry-run memungkinkan Anda untuk memeriksa dan mengubah instance yang cocok dengan pemilih instance sebelum melanjutkan untuk membuat nodegroup.

Kapan `eksctl create cluster` dipanggil dengan opsi pemilih instance dan`--dry-run`, eksctl akan menampilkan ClusterConfig file yang berisi nodegroup yang mewakili opsi CLI dan tipe instance yang disetel ke instance yang cocok dengan kriteria sumber daya pemilih instance.

```
eksctl create cluster --name development --dry-run


apiVersion: eksctl.io/v1alpha5
cloudWatch:
  clusterLogging: {}
iam:
  vpcResourceControllerPolicy: true
  withOIDC: false
kind: ClusterConfig
managedNodeGroups:
- amiFamily: AmazonLinux2
  desiredCapacity: 2
  disableIMDSv1: true
  disablePodIMDS: false
  iam:
    withAddonPolicies:
      albIngress: false
      appMesh: false
      appMeshPreview: false
      autoScaler: false
      certManager: false
      cloudWatch: false
      ebs: false
      efs: false
      externalDNS: false
      fsx: false
      imageBuilder: false
      xRay: false
  instanceSelector: {}
  instanceType: m5.large
  labels:
    alpha.eksctl.io/cluster-name: development
    alpha.eksctl.io/nodegroup-name: ng-4aba8a47
  maxSize: 2
  minSize: 2
  name: ng-4aba8a47
  privateNetworking: false
  securityGroups:
    withLocal: null
    withShared: null
  ssh:
    allow: false
    enableSsm: false
    publicKeyPath: ""
  tags:
    alpha.eksctl.io/nodegroup-name: ng-4aba8a47
    alpha.eksctl.io/nodegroup-type: managed
  volumeIOPS: 3000
  volumeSize: 80
  volumeThroughput: 125
  volumeType: gp3
metadata:
  name: development
  region: us-west-2
  version: "1.24"
privateCluster:
  enabled: false
vpc:
  autoAllocateIPv6: false
  cidr: 192.168.0.0/16
  clusterEndpoints:
    privateAccess: false
    publicAccess: true
  manageSharedNodeSecurityGroupRules: true
  nat:
    gateway: Single
```

Yang dihasilkan kemudian ClusterConfig dapat diteruskan ke`eksctl create cluster`:

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

Ketika ClusterConfig file dilewatkan`--dry-run`, eksctl akan menampilkan ClusterConfig file yang berisi nilai-nilai yang ditetapkan dalam file.

## Opsi Satu Kali di eksctl
<a name="_one_off_options_in_eksctl"></a>

Ada opsi satu kali tertentu yang tidak dapat direpresentasikan dalam `ClusterConfig` file, misalnya,`--install-vpc-controllers`.

Diharapkan bahwa:

```
eksctl create cluster --<options...> --dry-run > config.yaml
```

diikuti oleh:

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

akan setara dengan menjalankan perintah pertama tanpa`--dry-run`.

oleh karena itu eksctl melarang opsi lewat yang tidak dapat direpresentasikan dalam file konfigurasi saat diteruskan. `--dry-run`

**penting**  
Jika Anda perlu meneruskan profil AWS, atur variabel `AWS_PROFILE` lingkungan, alih-alih meneruskan opsi `--profile` CLI.