Skip to content
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
21 changes: 21 additions & 0 deletions charts/v3.4.7/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
apiVersion: v2
name: cloudcasa
version: "3.4.7"
appVersion: "3.1.0"
kubeVersion: ">=1.20.0-0"
description: CloudCasa backup, DR, and migration service agent for Kubernetes
annotations:
charts.openshift.io/name: CloudCasa Agent
cloudcasa.io/installation-method: "helm"
home: https://cloudcasa.io
icon: https://raw.githubusercontent.com/catalogicsoftware/cloudcasa-helmchart/gh-pages/logo.png
keywords:
- backup
- restore
- migration
- catalogic
- cloudcasa
- velero
maintainers:
- name: CloudCasa Support
email: support@cloudcasa.io
111 changes: 111 additions & 0 deletions charts/v3.4.7/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# CloudCasa Kubernetes Agent

[CloudCasa](https://cloudcasa.io) - Leader in Kubernetes Data Protection and Application Resilience

# Introduction

CloudCasa is a data protection, disaster recovery, migration, and replication solution for Kubernetes and cloud-native applications. Configuration is quick and easy, and trial service is free.

CloudCasa provides centralized backup, DR, and migration services for large, complex, multi-cluster, multi-cloud, and hybrid cloud environments. It includes multi-cloud account integration, managed backup storage, and advanced cross-cloud recovery.

With CloudCasa you don't need to be a storage or data protection expert to back up and restore your Kubernetes clusters.

This Helm chart installs and configures the CloudCasa agent on a Kubernetes cluster.
See the CloudCasa [Getting Started Guide](https://cloudcasa.io/get-started) for more information.

## Prerequisites

1. Kubernetes 1.20+
2. Helm 3.0+

## CloudCasa Deployment Options

CloudCasa supports both SaaS and self-hosted deployment models:

- **SaaS**: Use the default CloudCasa cloud-hosted service at https://home.cloudcasa.io
- **Self-Hosted**: Deploy CloudCasa in your own environment and configure the agent to connect to your self-hosted instance

## Installation

### Installing the CloudCasa Agent with SaaS

1. Log in to https://home.cloudcasa.io and add your Kubernetes cluster under Clusters/Overview. Note the returned cluster ID.
2. Add the CloudCasa Helm repo to your Helm configuration, if it hasn't been added already.
```
$ helm repo add cloudcasa-repo https://catalogicsoftware.github.io/cloudcasa-helmchart
```
3. To install the agent, execute the following helm commands, replacing ```<Cluster ID>``` with the Cluster ID obtained above:
```
$ helm repo update
$ helm install cloudcasa cloudcasa-repo/cloudcasa --set clusterID=<Cluster ID>
```
This will install the CloudCasa agent and complete registration of the cluster with the CloudCasa service.

### Installing the CloudCasa Agent with Self-Hosted

For self-hosted CloudCasa deployments, configure the server address and TLS settings:

1. Obtain your cluster ID from your self-hosted CloudCasa instance.
2. Add the CloudCasa Helm repo to your Helm configuration, if it hasn't been added already.
```
$ helm repo add cloudcasa-repo https://catalogicsoftware.github.io/cloudcasa-helmchart
```
3. To install the agent, execute the following helm commands, replacing the parameters with your self-hosted instance details:
```
$ helm repo update
$ helm install cloudcasa cloudcasa-repo/cloudcasa \
--set clusterID=<Cluster ID> \
--set server.address=<Your Self-Hosted Server Address>:<Port> \
--set server.skipTLSVerification=<true|false> \
--set image.repository=<Your Container Registry>/<Image Name> \
--set image.tag=<Image Tag>
```

**Server Configuration Parameters:**
- `server.address`: The address and port of your self-hosted CloudCasa server (default: agent.cloudcasa.io:443)
- `server.skipTLSVerification`: Skip TLS certificate verification (default: false) - useful for self-signed certificates in testing

**Container Image Parameters:**
- `image.repository`: The container registry and image name for your self-hosted environment (default: cloudcasaAgent.azurecr.io/catalogicsoftware/amds-kagent)
- `image.tag`: The image tag to use (default: 3.1.0-prod)

**Note:** For self-hosted deployments, ensure that the container image is available in your specified container registry and that the Kubernetes cluster has the necessary permissions to pull the image. If your registry requires authentication, you can use the `imagePullSecret` parameter to reference a Kubernetes secret with registry credentials.

### Updating the CloudCasa Agent
1. Log in to https://home.cloudcasa.io (for SaaS) or your self-hosted instance and obtain the cluster ID for your cluster. You can also obtain the current setting with the command ```helm get values cloudcasa```.
2. Execute the following commands to update the agent, replacing ```<Cluster ID>``` with the Cluster ID obtained above:
```
$ helm repo update
$ helm upgrade cloudcasa cloudcasa-repo/cloudcasa --set clusterID=<Cluster ID>
```
For self-hosted deployments, also include the `--set server.address=...` parameters as shown in the self-hosted installation section above.

### Uninstalling the CloudCasa Agent
1. Execute the following commands to uninstall CloudCasa.
```
$ helm uninstall cloudcasa
```

2. If you manually created the cloudcasa-io namespace in order to supply a container registry authentication secret (see below),
you may need to manually delete the namespace after uninstall with the command `kubectl delete namespace cloudcasa-io`.

3. CloudCasa creates some custom resource definitions on installation, which you can remove manually with the command `kubectl delete crd -l component=kubeagent-backup-helper`.

### Using an alternate image repository

The agent manager container can be installed from an alternate repository by setting values for image.repository and image.tag.
Add the options --set image.repository=<repository> and/or --set image.tag=<tag> to the helm install command.

Note that the alternate repository will also need to be set for the cluster in CloudCasa so that all agent containers will be loaded from it.
See the [CloudCasa User Guide](https://docs.cloudcasa.io/help/cluster-add.html) for more information.

If the registry you are using requires authentication, you can define a Kubernetes secret with the authentication information
and reference it by setting a value for imagePullSecret. Example: "--set imagePullSecret=registrySecret".
See the [Kubernetes Docs](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) for more information.
Note that the secret must be created in the cloudcasa-io namespace, so you may need to create the namespace first.
Also note that when uninstalling the agent, you may need to delete the cloudcasa-io namespace manually after running helm uninstall with "kubectl delete namespace cloudcasa-io".

Finally, the secret name will also need to be set in CloudCasa for the cluster, so that it will be used for all agent containers.
See the [CloudCasa User Guide](https://docs.cloudcasa.io/help/cluster-add.html) for more information.

*CloudCasa is a trademark of Catalogic Software, Inc.*
15 changes: 15 additions & 0 deletions charts/v3.4.7/templates/NOTES.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Please be patient while the CloudCasa agent is being deployed. It may take several minutes.

The agent is configured with cluster ID: {{ .Values.clusterID }}

Once the agent completes startup, the state shown for the cluster in the CloudCasa Clusters/Overview
page will change to "Active". If the cluster stays in the "Registered" or "Pending" state, you may have provided the wrong ClusterID.

{{- if eq .Values.server.address "agent.cloudcasa.io:443" }}
For SaaS deployments, visit: https://home.cloudcasa.io/clusters/overview
{{- else }}
For self-hosted deployments, check your CloudCasa instance's UI at the appropriate URL for your self-hosted environment.
{{- end }}

You can check the agent deployment status using the command: kubectl get pods -n cloudcasa-io

105 changes: 105 additions & 0 deletions charts/v3.4.7/templates/cluster-register.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
---
# This list contains the CloudCasa Agent Manager and RBAC resources
# required to deploy the Cloudcasa agent.
apiVersion: v1
kind: List
metadata:
name: cloudcasa-agent
items:
{{- if not (lookup "v1" "Namespace" "cloudcasa-io" "cloudcasa-io") }}
- apiVersion: v1
kind: Namespace
metadata:
creationTimestamp: null
labels:
component: kubeagent-backup-helper
name: cloudcasa-io
spec: {}
{{- end }}
- apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: null
labels:
component: kubeagent-backup-helper
name: cloudcasa-io
namespace: cloudcasa-io
- apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
creationTimestamp: null
labels:
component: kubeagent-backup-helper
name: cloudcasa-io
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: cloudcasa-io
namespace: cloudcasa-io
- apiVersion: apps/v1
kind: Deployment
metadata:
name: cloudcasa-kubeagent-manager
namespace: cloudcasa-io
labels:
component: cloudcasa-kubeagent-manager
spec:
selector:
matchLabels:
app: cloudcasa-kubeagent-manager
strategy:
type: Recreate
replicas: 1
template:
metadata:
labels:
app: cloudcasa-kubeagent-manager
spec:
{{- if .Values.imagePullSecret }}
imagePullSecrets:
- name: {{ .Values.imagePullSecret | quote }}
{{- end }}
containers:
- image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
args: ["/usr/local/bin/kubeagentmanager", "--server_addr", "{{ .Values.server.address }}", "--tls", "true", "--skip_tls_verification", "{{ .Values.server.skipTLSVerification }}"]
name: kubeagentmanager
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
volumeMounts:
- mountPath: /scratch
name: scratch
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: AMDS_CLUSTER_ID
value: {{ .Values.clusterID }}
- name: KUBEMOVER_IMAGE
value: {{ .Values.image.repository }}:{{ .Values.image.tag }}
- name: DEPLOYMENT_PLATFORM
{{- if (lookup "v1" "Namespace" "" "cattle-system") }}
value: "rancher"
{{- else if (lookup "v1" "Namespace" "" "openshift") }}
value: "openshift"
{{- else }}
value: "other"
{{- end }}
- name: AGENT_INSTALLATION_METHOD
value: {{ (index .Chart.Annotations "cloudcasa.io/installation-method" | default "helm") | quote }}
- name: GRPC_ENFORCE_ALPN_ENABLED
value: "false"
restartPolicy: Always
terminationGracePeriodSeconds: 0
serviceAccountName: cloudcasa-io
volumes:
- emptyDir: {}
name: scratch
22 changes: 22 additions & 0 deletions charts/v3.4.7/templates/tests/test-agent.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
apiVersion: v1
kind: Pod
metadata:
name: "cloudcasa-test-agent"
namespace: cloudcasa-io
annotations:
"helm.sh/hook": test
spec:
{{ if .Values.imagePullSecret }}
imagePullSecrets:
- name: {{ .Values.imagePullSecret | quote }}
{{ end }}
containers:
- name: kubeagentmanager-test
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
command: ["bin/bash", "-c"]
args:
- kubectl get deployment cloudcasa-kubeagent-manager
- -o=jsonpath='{.status.conditions[?(@.type=="Available")].status}' |
- grep -q "True"
serviceAccountName: cloudcasa-io
restartPolicy: Never
55 changes: 55 additions & 0 deletions charts/v3.4.7/values.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "Values",
"type": "object",
"properties": {
"clusterID": {
"description": "Cluster ID",
"type": "string"
},
"image": {
"description": "Container Image",
"type": "object",
"properties": {
"repository": {
"type": "string"
},
"tag": {
"type": "string"
}
},
"required": [
"repository",
"tag"
]
},
"imagePullSecret": {
"description": "Name of secret to use for image registry credentials",
"type": [
"string",
"null"
]
},
"server": {
"description": "CloudCasa server configuration",
"type": "object",
"properties": {
"address": {
"description": "Server address and port",
"type": "string"
},
"skipTLSVerification": {
"description": "Skip TLS certificate verification (useful for self-signed certificates)",
"type": "boolean"
}
},
"required": [
"address",
"skipTLSVerification"
]
}
},
"required": [
"image"
]
}
15 changes: 15 additions & 0 deletions charts/v3.4.7/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# clusterID is the CloudCasa Cluster ID. To be provided by the user.
clusterID: ""

# image is the container repository and tag for the agent manager
image:
repository: "cloudcasaAgent.azurecr.io/catalogicsoftware/amds-kagent"
tag: "3.1.0-prod"

# imagePullSecret is the name of the secret to use for image registry credentials (optional)
imagePullSecret:

# server is the configuration for the CloudCasa server.
server:
address: "agent.cloudcasa.io:443"
skipTLSVerification: false
Loading