> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Amazon EKS

> Amazon EKS (Elastic Kubernetes Service) üzerinde Apinizer kurulumunu ve yapılandırmasını sağlar. AWS EKS cluster kurulumu, kaynaklarının oluşturulması ve Apinizer'ın EKS üzerinde kurulum adımlarını sunar. VPC, IAM rolleri, worker node'lar ve Apinizer deployment yapılandırmalarını içerir.

<Note>
  Bu dokümanda, Amazon EKS (Elastic Kubernetes Service) üzerinde Apinizer kurulumu için gerekli adımlar anlatılmaktadır. İlk 6 bölümde, en baştan başlayarak adım adım AWS EKS kurulumu, kaynaklarının oluşturulması ve kullanılması adımları anlatılmaktadır. Eğer AWS üzerinde hazır bir EKS cluster'ı varsa doğrudan [7. bölümden](#eksye-apinizerın-kurulumu) başlanılabilir.
</Note>

## 1. Giriş

### Minimum Sistem Gereksinimi

AWS EKS Cluster'a Apinizer kurulumu için, Node Group içinde tanımlanacak Compute Node'ların toplam CPU Core'ları en az **6 core** olmalıdır.

<CardGroup cols={2}>
  <Card title="t3.medium Örneği" icon="server">
    **t3.medium** tipinde sunucu seçildiyse 3 tane olması gerekir.
  </Card>

  <Card title="t3.xlarge Örneği" icon="server">
    **t3.xlarge** tipinde sunucu eklerseniz 2 tane yeterli olacaktır.
  </Card>
</CardGroup>

### AWS EKS (Elastic Kubernetes Service) Nedir?

**Amazon Elastic Kubernetes Service (Amazon EKS)**, kendi Kubernetes Control Plane (Master) veya node'larınızı (Worker Nodes) kurmanıza, çalıştırmanıza ve bakımını yapmanıza gerek kalmadan Kubernetes'i AWS'de çalıştırmak için kullanabileceğiniz yönetilen bir hizmettir.

**Kubernetes**, kapsayıcılı uygulamaların dağıtımını, ölçeklenmesini ve yönetimini otomatikleştirmek için açık kaynaklı bir sistemdir.

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/eks-overview.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=63971fde75348909fd3490b74f135506" alt="Amazon EKS Overview" width="1000" height="431" data-path="images/setup/bulut/amazon-eks/eks-overview.png" />
</Frame>

## 2. EKS VPC ve Subnetleri Yapılandırın

### AWS VPC ve Subnet Nedir?

**Amazon AWS VPC (Virtual Private Cloud)**, AWS içinde yer alan bir özel bir sanal ağdır. Başka bir ifade ile, AWS'in network alt yapı bileşeni denilebilir. AWS üzerinde oluşturulacak tüm bileşenlerin birbirleri ile iletişim sağlamaları için Amazon AWS tarafından geliştirilmiş gelişmiş bir sanal ağ altyapısıdır.

VPC içinde kendi kullanımımıza özel network'ler, subnetler, gateway'ler oluşturabilir. Bunlara ait Route tabloları ile kullanım farklı network'ler ve subnet aralarındaki bağlantılar sağlanabilir.

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/vpc-topology.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=f8e46400484d9d9dfa398d41b5c7d6e1" alt="VPC Topology" width="1000" height="758" data-path="images/setup/bulut/amazon-eks/vpc-topology.png" />
</Frame>

**VPC Subnet:** AWS üzerinde belirli bir network oluşturduktan sonra bu network'e ait alt ağlar oluşturulabilir. Aşağıdaki adımları takip ederek AWS VPC üzerinde subnet oluşturulabilir.

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/vpc-subnets.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=e19b26b7ca3fa627855ac65ca3f472b2" alt="VPC Subnets" width="1000" height="1319" data-path="images/setup/bulut/amazon-eks/vpc-subnets.png" />
</Frame>

EKS için VPC ve Subnet'lerin doğru ayarlanması ve AWS dokümanında belirtildiği gibi subnetlerin tanımlanması gerekmektedir. Eğer, VPC ve subnet tanımlanmasını bilmiyorsanız AWS'nin hazır template'ini kullanabilirsiniz.

Detaylar için: [AWS EKS VPC Dokümantasyonu](https://docs.aws.amazon.com/eks/latest/userguide/create-public-private-vpc.html)

### AWS VPC Oluşturma ve Yapılandırma

Aşağıdaki adımları takip ettiğinizde EKS için uygun olan network yapısı otomatik olarak kurulacaktır.

Detaylar için: [AWS CloudFormation Console](https://console.aws.amazon.com/cloudformation/)

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/23-vpc-cloudformation.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=9fc6d348e522ffe0c562d0af7d5c5f6c" alt="AWS CloudFormation Console" width="1000" height="700" data-path="images/setup/bulut/amazon-eks/23-vpc-cloudformation.png" />
</Frame>

## 3. EKS IAM Rolleri Yapılandırma

### AWS Identity and Access Management (IAM) Role Nedir?

**AWS Identity and Access Management'ı (IAM)** kullanarak, AWS hizmetlerine ve kaynaklarına kimlerin hangi koşullarda erişebileceğini belirleyebilirsiniz.

IAM, AWS hesabınızın bir özelliğidir ve ek ücret olmadan sunulur. IAM yapısı itibariyle bir instance, bir veri tabanı gibi çalışan bir şey değil tamamıyla yetkileri bizler için yöneten kimin hangi servise ne tür bir şekilde erişebileceğinden, kullanılan AWS hesabına erişimi olan bütün kullanıcıları yönetebilmektedir.

IAM ana konsept itibariyle **6 ana başlığı** kendi içerisinde yönetmektedir:

* Kullanıcılar
* Gruplar
* Roller
* IAM Access Policies
* API Keys
* Password policy, MFA

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/iam-overview.jpg?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=a3994c06738fe8103342772c3925bb7d" alt="IAM Overview" width="1000" height="434" data-path="images/setup/bulut/amazon-eks/iam-overview.jpg" />
</Frame>

<Note>
  Detaylı bilgi için: [AWS IAM Nedir?](https://emirozbirdeveloper.medium.com/aws-iam-kimsin-sen-c84b677387b9)
</Note>

### AWS IAM Oluşturma ve Yapılandırma

Sol menüden **Roles** sayfasına giderek yeni **Role** oluşturulur.

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/55-iam-roles-page.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=a03b91d7d83d15ccb63688093b9230b8" alt="IAM Roles Sayfası" width="1000" height="225" data-path="images/setup/bulut/amazon-eks/55-iam-roles-page.png" />
</Frame>

Bu bölümde iki adet **Role** oluşturmamız gerekiyor. Birincisi, **EKS cluster** için kullanılacak olan Role, ikincisi ise EKS içindeki **Worker Node Group**'ların kullanacağı Role bilgisidir.

#### 1. EKS Cluster'ın Kullanacağı Rolü Oluşturma

Rol oluşturmak için sırasıyla verilen görsellerdeki işlemler gerçekleştirilmelidir.

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/54-iam-roles.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=12898e5e24de20decf27baf825ad918e" alt="IAM Roles" width="200" height="186" data-path="images/setup/bulut/amazon-eks/54-iam-roles.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/53-iam-create-role.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=1b7d1cbb00d6e94abfe96d76a4c0f3a6" alt="Create Role" width="1000" height="1049" data-path="images/setup/bulut/amazon-eks/53-iam-create-role.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/52-iam-eks-service.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=beac9684a504bd4d5d46e807ff098a57" alt="EKS Service" width="1000" height="524" data-path="images/setup/bulut/amazon-eks/52-iam-eks-service.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/51-iam-permissions.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=9eb3f9af5e245130274446facbe0245a" alt="Permissions" width="1000" height="1113" data-path="images/setup/bulut/amazon-eks/51-iam-permissions.png" />
</Frame>

Gelen sayfada herhangi bir key-value bilgisi girmeden devam edilir.

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/50-iam-review.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=7716682767e73d18bf995620d70146be" alt="Review" width="1000" height="1097" data-path="images/setup/bulut/amazon-eks/50-iam-review.png" />
</Frame>

EKS Cluster'ın kullanacağı IAM rolü oluşturulmalıdır. Bu rol, EKS cluster'ının AWS servislerine erişmesi için gerekli izinleri içermelidir.

#### 2. EKS Cluster Worker Node Group'ların Kullanacağı Rolü Oluşturma

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/48-iam-worker-role.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=c17d1942816f69a1847a168261b2cd04" alt="Worker Node Role" width="1000" height="41" data-path="images/setup/bulut/amazon-eks/48-iam-worker-role.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/47-iam-worker-policies.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=a54eac32a44c3dd253080794da7bad69" alt="Worker Policies" width="1000" height="532" data-path="images/setup/bulut/amazon-eks/47-iam-worker-policies.png" />
</Frame>

Bu Role için aşağıdaki Policy'ler seçilmelidir.

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/46-iam-worker-policies-alt.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=00cca7803a894b1e356a5a7ba085f3a3" alt="Worker Policies Alt" width="1000" height="41" data-path="images/setup/bulut/amazon-eks/46-iam-worker-policies-alt.png" />
</Frame>

Worker Node Group'ların kullanacağı IAM rolü oluşturulmalıdır. Bu rol, worker node'ların AWS servislerine (EC2, EBS, ELB vb.) erişmesi için gerekli izinleri içermelidir.

## 4. EKS Master Node Kurulumu

### AWS EKS (Elastic Kubernetes Service) Oluşturma ve Yapılandırma

Yukarıdaki adımları tamamladıktan sonra, AWS EKS kurulumuna başlanılabilir.

Arama bölümüne EKS yazarak sürece devam edilir.

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/45-eks-search.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=521171cf19aa391e6c9a0da6d9a76342" alt="EKS Search" width="1000" height="215" data-path="images/setup/bulut/amazon-eks/45-eks-search.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/44-eks-create.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=f3be99f04304962b81d0ef82310eb10c" alt="EKS Create" width="1000" height="284" data-path="images/setup/bulut/amazon-eks/44-eks-create.png" />
</Frame>

Cluster adını, kullanmak istediğimiz kubernetes versiyonunu ve daha önce oluşturmuş olduğumuz IAM rolü seçilir.

<Steps>
  <Step title="Kümeyi yapılandırma">
    Cluster adı, Kubernetes versiyonu ve IAM rolü seçilir.

    <Frame>
      <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/43-eks-cluster-config.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=978e31566abbbc150aeada0a4e0507ad" alt="Cluster Config" width="1000" height="1093" data-path="images/setup/bulut/amazon-eks/43-eks-cluster-config.png" />
    </Frame>
  </Step>

  <Step title="Ağ iletişimini belirtme">
    VPC ve subnet'ler seçilir. EKS için en az 2 subnet seçilmesi önerilir.

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/22-eks-subnet.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=66df2570fe7a641ebd195c9f8dbdc70f" alt="Subnet" width="1000" height="788" data-path="images/setup/bulut/amazon-eks/22-eks-subnet.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/42-eks-network.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=7294224916487dacaf6456d6bd276a9a" alt="Network" width="1000" height="361" data-path="images/setup/bulut/amazon-eks/42-eks-network.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/41-eks-security-group.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=2b40e0e2d19c7ae30c989df12250edc6" alt="Security Group" width="1000" height="870" data-path="images/setup/bulut/amazon-eks/41-eks-security-group.png" />
    </Frame>
  </Step>

  <Step title="Günlüğe kaydetmeyi yapılandırma">
    CloudWatch Log Group seçilir veya yeni bir log group oluşturulur. Bu bölüm, isteğe uygun şekilde yapılandırılabilir.

    <Frame>
      <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/40-eks-logging.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=c168d07e3cf7d2694e2e3bdb7c2f004d" alt="Logging" width="1000" height="757" data-path="images/setup/bulut/amazon-eks/40-eks-logging.png" />
    </Frame>
  </Step>

  <Step title="İncele ve oluştur">
    Son olarak tanımlanan bilgilerin görülmektedir. Bu aşamada bir yanlışlık görülmemektedir. **Create** diyerek cluster oluşturmaya başlanır.

    <Frame>
      <img src="https://mintcdn.com/apinizer/n7lg0UCnwxDLvPwK/images/setup/bulut/amazon-eks/39-eks-creating.png?fit=max&auto=format&n=n7lg0UCnwxDLvPwK&q=85&s=26ecb53e06c74a91e09e0d363d04e888" alt="Creating" width="1000" height="351" data-path="images/setup/bulut/amazon-eks/39-eks-creating.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/38-eks-review.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=2d32239f4b83fd32b3bfece11af90b67" alt="Review" width="1000" height="206" data-path="images/setup/bulut/amazon-eks/38-eks-review.png" />
    </Frame>
  </Step>
</Steps>

<Note>
  EKS Cluster'ı oluşturmaktadır. Bu işlem tahmini 5 dakika sürüyor. Bu işlem devam ederken, Client bilgisayarımızdan EKS'ya erişip yönetebilmemiz gerekli araçlarını indirerek yapılandırabilinir.
</Note>

## 5. AWS CLI ve kubectl'i Kurma ve Yapılandırma

Aşağıdaki adreslerden gerekli olan araçları indirin. Bu dökümanda Client bilgisayar olarak Windows kullanılacağı için Windows'a uygun olan versiyonlar indirilmektedir.

### AWS CLI Kurulumu

İndirilen **.msi** uzantılı aracı kurduktan sonra, aşağıdaki gibi Cluster bilgilerinize uygun olarak yapılandırılır.

Detaylar için: [AWS CLI Getting Started Guide](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

<Steps>
  <Step title="IAM service'e giderek Credential bilgilerini alma">
    IAM Console'dan Access Key ve Secret Key bilgileri alınır.

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/37-iam-user.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=c2d18270b348133796743d17ef99441b" alt="IAM User" width="1000" height="208" data-path="images/setup/bulut/amazon-eks/37-iam-user.png" />
    </Frame>

    Gelen ekrandan **Manage access keys** butonuna tıklayarak **Access** bilgilerine gidilir.

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/36-iam-manage-access-keys.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=8fbb2c9bd536cc7f72e26eaaa90421c7" alt="Manage Access Keys" width="1000" height="447" data-path="images/setup/bulut/amazon-eks/36-iam-manage-access-keys.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/35-access-key-dialog.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=4d6f484ed91d2036d7beb4606a6785ac" alt="Access Key Dialog" width="1000" height="392" data-path="images/setup/bulut/amazon-eks/35-access-key-dialog.png" />
    </Frame>

    Aşağıdaki gelen pencerede **Access Key** ve **Secret** bilgileri görülür. Pencereyi kapatmadan önce bu bilgiler bir yere kayıt edilmelidir.

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/34-access-key-secret.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=09457478b2d5d363c733b0ddffcdb038" alt="Access Key Secret" width="1000" height="375" data-path="images/setup/bulut/amazon-eks/34-access-key-secret.png" />
    </Frame>
  </Step>

  <Step title="Windows CLI'da AWS konfigürasyonu yapma">
    ```powershell theme={null}
    aws configure
    ```

    Burada daha önce kayıt edilen **Access Key** ve **Secret** bilgilerini girerek yapılandırma işlemi başlatılır.

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/33-aws-cli-access-key.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=6949a742652d521bdf6b3eb4861d5da5" alt="AWS CLI Access Key" width="1000" height="257" data-path="images/setup/bulut/amazon-eks/33-aws-cli-access-key.png" />
    </Frame>
  </Step>
</Steps>

### KUBECTL Kurulumu

Kubectl, cluster versiyonu ile aynı olacak şekilde indirilmelidir.

Detaylar için: [AWS EKS kubectl Installation Guide](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

<Steps>
  <Step title="KUBECTL'i indirme">
    Kubectl Windows için indirilir ve PATH'e eklenir.
  </Step>

  <Step title="Windows client makinesinde EKS Cluster'a bağlanmak için gerekli bilgileri tanımlama">
    ```powershell theme={null}
    # Örnek Yapılandırma Komutu
    aws eks update-kubeconfig --region [EKS_Region] --name [EKS_Cluster_Name]
    ```

    Burada **region** bilgisi, aşağıdaki resimde görüldüğü gibi üst menüden alınabilir. Aynı şekilde cluster ismi EKS sayfasına giderek alınabilir.

    <Note>
      Bize gerekli olan **eu-central-1** olan bölümdür.
    </Note>

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/32-aws-region.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=665baaf26a9f6978bd7758bfa2d8c64a" alt="AWS Region" width="200" height="422" data-path="images/setup/bulut/amazon-eks/32-aws-region.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/31-eks-cluster-name.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=f419881830f879e2a05c0860c7689638" alt="EKS Cluster Name" width="1000" height="146" data-path="images/setup/bulut/amazon-eks/31-eks-cluster-name.png" />
    </Frame>
  </Step>
</Steps>

Cluster durumunu kontrol etmek için:

```powershell theme={null}
aws eks --region eu-central-1 describe-cluster --name apinizer-eks-cluster1 --query cluster.status
```

Eğer birden fazla cluster yönetiliyorsa aşağıdaki gibi **kubeconfig** bilgisini güncellenmelidir:

```powershell theme={null}
aws eks --region eu-central-1 update-kubeconfig --name apinizer-eks-cluster2
```

## 6. EKS Worker Node'ları Oluşturma

Bu bölümde, EKS için Worker Node'ların oluşturulması anlatılmaktadır. Tekrardan AWS Console'a giderek aşağıdaki adımlar uygulanmalıdır.

<Steps>
  <Step title="Node Group Oluşturma">
    EKS Console'dan "Add Node Group" seçeneği ile yeni bir node group oluşturulur.

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/29-node-group-create.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=bc65de1ac0ff06acf37eed86f85d4a67" alt="Node Group Create" width="1000" height="395" data-path="images/setup/bulut/amazon-eks/29-node-group-create.png" />
    </Frame>
  </Step>

  <Step title="Node Group Yapılandırma">
    Node group için:

    * Node group adı
    * IAM rolü (daha önce oluşturulan worker node rolü)
    * Instance type (örn: t3.medium, t3.xlarge)
    * Disk boyutu

    seçilir.

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/28-node-group-config.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=be3aaac408388701e47c51b8aeec75d5" alt="Node Group Config" width="1000" height="1112" data-path="images/setup/bulut/amazon-eks/28-node-group-config.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/27-node-group-config-alt.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=95d2dd75c7aff446388b5a15963c97fb" alt="Node Group Config Alt" width="154" height="44" data-path="images/setup/bulut/amazon-eks/27-node-group-config-alt.png" />
    </Frame>
  </Step>

  <Step title="Hesaplama ve Ölçeklendirme Yapılandırmasını Ayarlama">
    Node group için minimum, maksimum ve desired node sayıları belirlenir.

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/26-node-group-scaling.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=09dd2b905c144c7608b90f5ff5b71fa7" alt="Node Group Scaling" width="1000" height="1013" data-path="images/setup/bulut/amazon-eks/26-node-group-scaling.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/25-node-group-scaling-alt.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=9bba6e7577aae1a5df3467d640821f9d" alt="Node Group Scaling Alt" width="1000" height="587" data-path="images/setup/bulut/amazon-eks/25-node-group-scaling-alt.png" />
    </Frame>
  </Step>

  <Step title="Ağ İletişimini Belirtme">
    Subnet'ler seçilir ve SSH key pair belirlenir.

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/21-node-group-network.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=adab73771b0bb1783c1789ec978f5f0f" alt="Node Group Network" width="1000" height="551" data-path="images/setup/bulut/amazon-eks/21-node-group-network.png" />
    </Frame>
  </Step>

  <Step title="İncele ve Oluştur">
    Son olarak tanımlanan bilgilerin görülmektedir. Bu aşamada bir yanlışlık görülmüyorsa **Create** diyerek cluster oluşturmaya başlanır.

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/20-node-group-review.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=abcb553ac64ef69ab06dbfbcaa4be144" alt="Node Group Review" width="1000" height="70" data-path="images/setup/bulut/amazon-eks/20-node-group-review.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/24-node-group-creating.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=fca00d58269b9c650bb07eeed7e63142" alt="Node Group Creating" width="1000" data-path="images/setup/bulut/amazon-eks/24-node-group-creating.png" />
    </Frame>
  </Step>
</Steps>

Bu işlem tahmini olarak 5 dakika sürmektedir. Kurulum tamamlanıp aktifleştirildikten sonra daha önce yapılandırılan kubectl ile deployment vs. işleri yapabilir.

Node Group kurulumu tamamlandığını gösteren görsel aşağıdadır:

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/19-node-group-ready-alt.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=00542a1a5ac8204f4c27d159957e5f01" alt="Node Group Ready Alt" width="1000" height="130" data-path="images/setup/bulut/amazon-eks/19-node-group-ready-alt.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/18-node-group-ready.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=dcc02d33bc846ee8984102e51e232ef9" alt="Node Group Ready" width="1000" height="257" data-path="images/setup/bulut/amazon-eks/18-node-group-ready.png" />
</Frame>

## 7. EKS Kurulumu Test ve Örnek Deployment

Bu aşamadan, daha önce kurulumunu ve tanımlamalarını yapılan kubectl ile kubernetes cluster'ı kontrol edip ve örnek bir nginx uygulaması ile test edilmesi anlatılmaktadır.

### AWS EKS Ortam Test

Aşağıdaki komutları takip ederek kubernetes cluster kaynakları kontrol edilmelidir.

```powershell theme={null}
aws eks --region eu-central-1 describe-cluster --name apinizer-eks-cluster --query cluster.status
aws eks --region eu-central-1 update-kubeconfig --name apinizer-eks-cluster
kubectl get nodes
```

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/30-aws-cli-configure.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=2de2f4b9c93a6265fc5dac25520b7410" alt="AWS CLI Configure" width="1000" data-path="images/setup/bulut/amazon-eks/30-aws-cli-configure.png" />
</Frame>

### Örnek Uygulama Yükleme ve Test Etme

Bu bölümde, örnek olarak aşağıdaki .yaml dosyasında tanımlanmış olan Nginx uygulaması, kubernetes cluster'ına yüklenmesi anlatılmaktadır ve expose edildikten sonra test edilmektedir.

```yaml theme={null}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
  replicas: 4
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - containerPort: 80
```

```powershell theme={null}
kubectl apply -f nginx.yaml
kubectl get pods
```

Uygulama, kubernetes cluster'a başarılı olarak yüklendiği görülmektedir.

Aşağıdaki komut ile uygulamayı servis olarak açın:

```powershell theme={null}
kubectl expose deployment/my-nginx --port=80 --target-port=80 --name=my-nginx-service --type=LoadBalancer
kubectl get svc
```

Test için:

```powershell theme={null}
curl -k <EXTERNAL-IP>
```

## 8. EKS'ye Apinizer'ın Kurulumu

Bu başlık altında anlatılanlar Apinizer kurulum dokümanlarından farklı olarak Apinizer'ı servis olarak açmanın tanımını anlatmaktadır.

### Apinizer Yönetim Konsolu kurulumu

Apinizer için **.yaml** dosyası oluşturulup AWS EKS cluster'ına yüklenmelidir.

Kurulum ve Konfigürasyon dokümanına belirtildiği gibi **Replicaset MongoDB** ve **Elasticsearch**'e ihtiyaç vardır.

* MongoDB için [MongoDB Atlas](https://account.mongodb.com/account/register) adresine giderek bir hesap oluşturun ve kısıtlı bir DB boyutuna kadar ücretsiz olarak kullanılabilir. Apinizer MongoDB'de sadece konfigürasyon tanımlarını tuttuğu için büyük boyutlu bir veritabanına ihtiyacı yoktur.

* Benzer şekilde Elasticsearch içinde [Elastic Cloud](https://cloud.elastic.co/registration) adresine giderek cloud ortamında bir elastic servisi kullanarak Apinizer tanımlanabilir.

Ya da AWS'de bir **EC2** sunucusuna **Replicaset MongoDB** ve **Elasticsearch** kurulumu yaparak tanımlanabilir.

Örnek bir **apinizer-deployment.yaml** dosyası ayarları aşağıdadır:

```yaml theme={null}
apiVersion: v1
kind: Namespace
metadata:
  name: apinizer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: manager
  namespace: apinizer
spec:
  replicas: 1
  selector:
    matchLabels:
      app: manager
      version: 'v1'
  template:
    metadata:
      labels:
        app: manager
        version: 'v1'
    spec:
      containers:
      - name: manager
        image: apinizercloud/manager:2023.01.1
        imagePullPolicy: IfNotPresent
        env:
        - name: SPRING_PROFILES_ACTIVE
          value: prod
        - name: SPRING_DATA_MONGODB_DATABASE
          value: apinizerdb-aws
        - name: SPRING_DATA_MONGODB_URI
          value: 'YOUR_MONGODB_URL'
        - name: JAVA_OPTS
          value: ' -Xmx1400m -Xms1400m'
        resources:
          requests:
            memory: '2Gi'
            cpu: '1'
          limits:
            memory: '2Gi'
            cpu: '1'
        ports:
        - name: http
          containerPort: 8080
```

```powershell theme={null}
kubectl apply -f apinizer-deployment.yaml
kubectl get pods -n apinizer
```

Apinizer Yönetim Konsolu EKS ortamına yüklendikten sonra, MongoDB veritabanına **apinizerdb** isminde bir veritabanı oluşacaktır. **general\_settings** tablosuna Apinizer tarafından size verilen lisans anahtarı girilmelidir.

Apinizer Yönetim Konsolu üzerinden Kubernetes kaynaklarına erişim ve yönetim için aşağıdaki izinlerin tanımlanması yapılmalıdır.

Örnek bir **service.yaml** dosyası ayarları aşağıdadır:

```yaml theme={null}
apiVersion: v1
kind: Namespace
metadata:
  name: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
```

Örnek bir **adminuser.yaml** dosyası ayarları aşağıdadır:

```yaml theme={null}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system
```

```powershell theme={null}
kubectl apply -f service.yaml
kubectl apply -f adminuser.yaml
kubectl create clusterrolebinding permissive-binding --clusterrole=cluster-admin --user=admin --user=kubelet --group=system:serviceaccounts
kubectl create clusterrolebinding apinizer -n kube-system --clusterrole=cluster-admin --serviceaccount=kube-system:apinizer
```

### Apinizer Yönetim Konsolu için Erişim Servisi Oluşturma

Kurulum tamamlandıktan sonra Apinizer Yönetim Konsolu'na erişim için bir servis gerekmektedir.

Aşağıdaki adımlar takip ederek bir servis oluşturulur. Dış IP alımında bazen bir iki dakika geçmesi gerekebilir.

```powershell theme={null}
kubectl expose -n apinizer deployment.apps/manager --port=80 --target-port=8080 --name=apinizer-console-service --type=LoadBalancer
kubectl get svc -n apinizer
```

Service oluşturulduktan sonra, **EXTERNAL-IP** adresinden Apinizer Yönetim Konsolu'na erişilebilir.

### Apinizer Yönetim Konsolu Giriş

Adım 2'deki servis erişim adresi, tarayıcının adres çubuğuna yazılarak giriş yapılır. Default kullanıcı adı şifre için Apinizer destek ekibine ulaşabilirsiniz.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/17-apinizer-console-login.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=35377c2696d88a51dcaaadb4ee01b0c8" alt="Apinizer Console Login" width="1000" data-path="images/setup/bulut/amazon-eks/17-apinizer-console-login.png" />
</Frame>

## 9. Apinizer Konfigurasyonları

### Log Sunucularının Tanımlanması

Apinizer, API trafiğini ve metrik bilgilerini, Elasticsearch veri tabanında tutar. Kurulum işlemine devam edebilmek için Elasticsearch cluster tanımlarının yapılması gerekmektedir.

Apinizer Yönetim Konsolu uygulamasında menüden **Administration → Server Management → Elasticsearch Kümeleri** sayfasına gidilir.

**Elasticsearch cluster tanımlama ayarlarını içeren görsele aşağıda yer verilmiştir:**

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/03-elasticsearch-cluster.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=237775085aa83cce313cf11e8e58e179" alt="Elasticsearch Cluster" width="1000" height="521" data-path="images/setup/bulut/amazon-eks/03-elasticsearch-cluster.png" />
</Frame>

Elasticsearch sunucu bağlantısını, Apinizer ile test etmek için **Test Connection** butonu kullanılabilir.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/16-elasticsearch-test.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=8595e6c718ea18551c4a1c99cfbbb495" alt="Elasticsearch Test" width="1000" data-path="images/setup/bulut/amazon-eks/16-elasticsearch-test.png" />
</Frame>

### Ortam (Environment) Tanımlama

Bir *API Proxy*'nin erişilebilir olması için en az bir ortamın yüklenmesi (*deploy*) gerekmektedir. Apinizer, bir API Proxy'nin birden fazla ortama yüklenmesine de izin verir.

Apinizer Yönetim Konsolu uygulamasında menüden **Administration → Server Management → Gateway Environment** sayfasına gidilir.

**Ortam tanımlama ayarlarını içeren görsele aşağıda yer verilmiştir:**

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/02-gateway-environment.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=ac8252e706a093b7391c35155f9b6a0c" alt="Gateway Environment" width="1000" height="461" data-path="images/setup/bulut/amazon-eks/02-gateway-environment.png" />
</Frame>

Aşağıdaki değerler sunucuların varsayılan değerleridir. Cluster kaynaklarınıza uygun olarak değiştirilebilir.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/15-environment-config.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=959d4436d0fdc0430574f2758610e261" alt="Environment Config" width="1000" height="482" data-path="images/setup/bulut/amazon-eks/15-environment-config.png" />
</Frame>

**Create Environment** butonuna tıklanarak ortam tanımlama işlemi tamamlanır.

Ortamların listelendiğinde ekranda ilgili ortamın durumunu gösteren **Unpublished** butonuna ve sonrasında **Publish** butonuna tıklanarak **Prod** tipindeki ortam EKS'ye deploy edilmektedir.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/01-environment-publish.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=10508e52459084b8f13e158cdef63876" alt="Environment Publish" width="1000" data-path="images/setup/bulut/amazon-eks/01-environment-publish.png" />
</Frame>

<Note>
  Ortamı yükleme işlemi tahminen 3 dakika içinde EKS'ya yüklenmiş olacaktır.
</Note>

<Note>
  Gateway Runtime ortamı tanımlama ve yayın işlemleri ile ilgili detaylı bilgi almak için [Gateway Runtime'ları sayfasına](/tr/admin/server-management/gateway-runtime-lari) bakınız.
</Note>

### Ortamı (Environment) Servis Olarak Açma

Son olarak yayınladığımız Ortamda çalışacak API'lere erişmek için bir servis oluşturulması gerekiyor.

```powershell theme={null}
kubectl expose -n prod deployment.apps/worker --port=80 --target-port=8091 --name=apinizer-worker-service --type=LoadBalancer
kubectl get svc -n prod
```

AWS tarafından üretilen **LoadBalancer (EXTERNAL-IP)** değerini, tanımlanan Prod Ortamının Access URL değeri olarak atanmalıdır.

İlk olarak, ortamın düzenlendiği sayfanın **Environment Info** tablosundaki düzenleme butonuna tıklanır.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/14-environment-edit.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=231654412e4a72101d0cf2795bff22c7" alt="Environment Edit" width="1000" height="108" data-path="images/setup/bulut/amazon-eks/14-environment-edit.png" />
</Frame>

Sonrasında edit tuşuna tıklanarak ortamın Access URL bilgisi değiştirilir.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/13-environment-access-url.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=a8b98bfeed23ed5a82696d7c6e9d8fdc" alt="Environment Access URL" width="1000" data-path="images/setup/bulut/amazon-eks/13-environment-access-url.png" />
</Frame>

## 10. Apinizer'da İlk API'yi Yayınlama ve Test Etme

En son adımda örnek bir API tanım dosyası üzerinden Apinizer'a bir API'yi API Proxy olarak açılması anlatılmaktadır.

API Proxy'nin kayıt edileceği proje, navbar menüsünden seçilir.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/12-api-proxy-project.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=0d7a6ba30587c1893f5417bff0317cb1" alt="API Proxy Project" width="1000" height="200" data-path="images/setup/bulut/amazon-eks/12-api-proxy-project.png" />
</Frame>

Apinizer Yönetim Konsolu uygulamasındaki proje menüsündenden **Development → API Proxies** sayfasına gidilir.

Yeni API Proxy tanımlamak için **+ Proxy** butonuna tıklanır.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/11-add-proxy.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=9924307ca0836868b24934a824912f86" alt="Add Proxy" width="204" data-path="images/setup/bulut/amazon-eks/11-add-proxy.png" />
</Frame>

Aşağıdaki görselde seçili link ile API Proxy'nin nereden oluşturulacağı kaynağı seçilir.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/10-api-source.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=d5b721f2d876b232e1a9021810411585" alt="API Source" width="1000" height="304" data-path="images/setup/bulut/amazon-eks/10-api-source.png" />
</Frame>

API Tanım dosyasının linki girilerek **Parse** edilir.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/09-api-parse.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=770d98467c05ec05e8ffaf18e11e987c" alt="API Parse" width="1000" height="111" data-path="images/setup/bulut/amazon-eks/09-api-parse.png" />
</Frame>

API Proxy bilgileri girilerek **Save** butonuna tıklanır.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/08-api-save.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=878018ca4f5b4561d76ffbb48539e1f3" alt="API Save" width="1000" data-path="images/setup/bulut/amazon-eks/08-api-save.png" />
</Frame>

API Proxy'yi yüklemek (deploy) için aşağıdaki görselde seçili olan **Deploy** butonu kullanılır.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/07-api-deploy.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=e4ad93098da08e7381d47ad2508bccbc" alt="API Deploy" width="1000" data-path="images/setup/bulut/amazon-eks/07-api-deploy.png" />
</Frame>

Yükleme işlemi onaylanır.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/06-api-deploy-confirm.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=6a38fe93a62f6f0872211a4502bc2170" alt="API Deploy Confirm" width="1000" data-path="images/setup/bulut/amazon-eks/06-api-deploy-confirm.png" />
</Frame>

API Proxy'nin **Develop** tabından test edilmek istenen uç noktaya (endpoint) gelip, **Test Endpoint** butonuna tıklanır.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/05-api-test-endpoint.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=37d696c07dc7bd4fcaae91a980f8aeca" alt="API Test Endpoint" width="1000" height="532" data-path="images/setup/bulut/amazon-eks/05-api-test-endpoint.png" />
</Frame>

Test etme diyaloğunu içeren görsele aşağıda verilmiştir.

<Frame>
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/bulut/amazon-eks/04-api-test-dialog.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=3d671b04182c8604893644348ea3a360" alt="API Test Dialog" width="1000" height="398" data-path="images/setup/bulut/amazon-eks/04-api-test-dialog.png" />
</Frame>

<Note>
  API Proxy ile ilgili detaylı bilgi için [Geliştirici Kılavuzuna (Developer Guide)](/tr/develop/quick-start) bakınız.

  Test Konsoluyla ilgili detaylı bilgi almak için [Test Console sayfasına](/tr/develop/test-debug-araclari/test-console) bakınız.
</Note>
