Skip to content

Commit 8cd9da3

Browse files
committed
updating charts/netapp-copilot-connector readme
1 parent 3976cfa commit 8cd9da3

File tree

2 files changed

+176
-30
lines changed

2 files changed

+176
-30
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
apiVersion: v2
22
name: netapp-connector
3-
version: 25.11.2
3+
version: 25.11.3
44
description: NetApp Neo v3.x for Microsoft 365 Copilot Connector Helm Chart
55
appVersion: "3.0.4"
66
type: application

charts/netapp-copilot-connector/README.md

Lines changed: 175 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
11
# NetApp Neo for Microsoft 365 Copilot - Helm Chart
22

3-
This Helm chart deploys NetApp Neo for Microsoft 365 Copilot on a Kubernetes cluster using a `Deployment` for scalable application management.
3+
This Helm chart deploys NetApp Neo for Microsoft 365 Copilot on a Kubernetes cluster using `Deployment` resources for scalable application management.
44

55
## Overview
66

77
The chart bootstraps a deployment of NetApp Neo, which includes the following Kubernetes resources:
8-
- **Deployment**: Manages the connector pod with configurable replicas and rolling updates.
9-
- **Service**: Exposes the connector within the cluster on a stable endpoint.
8+
- **Deployments**: Manages both the backend connector and UI pods with configurable replicas and rolling updates.
9+
- **Services**: Exposes the connector and UI within the cluster on stable endpoints.
1010
- **Secret**: Securely stores sensitive credentials like Microsoft Graph API keys, NetApp license, and database connection details.
11-
- **ConfigMap**: Manages non-sensitive environment variables and configuration.
12-
- **Ingress**: (Optional) Manages external access to the connector service.
11+
- **ConfigMaps**: Manages non-sensitive environment variables, configuration, and nginx proxy settings for the UI.
12+
- **Ingress**: (Optional) Manages external access to both the connector and UI services.
13+
14+
## Architecture
15+
16+
The chart deploys two main components:
17+
18+
1. **Backend Connector** (`netapp-connector-main`): The core API service that interfaces with Microsoft Graph and your data sources.
19+
2. **UI** (`netapp-connector-ui`): A web interface that communicates with the backend API through an nginx reverse proxy.
20+
21+
The UI automatically proxies API requests to `/api/*` to the backend service, providing seamless communication between components.
1322

1423
## Prerequisites
1524

@@ -36,14 +45,14 @@ There are two primary methods for installing the chart: using command-line flags
3645
For quick tests, you can pass parameters directly using the `--set` flag.
3746

3847
```sh
39-
helm install netapp-connector innovation-labs/netapp-connector --version 26.11.1 \
48+
helm install netapp-connector innovation-labs/netapp-connector --version 25.11.2 \
4049
--namespace netapp-connector \
4150
--create-namespace \
4251
--set main.credentials.MS_GRAPH_CLIENT_ID="<your-graph-client-id>" \
4352
--set main.credentials.MS_GRAPH_CLIENT_SECRET="<your-graph-client-secret>" \
4453
--set main.credentials.MS_GRAPH_TENANT_ID="<your-graph-tenant-id>" \
4554
--set main.credentials.NETAPP_CONNECTOR_LICENSE="<your-license-key>" \
46-
--set main.env.DB_TYPE=postgres" \
55+
--set main.env.DB_TYPE="postgres" \
4756
--set main.env.DATABASE_URL="postgresql://user:password@hostname:5432/database"
4857
```
4958

@@ -68,13 +77,24 @@ For production environments, it is highly recommended to use a custom `values.ya
6877
DB_TYPE: "postgres" # or "mysql"
6978
DATABASE_URL: "postgresql://user:password@hostname:5432/database"
7079

71-
# --- Optional Ingress Configuration ---
80+
# --- Optional Backend Ingress Configuration ---
81+
ingress:
82+
enabled: true
83+
host: "api.connector.your-domain.com"
84+
className: "nginx"
85+
tls:
86+
- secretName: connector-api-tls-secret
87+
hosts:
88+
- api.connector.your-domain.com
89+
90+
ui:
91+
# --- Optional UI Ingress Configuration ---
7292
ingress:
7393
enabled: true
7494
host: "connector.your-domain.com"
75-
# className: "nginx" # Uncomment and set your IngressClass if needed
95+
className: "nginx"
7696
tls:
77-
- secretName: my-connector-tls-secret
97+
- secretName: connector-ui-tls-secret
7898
hosts:
7999
- connector.your-domain.com
80100
```
@@ -85,7 +105,7 @@ For production environments, it is highly recommended to use a custom `values.ya
85105
2. Install the chart using your custom values file:
86106

87107
```sh
88-
helm install netapp-connector innovation-labs/netapp-connector --version 26.11.1 \
108+
helm install netapp-connector innovation-labs/netapp-connector --version 25.11.2 \
89109
--namespace netapp-connector \
90110
--create-namespace \
91111
-f my-values.yaml
@@ -115,6 +135,32 @@ postgresql://username:password@hostname:5432/database_name
115135
mysql://username:password@hostname:3306/database_name
116136
```
117137
138+
## Accessing the Application
139+
140+
After installation, you can access the application in several ways:
141+
142+
### Option 1: Port Forwarding (Development)
143+
144+
Forward the UI service port to your local machine:
145+
146+
```sh
147+
kubectl port-forward -n netapp-connector svc/netapp-connector-ui 8080:80
148+
```
149+
150+
Then access the UI at `http://localhost:8080`
151+
152+
### Option 2: Ingress (Production)
153+
154+
Enable Ingress in your `values.yaml` to expose the UI externally. The UI will automatically proxy API requests to the backend service.
155+
156+
```yaml
157+
ui:
158+
ingress:
159+
enabled: true
160+
host: "connector.your-domain.com"
161+
className: "nginx"
162+
```
163+
118164
## Upgrading the Chart
119165
120166
To upgrade an existing release, use `helm upgrade`. The `--reuse-values` flag is recommended to preserve your existing configuration, including secrets. You can then override specific values, like the image tag.
@@ -123,11 +169,12 @@ To upgrade an existing release, use `helm upgrade`. The `--reuse-values` flag is
123169
# 1. Update your local chart repository
124170
helm repo update
125171
126-
# 2. Upgrade the release to a new version (e.g., 3.0.4)
172+
# 2. Upgrade the release to a new version
127173
helm upgrade netapp-connector innovation-labs/netapp-connector \
128174
--namespace netapp-connector \
129175
--reuse-values \
130-
--set main.image.tag="3.0.4"
176+
--set main.image.tag="3.0.5" \
177+
--set ui.image.tag="3.0.5"
131178
```
132179

133180
## Uninstallation
@@ -139,37 +186,136 @@ helm uninstall netapp-connector --namespace netapp-connector
139186
```
140187

141188
> [!NOTE]
142-
> This command removes the Deployment, Service, and other Kubernetes resources. Your external database data will remain intact as it's managed separately from the Helm chart.
189+
> This command removes the Deployments, Services, and other Kubernetes resources. Your external database data will remain intact as it's managed separately from the Helm chart.
143190

144191
## Configuration Parameters
145192

146-
The following table lists the configurable parameters of NetApp Neo chart and their default values.
193+
### Backend (Main) Configuration
147194

148195
| Parameter | Description | Default |
149196
|-----------|-------------|---------|
150-
| `main.name` | The base name for all created resources. | `netapp-connector-main` |
151-
| `main.replicaCount` | Number of connector pods to run. | `1` |
152-
| `main.image.repository` | The container image repository. | `ghcr.io/netapp/netapp-copilot-connector` |
153-
| `main.image.tag` | The container image tag. If empty, defaults to the chart's `appVersion`. | `""` |
197+
| `main.name` | The base name for backend resources. | `netapp-connector-main` |
198+
| `main.replicaCount` | Number of backend connector pods to run. | `1` |
199+
| `main.image.repository` | The backend container image repository. | `ghcr.io/netapp/netapp-copilot-connector` |
200+
| `main.image.tag` | The backend container image tag. If empty, defaults to the chart's `appVersion`. | `""` |
154201
| `main.image.pullPolicy` | The image pull policy. | `Always` |
155-
| `main.service.type` | The type of Kubernetes service to create. | `ClusterIP` |
156-
| `main.service.port` | The port exposed by the service and container. | `8080` |
157-
| `main.ingress.enabled` | If true, create an Ingress resource. | `false` |
158-
| `main.ingress.host` | The hostname for the Ingress rule. Required if Ingress is enabled. | `nil` |
159-
| `main.ingress.path` | The path for the Ingress rule. | `/` |
160-
| `main.ingress.pathType` | The path type for the Ingress rule (`Prefix`, `Exact`, `ImplementationSpecific`). | `Prefix` |
202+
| `main.service.type` | The type of Kubernetes service to create for backend. | `ClusterIP` |
203+
| `main.service.port` | The port exposed by the backend service and container. | `8080` |
204+
| `main.ingress.enabled` | If true, create an Ingress resource for the backend API. | `false` |
205+
| `main.ingress.host` | The hostname for the backend Ingress rule. | `nil` |
206+
| `main.ingress.path` | The path for the backend Ingress rule. | `/` |
207+
| `main.ingress.pathType` | The path type for the Ingress rule. | `Prefix` |
161208
| `main.ingress.className` | The `ingressClassName` to associate with the Ingress. | `""` |
162-
| `main.ingress.tls` | Ingress TLS configuration (list of objects with `secretName` and `hosts`). | `[]` |
163-
| `main.env.PORT` | The port the application runs on. | `8080` |
209+
| `main.ingress.tls` | Ingress TLS configuration. | `[]` |
210+
| `main.env.PORT` | The port the backend application runs on. | `8080` |
211+
| `main.env.PYTHONUNBUFFERED` | Python unbuffered output. | `1` |
164212
| `main.env.DB_TYPE` | Database type (`postgres` or `mysql`). | `postgres` |
165-
| `main.env.DATABASE_URL` | Database connection URL. **Must be provided by the user.** | `postgresql://postgres:neodbsecret@neodb:5432/neoconnectortest` |
213+
| `main.env.DATABASE_URL` | Database connection URL. **Must be provided by the user.** | `postgresql://postgres:neodbsecret@neodb:5432/neodb` |
166214
| `main.env.HTTPS_PROXY` | HTTPS proxy configuration. | `""` |
167215
| `main.env.PROXY_USERNAME` | Proxy username if authentication is required. | `""` |
168216
| `main.env.PROXY_PASSWORD` | Proxy password if authentication is required. | `""` |
169217
| `main.env.GRAPH_VERIFY_SSL` | Whether to verify SSL certificates for Microsoft Graph calls. | `""` |
170218
| `main.env.SSL_CERT_FILE` | Custom SSL certificate file content. | `""` |
219+
| `main.env.SSL_CERT_FILE_PATH` | Path to SSL certificate file. | `""` |
171220
| `main.env.GRAPH_TIMEOUT` | Timeout for Microsoft Graph API calls. | `""` |
172-
| `main.credentials.*` | Sensitive credentials stored in a Secret. **Must be provided by the user.** | (placeholders) |
221+
| `main.credentials.MS_GRAPH_CONNECTOR_ID` | Microsoft Graph connector ID. | `netappconnector` |
222+
| `main.credentials.MS_GRAPH_CONNECTOR_DESCRIPTION` | Description of the connector. | `(default description)` |
223+
| `main.credentials.MS_GRAPH_CLIENT_ID` | Microsoft Graph client ID. **Required.** | `tobeset` |
224+
| `main.credentials.MS_GRAPH_CLIENT_SECRET` | Microsoft Graph client secret. **Required.** | `tobeset` |
225+
| `main.credentials.MS_GRAPH_TENANT_ID` | Microsoft Graph tenant ID. **Required.** | `tobeset` |
226+
| `main.credentials.NETAPP_CONNECTOR_LICENSE` | NetApp connector license key. **Required.** | `tobeset` |
227+
228+
### UI Configuration
229+
230+
| Parameter | Description | Default |
231+
|-----------|-------------|---------|
232+
| `ui.name` | The base name for UI resources. | `netapp-connector-ui` |
233+
| `ui.replicaCount` | Number of UI pods to run. | `1` |
234+
| `ui.image.repository` | The UI container image repository. | `ghcr.io/beezy-dev/neo-ui-framework` |
235+
| `ui.image.tag` | The UI container image tag. | `3.0.4` |
236+
| `ui.image.pullPolicy` | The image pull policy. | `Always` |
237+
| `ui.service.type` | The type of Kubernetes service to create for UI. | `ClusterIP` |
238+
| `ui.service.port` | The port exposed by the UI service. | `80` |
239+
| `ui.ingress.enabled` | If true, create an Ingress resource for the UI. | `false` |
240+
| `ui.ingress.host` | The hostname for the UI Ingress rule. | `nil` |
241+
| `ui.ingress.path` | The path for the UI Ingress rule. | `/` |
242+
| `ui.ingress.pathType` | The path type for the Ingress rule. | `Prefix` |
243+
| `ui.ingress.className` | The `ingressClassName` to associate with the Ingress. | `""` |
244+
| `ui.ingress.tls` | Ingress TLS configuration. | `[]` |
245+
| `ui.env.PORT` | The port the UI nginx server runs on. | `80` |
246+
247+
## Networking Architecture
248+
249+
The chart creates the following networking topology:
250+
251+
```
252+
┌─────────────────┐
253+
│ External │
254+
│ Access │
255+
└────────┬────────┘
256+
257+
258+
┌─────────────────┐ ┌──────────────────┐
259+
│ UI Ingress │ │ API Ingress │
260+
│ (Optional) │ │ (Optional) │
261+
└────────┬────────┘ └────────┬─────────┘
262+
│ │
263+
▼ ▼
264+
┌─────────────────┐ ┌──────────────────┐
265+
│ UI Service │ │ Main Service │
266+
│ (ClusterIP) │ │ (ClusterIP) │
267+
│ Port: 80 │ │ Port: 8080 │
268+
└────────┬────────┘ └────────┬─────────┘
269+
│ │
270+
▼ ▼
271+
┌─────────────────┐ ┌──────────────────┐
272+
│ UI Pod(s) │────▶│ Backend Pod(s) │
273+
│ (nginx) │ │ (Python API) │
274+
│ /api/* proxy │ │ │
275+
└─────────────────┘ └──────────┬───────┘
276+
277+
278+
┌──────────────────┐
279+
│ External DB │
280+
│ (Postgres/MySQL)│
281+
└──────────────────┘
282+
```
283+
284+
The UI includes an nginx reverse proxy that automatically forwards requests from `/api/*` to the backend service at `http://netapp-connector-main:8080`, providing seamless API communication.
285+
286+
## Troubleshooting
287+
288+
### Check Pod Status
289+
290+
```sh
291+
kubectl get pods -n netapp-connector
292+
```
293+
294+
### View Backend Logs
295+
296+
```sh
297+
kubectl logs -n netapp-connector -l component=netapp-connector-main -f
298+
```
299+
300+
### View UI Logs
301+
302+
```sh
303+
kubectl logs -n netapp-connector -l component=netapp-connector-ui -f
304+
```
305+
306+
### Test Backend Connectivity from UI Pod
307+
308+
```sh
309+
kubectl exec -n netapp-connector -it deployment/netapp-connector-ui -- curl http://netapp-connector-main:8080/health
310+
```
311+
312+
### Verify Database Connection
313+
314+
Ensure your database is reachable from the cluster and the connection string is correct:
315+
316+
```sh
317+
kubectl exec -n netapp-connector -it deployment/netapp-connector-main -- env | grep DATABASE_URL
318+
```
173319

174320
---
175321
For more information, see the official [Helm documentation](https://helm.sh/docs/) and [Kubernetes documentation](https://kubernetes.io/docs/home/).

0 commit comments

Comments
 (0)