Skip to content
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

feat: add nutanix cosi driver app #3031

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
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
4 changes: 4 additions & 0 deletions .github/service-labeler.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ services/cloudnative-pg:
- changed-files:
- any-glob-to-any-file:
- services/cloudnative-pg/**
services/cosi-driver-nutanix:
- changed-files:
- any-glob-to-any-file:
- services/cosi-driver-nutanix/**
services/dex:
- changed-files:
- any-glob-to-any-file:
Expand Down
40 changes: 40 additions & 0 deletions services/cosi-driver-nutanix/0.0.4/cosi-driver-nutanix.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: cosi-driver-nutanix
namespace: kommander-flux
spec:
interval: 5m0s
# TODO(takirala): Use HelmRepository instead of OCIRepository so that this works in air-gapped environments.
url: oci://ghcr.io/nutanix-cloud-native/chart/cosi-driver-nutanix
type: oci
---
apiVersion: helm.toolkit.fluxcd.io/v2beta2
kind: HelmRelease
metadata:
name: cosi-driver-nutanix
namespace: ${releaseNamespace}
spec:
chart:
spec:
chart: cosi-driver-nutanix
sourceRef:
kind: HelmRepository
name: cosi-driver-nutanix
namespace: kommander-flux
version: 0.0.4
interval: 15s
install:
crds: CreateReplace
remediation:
retries: 30
upgrade:
crds: CreateReplace
remediation:
retries: 30
releaseName: cosi-driver-nutanix
valuesFrom:
- kind: ConfigMap
name: cosi-driver-nutanix-0.0.4-d2iq-defaults
targetNamespace: ${releaseNamespace}
38 changes: 38 additions & 0 deletions services/cosi-driver-nutanix/0.0.4/cosi-resources-nutanix.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apiVersion: helm.toolkit.fluxcd.io/v2beta2
kind: HelmRelease
metadata:
name: cosi-resources-nutanix
namespace: ${releaseNamespace}
spec:
chart:
spec:
chart: cosi-bucket-kit
sourceRef:
kind: HelmRepository
name: mesosphere.github.io-charts-stable
namespace: kommander-flux
version: 0.0.1-alpha.1
interval: 15s
dependsOn:
# This dependency is not honored during Upgrade, only during Install.
# We have this in place to ensure that the cosi-driver-nutanix HelmRelease is installed before creating the BucketClass CR.
- name: cosi-driver-nutanix
install:
crds: CreateReplace
remediation:
retries: 30
createNamespace: true
upgrade:
crds: CreateReplace
remediation:
retries: 30
releaseName: cosi-resources-nutanix
targetNamespace: ${releaseNamespace}
valuesFrom:
- kind: ConfigMap
name: cosi-driver-nutanix-0.0.4-d2iq-defaults
valuesKey: cosi-bucket-kit-values.yaml
- kind: ConfigMap
name: cosi-driver-nutanix-overrides
optional: true
---
32 changes: 32 additions & 0 deletions services/cosi-driver-nutanix/0.0.4/defaults/cm.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: cloudnative-pg-0.23.0-d2iq-defaults
namespace: ${releaseNamespace}
data:
values.yaml: |-
cosiController:
enabled: false # This should be deployed during k8s cluster creation by konvoy.
objectstorageProvisionerSidecar:
image:
registry: gcr.io
# We can keep this in sync with the sidecar that is deploy in CephCOSIDriver to avoid duplicate images in airgapped bundle.
repository: k8s-staging-sig-storage/objectstorage-sidecar
tag: v20240513-v0.1.0-35-gefb3255
pullPolicy: IfNotPresent
cosi-bucket-kit-values.yaml: |-
cosiBucketKit:
enabled: true
bucketClasses:
- name: nutanix-cosi-storage
driverName: ntnx.objectstorage.k8s.io
deletionPolicy: Delete
parameters:
provisioner_data: "test_data"
bucketAccessClasses:
- name: nutanix-cosi-storage
driverName: ntnx.objectstorage.k8s.io
authenticationType: KEY
parameters:
provisioner_data: "test_data"
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- cm.yaml
6 changes: 6 additions & 0 deletions services/cosi-driver-nutanix/0.0.4/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- cosi-driver-nutanix.yaml
- cosi-resources-nutanix.yaml
35 changes: 35 additions & 0 deletions services/cosi-driver-nutanix/metadata.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
displayName: COSI Driver For Nutanix
description: Seamlessly manage provisioning of object storage resources on Nutanix platforms within Kubernetes environments adhering to COSI standard.
category: []
dependencies: []
type: platform
scope:
- workspace
licensing:
- Pro
- Ultimate
- Essentials
- Enterprise
certifications:
- airgapped
- supported
allowMultipleInstances: false
overview: |-
# COSI Driver for Nutanix

The **COSI Driver for Nutanix** simplifies the deployment and configuration of the Nutanix driver for the Kubernetes Container Object Storage Interface (COSI). COSI is an evolving Kubernetes API standard designed to streamline and standardize object storage provisioning and management across diverse environments.

This package is tailored for Kubernetes clusters using Nutanix as the underlying storage provider. By deploying the COSI Driver for Nutanix, users can leverage Nutanix's robust object storage capabilities to dynamically provision and manage object storage buckets directly from Kubernetes.

## Key Features

- **Automated Deployment**: Simplifies the installation and setup of the COSI driver with configurable parameters for tailored deployments.
- **Dynamic Bucket Management**: Enables dynamic provisioning, binding, and deletion of object storage buckets via Kubernetes APIs.
- **Seamless Integration**: Ensures compatibility with Nutanix object storage platforms, empowering developers to integrate cloud-native applications with Nutanix's scalable storage solutions.
- **Customizable Configuration**: Offers a range of configurable values for aligning the driver setup with specific use cases and operational requirements.
- **Scalability and Reliability**: Built to leverage the scalability and robustness of Nutanix object storage while adhering to Kubernetes best practices.

## Use Cases

This solution is ideal for teams seeking to enhance their Kubernetes storage capabilities by integrating object storage directly into their workflows. With the Nutanix COSI driver, users gain a powerful toolset to efficiently manage object storage within cloud-native ecosystems.
icon: PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzI2MTlfMTEwMzUpIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yOS45MjE2IDI1Ljk0NTZDMzAuMDY2MSAyNS45NDU2IDMwLjE5NjUgMjYuMDA4MyAzMC4yOTEzIDI2LjEwOTJMMzkuNzk0IDM0Ljk5MTNDMzkuOTE5MSAzNS4wOTQgMzkuOTk5OSAzNS4yNTU5IDM5Ljk5OTkgMzUuNDM4MUMzOS45OTk5IDM1Ljc0ODEgMzkuNzY1OSAzNS45OTk4IDM5LjQ3NzIgMzUuOTk5OEgzMy4wMDM4QzMyLjg2MTIgMzUuOTk5OCAzMi43MzE2IDM1LjkzODIgMzIuNjM3MyAzNS44Mzg0TDI2LjM0ODggMjkuOTYxNkMyNi4yMzQzIDI5Ljg1NzggMjYuMTYyMSAyOS43MDM5IDI2LjE2MjEgMjkuNTMxMUMyNi4xNjIxIDI5LjM4NTkgMjYuMjEzNiAyOS4yNTM2IDI2LjI5NzggMjkuMTUzOUwyOS41MzQ0IDI2LjEyOTJDMjkuNjMgMjYuMDE2NiAyOS43NjgxIDI1Ljk0NTYgMjkuOTIxNiAyNS45NDU2Wk0zOS40NzcyIDEyQzM5Ljc2NTkgMTIgMzkuOTk5OSAxMi4yNTE4IDM5Ljk5OTkgMTIuNTYxN0MzOS45OTk5IDEyLjc0MzkgMzkuOTE5MSAxMi45MDU2IDM5Ljc5NCAxMy4wMDgyTDMwLjI5MTMgMjEuODkwM0MzMC4xOTY1IDIxLjk5MTUgMzAuMDY2MSAyMi4wNTQzIDI5LjkyMTYgMjIuMDU0M0MyOS43NjgxIDIyLjA1NDMgMjkuNjMgMjEuOTgzNSAyOS41MzQ0IDIxLjg3MDZMMjYuMjk3OCAxOC44NDZDMjYuMjEzNiAxOC43NDYyIDI2LjE2MjEgMTguNjEzOSAyNi4xNjIxIDE4LjQ2ODdDMjYuMTYyMSAxOC4yOTYyIDI2LjIzNDMgMTguMTQyIDI2LjM0ODggMTguMDM4NUwzMi42MzczIDEyLjE2MTFDMzIuNzMxNiAxMi4wNjE2IDMyLjg2MTIgMTIgMzMuMDAzOCAxMkgzOS40NzcyWiIgZmlsbD0iIzc4NTVGQSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjM1NzUgMzUuODUyM0MxNS4yNjQ1IDM1Ljk0MzUgMTUuMTQwNSAzNiAxNS4wMDQzIDM2SDguNTIyNjVDOC4yMzM5NyAzNiA4IDM1Ljc0ODIgOCAzNS40MzhDOCAzNS4yODMyIDguMDU4NDMgMzUuMTQyOSA4LjE1Mjk3IDM1LjA0MTZMMTkuNTExMSAyNC40MjkxQzE5LjYyNSAyNC4zMjYyIDE5LjY5NzIgMjQuMTcxOSAxOS42OTcyIDIzLjk5OTRDMTkuNjk3MiAyMy44MzYzIDE5LjYzMjQgMjMuNjg5OCAxOS41Mjk0IDIzLjU4NzRMOC4xODUxMSAxMi45OUM4LjA3MTcxIDEyLjg4NyA4IDEyLjczMzYgOCAxMi41NjE3QzggMTIuMjUxOCA4LjIzMzk3IDEyIDguNTIyNjUgMTJIMTUuMDA0M0MxNS4xNDEgMTIgMTUuMjY1NiAxMi4wNTYyIDE1LjM1ODUgMTIuMTQ4M0wyNy41ODYxIDIzLjU3NTdDMjcuNjk2OSAyMy42Nzg0IDI3Ljc2NjcgMjMuODI5OCAyNy43NjY3IDIzLjk5OTRDMjcuNzY2NyAyNC4xNjk0IDI3LjY5NjYgMjQuMzIxOSAyNy41ODUzIDI0LjQyNTFMMTUuMzU3NSAzNS44NTIzWiIgZmlsbD0iIzc4NTVGQSIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzI2MTlfMTEwMzUiPgo8cmVjdCB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==
Loading