Skip to content

feat: remove csi #12

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 1 addition & 70 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ This Helm chart deploys a Kubernetes cluster on vSphere using Cluster API with K

## Table of Contents

- [Architecture Overview](#architecture-overview)
- [Key Features](#key-features)
- [Automatic Rolling Updates](#automatic-rolling-updates)
- [Split Infrastructure Controller Deployment](#split-infrastructure-controller-deployment)
Expand All @@ -23,16 +22,6 @@ This Helm chart deploys a Kubernetes cluster on vSphere using Cluster API with K
- [Configuration](#configuration)
- [License](#license)

## Architecture Overview

The chart implements a **Split Architecture** where:

1. The Kubernetes control plane runs as containers on the management cluster (Kamaji)
2. The Cloud Controller Manager (CPI) and CSI Storage Controller run on the management cluster
3. Worker nodes run CSI Node drivers on the workload cluster
4. Communication between components happens via the Kubernetes API server

This approach provides security benefits by isolating vSphere credentials from tenant users while maintaining full Cluster API integration.

## Key Features

Expand All @@ -58,11 +47,7 @@ The implementation uses hash-suffixed templates, `VSphereMachineTemplate` and `K

### Split Infrastructure Controller Deployment

The chart deploys vSphere infrastructure controllers on the management cluster instead of the workload cluster:

- **Cloud Controller Manager (CPI)**: Runs on the management cluster with access to the hosted tenant's API server
- **vSphere CSI Controller**: Runs on the management cluster
- **CSI Node Drivers**: Deployed on workload cluster nodes via `ClusterResourceSet`
The chart deploys vSphere controllers on the management cluster instead of the workload cluster.

This architecture enables:
- Tenant isolation from vSphere credentials
Expand Down Expand Up @@ -179,29 +164,6 @@ stringData:
EOF
```

```yaml
# Create the csi-config-secret for Storage Controller
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
name: csi-config-secret
namespace: my-cluster
labels:
cluster.x-k8s.io/cluster-name: "my-cluster"
stringData:
csi-vsphere.conf: |
[Global]
cluster-id = "namespace/my-cluster"
thumbprint = "YOUR_VCENTER_THUMBPRINT"
insecure-flag = false
[VirtualCenter "vcenter.example.com"]
user = "administrator@vsphere.local"
password = "YOUR_PASSWORD"
datacenters = "YOUR_DATACENTER"
EOF
```

### Credentials through VSphereClusterIdentity
The chart can also be configured to use `VSphereClusterIdentity` for managing vSphere credentials. This allows multiple clusters to share the same credentials.

Expand Down Expand Up @@ -239,7 +201,6 @@ spec:
matchLabels: {} # allow all namespaces
```

> **Note**: The CSI secret and the Cloud Controller Manager secret must still be created separately.

```yaml
# Create the vsphere-config-secret for Cloud Controller Manager
Expand Down Expand Up @@ -267,29 +228,6 @@ stringData:
EOF
```

```yaml
# Create the csi-config-secret for Storage Controller
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
name: csi-config-secret
namespace: my-cluster
labels:
cluster.x-k8s.io/cluster-name: "my-cluster"
stringData:
csi-vsphere.conf: |
[Global]
cluster-id = "namespace/my-cluster"
thumbprint = "YOUR_VCENTER_THUMBPRINT"
insecure-flag = false
[VirtualCenter "vcenter.example.com"]
user = "administrator@vsphere.local"
password = "YOUR_PASSWORD"
datacenters = "YOUR_DATACENTER"
EOF
```

## Usage

### Creating a cluster
Expand Down Expand Up @@ -366,13 +304,6 @@ If nodes taints are not removed:
kubectl logs -l component=cloud-controller-manager
```

If volume provisioning fails:

```bash
# Check CSI Controller logs
kubectl logs -l component=csi-controller-manager
```

## Configuration

See the values you can override [here](charts/capi-kamaji-vsphere/README.md).
Expand Down
2 changes: 1 addition & 1 deletion charts/capi-kamaji-vsphere/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: capi-kamaji-vsphere
version: 0.1.4
version: 0.2.0
appVersion: 1.32.0
description: A Helm chart for deploying a Kamaji Tenant Cluster on vSphere using Cluster API
and Kamaji.
Expand Down
13 changes: 1 addition & 12 deletions charts/capi-kamaji-vsphere/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# capi-kamaji-vsphere

![Version: 0.1.4](https://img.shields.io/badge/Version-0.1.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.32.0](https://img.shields.io/badge/AppVersion-1.32.0-informational?style=flat-square)
![Version: 0.2.0](https://img.shields.io/badge/Version-0.2.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.32.0](https://img.shields.io/badge/AppVersion-1.32.0-informational?style=flat-square)

A Helm chart for deploying a Kamaji Tenant Cluster on vSphere using Cluster API and Kamaji.

Expand Down Expand Up @@ -78,17 +78,6 @@ A Helm chart for deploying a Kamaji Tenant Cluster on vSphere using Cluster API
| vSphereCloudControllerManager.enabled | bool | `true` | Installs vsphere-cloud-controller-manager on the management cluster |
| vSphereCloudControllerManager.secret.name | string | `"vsphere-config-secret"` | The name of an existing Secret for vSphere. |
| vSphereCloudControllerManager.version | string | `"v1.32.0"` | Version of the vsphere-cloud-controller-manager to install. The major and minor versions of releases should be equivalent to the compatible upstream Kubernetes release. |
| vSphereStorageControllerManager.enabled | bool | `false` | Installs vsphere-storage-controller-manager on the management cluster. NB: CSI node drivers are always installed on the workload cluster. |
| vSphereStorageControllerManager.logLevel | string | `"PRODUCTION"` | log level for the CSI components |
| vSphereStorageControllerManager.namespace | string | `"kube-system"` | Target namespace for the vSphere CSI node drivers on the workload cluster |
| vSphereStorageControllerManager.secret.name | string | `"csi-config-secret"` | The name of an existing Secret for vSphere. |
| vSphereStorageControllerManager.storageClass.allowVolumeExpansion | bool | `true` | Allow volume expansion |
| vSphereStorageControllerManager.storageClass.default | bool | `true` | Configure as the default storage class |
| vSphereStorageControllerManager.storageClass.enabled | bool | `false` | StorageClass enablement |
| vSphereStorageControllerManager.storageClass.name | string | `"vsphere-csi"` | Name of the storage class |
| vSphereStorageControllerManager.storageClass.parameters | object | `{}` | Optional storage class parameters |
| vSphereStorageControllerManager.storageClass.reclaimPolicy | string | `"Delete"` | Reclaim policy |
| vSphereStorageControllerManager.storageClass.volumeBindingMode | string | `"WaitForFirstConsumer"` | Volume binding mode |

----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.11.0](https://github.com/norwoodj/helm-docs/releases/v1.11.0)
Loading