# manusa/yakc architecture

> Architecture diagram of the GitHub repository manusa/yakc, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/manusa/yakc
- Repository: https://github.com/manusa/yakc

## Overview

YAKC is a lower-level Java client for Kubernetes and related APIs. A caller creates a client, selects an API interface, and performs REST operations; the client returns Kubernetes resources represented by model classes. The repository also provides API/model modules for extensions including cert-manager, Chaos Mesh, Dapr, Istio, and OpenShift. API-interface and model behavior is visible in sampled files; the central client implementation and several extension sources were not sampled, so their internal wiring is shown only at the documented module level.

Main entry points: [`kubernetes-api/src/api/java/com/marcnuri/yakc/api/storage/v1/StorageV1Api.java`](https://github.com/manusa/yakc/blob/master/kubernetes-api/src/api/java/com/marcnuri/yakc/api/storage/v1/StorageV1Api.java) (Kubernetes API), [`apis/cert-manager/src/api/java/com/marcnuri/yakc/api/certmanagerio/v1/CertManagerIoV1Api.java`](https://github.com/manusa/yakc/blob/master/apis/cert-manager/src/api/java/com/marcnuri/yakc/api/certmanagerio/v1/CertManagerIoV1Api.java) (cert-manager API), [`apis/chaos-mesh/src/api/java/com/marcnuri/yakc/api/chaosmeshorg/v1alpha1/ChaosMeshOrgV1alpha1Api.java`](https://github.com/manusa/yakc/blob/master/apis/chaos-mesh/src/api/java/com/marcnuri/yakc/api/chaosmeshorg/v1alpha1/ChaosMeshOrgV1alpha1Api.java) (Chaos Mesh API), [`kubernetes-api/src/api/java/com/marcnuri/yakc/api/storagemigration/v1alpha1/StoragemigrationV1alpha1Api.java`](https://github.com/manusa/yakc/blob/master/kubernetes-api/src/api/java/com/marcnuri/yakc/api/storagemigration/v1alpha1/StoragemigrationV1alpha1Api.java) (Storage migration API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client access"]
  node_client["Kubernetes client"]
end

subgraph group_k8s["Kubernetes APIs"]
  node_api["Kubernetes API<br/>[StorageV1Api.java]"]
  node_migration["Storage migration API"]
end

subgraph group_models["Resource models"]
  node_models["Kubernetes models<br/>[StorageV1Api.java]"]
end

subgraph group_extensions["Extension APIs"]
  node_cert["cert-manager API"]
  node_certmodels["Certificate models<br/>[Certificate.java]"]
  node_chaos["Chaos Mesh API"]
  node_chaosmodels["Chaos models<br/>[NetworkChaos.java]"]
  node_dapr["Dapr API"]
  node_istio["Istio API"]
  node_openshift["OpenShift models"]
end

node_caller(("Java application"))
node_server{{"Kubernetes API server"}}

node_caller -->|"creates"| node_client
node_client -->|"creates API"| node_api
node_client -->|"creates API"| node_migration
node_client -->|"creates API"| node_cert
node_client -->|"creates API"| node_chaos
node_client -.->|"creates API"| node_dapr
node_client -.->|"creates API"| node_istio
node_api -->|"REST requests"| node_server
node_migration -->|"REST requests"| node_server
node_cert -->|"REST requests"| node_server
node_chaos -->|"REST requests"| node_server
node_dapr -.->|"REST requests"| node_server
node_istio -.->|"REST requests"| node_server
node_api -->|"uses resources"| node_models
node_cert -->|"uses resources"| node_certmodels
node_chaos -->|"uses resources"| node_chaosmodels
node_caller -->|"handles results"| node_models

click node_api "https://github.com/manusa/yakc/blob/master/kubernetes-api/src/api/java/com/marcnuri/yakc/api/storage/v1/StorageV1Api.java"
click node_migration "https://github.com/manusa/yakc/blob/master/kubernetes-api/src/api/java/com/marcnuri/yakc/api/storagemigration/v1alpha1/StoragemigrationV1alpha1Api.java"
click node_models "https://github.com/manusa/yakc/blob/master/kubernetes-api/src/api/java/com/marcnuri/yakc/api/storage/v1/StorageV1Api.java"
click node_cert "https://github.com/manusa/yakc/blob/master/apis/cert-manager/src/api/java/com/marcnuri/yakc/api/certmanagerio/v1/CertManagerIoV1Api.java"
click node_certmodels "https://github.com/manusa/yakc/blob/master/apis/cert-manager/src/model/java/com/marcnuri/yakc/model/io/certmanager/v1/Certificate.java"
click node_chaos "https://github.com/manusa/yakc/blob/master/apis/chaos-mesh/src/api/java/com/marcnuri/yakc/api/chaosmeshorg/v1alpha1/ChaosMeshOrgV1alpha1Api.java"
click node_chaosmodels "https://github.com/manusa/yakc/blob/master/apis/chaos-mesh/src/model/java/com/marcnuri/yakc/model/org/chaosmesh/v1alpha1/NetworkChaos.java"
click node_dapr "https://github.com/manusa/yakc/tree/master/apis/dapr"
click node_istio "https://github.com/manusa/yakc/tree/master/apis/istio"
click node_openshift "https://github.com/manusa/yakc/blob/master/apis/openshift/src/model/java/com/marcnuri/yakc/model/com/coreos/monitoring/v1/AlertmanagerSpecStorageVolumeClaimTemplateSpec.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_client toneBlue
class node_api,node_migration toneAmber
class node_models,node_server toneMint
class node_cert,node_certmodels,node_chaos,node_chaosmodels,node_dapr,node_istio,node_openshift toneRose
class node_caller toneIndigo
```

## Components

### Client access

- **Kubernetes client**

### Kubernetes APIs

- [Kubernetes API](https://github.com/manusa/yakc/blob/master/kubernetes-api/src/api/java/com/marcnuri/yakc/api/storage/v1/StorageV1Api.java): `kubernetes-api/src/api/java/com/marcnuri/yakc/api/storage/v1/StorageV1Api.java`
- [Storage migration API](https://github.com/manusa/yakc/blob/master/kubernetes-api/src/api/java/com/marcnuri/yakc/api/storagemigration/v1alpha1/StoragemigrationV1alpha1Api.java): `kubernetes-api/src/api/java/com/marcnuri/yakc/api/storagemigration/v1alpha1/StoragemigrationV1alpha1Api.java`

### Resource models

- [Kubernetes models](https://github.com/manusa/yakc/blob/master/kubernetes-api/src/api/java/com/marcnuri/yakc/api/storage/v1/StorageV1Api.java): `kubernetes-api/src/api/java/com/marcnuri/yakc/api/storage/v1/StorageV1Api.java`

### Extension APIs

- [cert-manager API](https://github.com/manusa/yakc/blob/master/apis/cert-manager/src/api/java/com/marcnuri/yakc/api/certmanagerio/v1/CertManagerIoV1Api.java): `apis/cert-manager/src/api/java/com/marcnuri/yakc/api/certmanagerio/v1/CertManagerIoV1Api.java`
- [Certificate models](https://github.com/manusa/yakc/blob/master/apis/cert-manager/src/model/java/com/marcnuri/yakc/model/io/certmanager/v1/Certificate.java): `apis/cert-manager/src/model/java/com/marcnuri/yakc/model/io/certmanager/v1/Certificate.java`
- [Chaos Mesh API](https://github.com/manusa/yakc/blob/master/apis/chaos-mesh/src/api/java/com/marcnuri/yakc/api/chaosmeshorg/v1alpha1/ChaosMeshOrgV1alpha1Api.java): `apis/chaos-mesh/src/api/java/com/marcnuri/yakc/api/chaosmeshorg/v1alpha1/ChaosMeshOrgV1alpha1Api.java`
- [Chaos models](https://github.com/manusa/yakc/blob/master/apis/chaos-mesh/src/model/java/com/marcnuri/yakc/model/org/chaosmesh/v1alpha1/NetworkChaos.java): `apis/chaos-mesh/src/model/java/com/marcnuri/yakc/model/org/chaosmesh/v1alpha1/NetworkChaos.java`
- [Dapr API](https://github.com/manusa/yakc/tree/master/apis/dapr): `apis/dapr`
- [Istio API](https://github.com/manusa/yakc/tree/master/apis/istio): `apis/istio`
- [OpenShift models](https://github.com/manusa/yakc/blob/master/apis/openshift/src/model/java/com/marcnuri/yakc/model/com/coreos/monitoring/v1/AlertmanagerSpecStorageVolumeClaimTemplateSpec.java): `apis/openshift/src/model/java/com/marcnuri/yakc/model/com/coreos/monitoring/v1/AlertmanagerSpecStorageVolumeClaimTemplateSpec.java`

### Other components

- **Java application**
- **Kubernetes API server**

## Connections

- Java application → Kubernetes client: creates
- Kubernetes client → Kubernetes API: creates API
- Kubernetes client → Storage migration API: creates API
- Kubernetes client → cert-manager API: creates API
- Kubernetes client → Chaos Mesh API: creates API
- Kubernetes client → Dapr API: creates API
- Kubernetes client → Istio API: creates API
- Kubernetes API → Kubernetes API server: REST requests
- Storage migration API → Kubernetes API server: REST requests
- cert-manager API → Kubernetes API server: REST requests
- Chaos Mesh API → Kubernetes API server: REST requests
- Dapr API → Kubernetes API server: REST requests
- Istio API → Kubernetes API server: REST requests
- Kubernetes API → Kubernetes models: uses resources
- cert-manager API → Certificate models: uses resources
- Chaos Mesh API → Chaos models: uses resources
- Java application → Kubernetes models: handles results
