> ## 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.

# Healthcheck ve Sürüm Adresleri

> Apinizer platformundaki Manager, Worker, Cache, Integration ve Portal modüllerinin sağlık durumunu ve sürüm bilgilerini kontrol edebilir. Kubernetes içinden dahili servis isimleri ile veya Kubernetes dışından harici erişim URL'leri ile healthcheck ve versiyon kontrollerini gerçekleştirebilir. Sistemin düzgün çalıştığını doğrulayabilir, olası sorunları erken teşhis edebilir ve sorun giderme süreçlerinde kritik bilgilere erişebilir.

## Genel Yaklaşım

Apinizer modüllerinin healthcheck ve sürüm kontrollerini iki ana yöntemle gerçekleştirebilirsiniz:

<Tabs>
  <Tab title="Kubernetes İçinden">
    Küme içindeki bir pod üzerinden `curl` komutu kullanarak dahili servis isimleri aracılığıyla istek atarak gerçekleştirilir. Bu yöntem, cluster içi iletişim problemlerini teşhis etmek için idealdir.
  </Tab>

  <Tab title="Kubernetes Dışından">
    Modülleriniz dışarıya (NodePort, LoadBalancer, Ingress) açılmışsa, yerel makinenizden veya sunucu üzerinden doğrudan erişim URL'lerine istek atarak gerçekleştirilir. Bu yöntem, genel erişilebilirliği ve harici entegrasyonları test etmek için kullanışlıdır.
  </Tab>
</Tabs>

## Kubernetes İçinden Kontroller

Bu yöntem ile Apinizer modüllerinin Kubernetes kümesi içindeki dahili ağ üzerinden erişilebilirliğini ve durumunu kontrol edebilirsiniz.

### Pod'lar ve Durumları

Kümedeki tüm Pod'ları ve onların durumlarını kontrol edin:

```bash theme={null}
kubectl get pods -A
```

Bu komut sisteminizdeki bütün pod'ların çıktısını verir. Aşağıdaki örnekte tüm pod'lar sağlıklı bir şekilde çalışmaktadır:

<img src="https://mintcdn.com/apinizer/LoT_QidIA2t_0Oih/images/operations/pods-status.png?fit=max&auto=format&n=LoT_QidIA2t_0Oih&q=85&s=27d0ea487ce200438a7775c03dab1ccb" alt="Kubernetes Pod Durumları" width="800" height="400" data-path="images/operations/pods-status.png" />

<Info>
  Çıktıda, tüm Pod'ların **Running** (Çalışıyor) durumda olduğunu ve **READY** (Hazır) sütununun `1/1` olduğunu görebilirsiniz. Bu durum pod'ların sağlıklı olduğunu gösterir.
</Info>

### Servis Bilgileri

Pod'lar arasındaki iletişimi sağlayan Servislerin bilgilerini kontrol edin:

```bash theme={null}
kubectl get svc -A
```

Örnek çıktı:

<img src="https://mintcdn.com/apinizer/LoT_QidIA2t_0Oih/images/operations/services-status.png?fit=max&auto=format&n=LoT_QidIA2t_0Oih&q=85&s=f266a6fe14767b860e3750b0402cab17" alt="Kubernetes Servis Durumları" width="800" height="300" data-path="images/operations/services-status.png" />

Aşağıdaki tabloda Apinizer modüllerinin servis bilgileri verilmiştir:

| Modül       | Servis Adı               | Servis Türü | Namespace            | Internal Port | External Port (Dışarıya Açılan) |
| ----------- | ------------------------ | ----------- | -------------------- | ------------- | ------------------------------- |
| Manager     | manager                  | NodePort    | apinizer             | 8080          | 32080                           |
| Worker      | worker-http-service      | NodePort    | prod                 | 8091          | 30080                           |
| Cache       | cache-http-service       | ClusterIp   | prod                 | 8090          | -                               |
| Integration | integration-http-service | NodePort    | apinizer-integration | 8092          | 30088                           |
| Portal      | apinizer-portal-service  | NodePort    | apinizer-portal      | 8080          | 32090                           |

Bu bilgiler ışığında aşağıdaki şablonda URL'ler oluşturulabilir ve bu URL'lere Kubernetes içindeki herhangi bir pod üzerinden curl atılarak kontrol edilebilir:

```bash theme={null}
http://<SERVICE_NAME>.<NAMESPACE>.svc.cluster.local:<SERVICE_INTERNAL_PORT>/apinizer/management/health
```

### Modül Bazlı Kontroller

<AccordionGroup>
  <Accordion title="Manager">
    **Healthcheck:**

    ```bash theme={null}
    kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET http://manager.apinizer.svc.cluster.local:8080/apinizer/management/health
    ```

    **Sürüm Bilgisi:**

    ```bash theme={null}
    kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET http://manager.apinizer.svc.cluster.local:8080/apinizer/management/version
    ```
  </Accordion>

  <Accordion title="Worker">
    **Healthcheck:**

    ```bash theme={null}
    kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET http://worker-http-service.prod.svc.cluster.local:8091/apinizer/management/health
    ```

    **Sürüm Bilgisi:**

    ```bash theme={null}
    kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET http://worker-http-service.prod.svc.cluster.local:8091/apinizer/management/version
    ```
  </Accordion>

  <Accordion title="Cache">
    **Healthcheck:**

    ```bash theme={null}
    kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET http://cache-http-service.prod.svc.cluster.local:8090/apinizer/management/health
    ```

    **Sürüm Bilgisi:**

    ```bash theme={null}
    kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET http://cache-http-service.prod.svc.cluster.local:8090/apinizer/management/version
    ```
  </Accordion>

  <Accordion title="Integration">
    **Healthcheck:**

    ```bash theme={null}
    kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET http://integration-http-service.apinizer-integration.svc.cluster.local:8092/apinizer/management/health
    ```

    **Sürüm Bilgisi:**

    ```bash theme={null}
    kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET http://integration-http-service.apinizer-integration.svc.cluster.local:8092/apinizer/management/version
    ```
  </Accordion>

  <Accordion title="Portal">
    **Healthcheck:**

    ```bash theme={null}
    kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET http://apinizer-portal-service.apinizer-portal.svc.cluster.local:8080/apinizer/management/health
    ```

    **Sürüm Bilgisi:**

    ```bash theme={null}
    kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET http://apinizer-portal-service.apinizer-portal.svc.cluster.local:8080/apinizer/management/version
    ```
  </Accordion>
</AccordionGroup>

## Kubernetes Dışından Kontroller

Eğer Apinizer modülleriniz Kubernetes dışından erişilebilir şekilde yapılandırılmışsa (örneğin `NodePort`, `LoadBalancer` tipi servisler veya bir `Ingress` Controller aracılığıyla), Postman gibi bir HTTP istemcisi veya yerel terminalinizden `curl` ile doğrudan istek gönderebilirsiniz.

<img src="https://mintcdn.com/apinizer/LoT_QidIA2t_0Oih/images/operations/services-status.png?fit=max&auto=format&n=LoT_QidIA2t_0Oih&q=85&s=f266a6fe14767b860e3750b0402cab17" alt="Kubernetes Servis Durumları" width="800" height="300" data-path="images/operations/services-status.png" />

Apinizer modüllerinin `NodePort` servis tipi ile dışarıya açılan servisleri için **Kubernetes Node IP adresleri ve Node Portları** aracılığıyla herhangi bir istemciden erişim sağlanabilmektedir. Aşağıdaki tablo, Apinizer servislerinin detaylarını sunmaktadır:

| Modül       | Servis Adı               | Servis Türü | Namespace            | Internal Port | External Port (Dışarıya Açılan) |
| ----------- | ------------------------ | ----------- | -------------------- | ------------- | ------------------------------- |
| Manager     | manager                  | NodePort    | apinizer             | 8080          | 32080                           |
| Worker      | worker-http-service      | NodePort    | prod                 | 8091          | 30080                           |
| Cache       | cache-http-service       | ClusterIp   | prod                 | 8090          | -                               |
| Integration | integration-http-service | NodePort    | apinizer-integration | 8092          | 30088                           |
| Portal      | apinizer-portal-service  | NodePort    | apinizer-portal      | 8080          | 32090                           |

### Modül Bazlı Kontroller

<AccordionGroup>
  <Accordion title="Manager">
    **Healthcheck:**

    ```bash theme={null}
    curl "http://<MANAGER_ACCESS_URL>/apinizer/management/health"
    ```

    **Sürüm Bilgisi:**

    ```bash theme={null}
    curl "http://<MANAGER_ACCESS_URL>/apinizer/management/version"
    ```
  </Accordion>

  <Accordion title="Worker">
    **Healthcheck:**

    ```bash theme={null}
    curl "http://<WORKER_ACCESS_URL>/apinizer/management/health"
    ```

    **Sürüm Bilgisi:**

    ```bash theme={null}
    curl "http://<WORKER_ACCESS_URL>/apinizer/management/version"
    ```
  </Accordion>

  <Accordion title="Integration">
    **Healthcheck:**

    ```bash theme={null}
    curl "http://<INTEGRATION_ACCESS_URL>/apinizer/management/health"
    ```

    **Sürüm Bilgisi:**

    ```bash theme={null}
    curl "http://<INTEGRATION_ACCESS_URL>/apinizer/management/version"
    ```
  </Accordion>

  <Accordion title="Portal">
    **Healthcheck:**

    ```bash theme={null}
    curl "http://<PORTAL_ACCESS_URL>/apinizer/management/health"
    ```

    **Sürüm Bilgisi:**

    ```bash theme={null}
    curl "http://<PORTAL_ACCESS_URL>/apinizer/management/version"
    ```
  </Accordion>
</AccordionGroup>

<Warning>
  **Cache Modülü**: Cache modülü varsayılan olarak kurulumlarda dışarıya açılmamaktadır (**ClusterIP** servis türü). Bu nedenle, Kubernetes dışından doğrudan `health-check` ve `version-check` yapmak istiyorsanız, Cache servisinin `8090` numaralı portunun dışarıya erişilebilir şekilde yapılandırılması gerekmektedir.
</Warning>
