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

RBAC bug fix and helm-charts update #340

Open
wants to merge 4 commits into
base: master
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
1 change: 1 addition & 0 deletions config/rbac/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,7 @@ rules:
- delete
- get
- list
- update
- watch
- apiGroups:
- ""
Expand Down
42 changes: 25 additions & 17 deletions helm-charts/aerospike-backup-service/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Aerospike Backup Service (Custom Resource) Helm Chart

A Helm chart for `AerospikeBackupService` custom resource to be used with the Aerospike Kubernetes Operator.
A Helm chart for `AerospikeBackupService` (ABS) custom resource to be used with the Aerospike Kubernetes Operator.

## Pre Requisites

Expand All @@ -18,9 +18,21 @@ helm repo update

### Deploy Aerospike Backup Service

#### Prepare the namespace

We recommend using one ABS deployment per Aerospike cluster.

Create the service account for the ABS in the namespace where Aerospike cluster is deployed

```sh
kubectl create serviceaccount aerospike-backup-service -n <namespace>
```

> Note: ServiceAccount name can be configured. Update the configured ServiceAccount in a ABS CR file to use a different service account name.

#### Install the chart

`<namespace>` used to install Aerospike backup service chart must be included in `watchNamespaces` value of
`<namespace>` used to install ABS chart must be included in `watchNamespaces` value of
aerospike-kubernetes-operator's `values.yaml`

```sh
Expand All @@ -38,22 +50,18 @@ helm install aerospike-backup-service aerospike/aerospike-backup-service \

## Configurations

| Name | Description | Default |
|------------------------------|-------------------------------------------------------------------------------|--------------------------------------|
| `image.repository` | Aerospike backup service container image repository | `aerospike/aerospike-backup-service` |
| `image.tag` | Aerospike backup service container image tag | `3.0.0` |
| `customLabels` | Custom labels to add on the AerospikeBackupService resource | `{}` (nil) |
| `serviceAccount.create` | Enable ServiceAccount creation for Aerospike backup service. | true |
| `serviceAccount.annotations` | ServiceAccount annotations | `{}` (nil) |
| `backupServiceConfig` | Aerospike backup service configuration | `{}` (nil) |
| `secrets` | Secrets to be mounted in the Aerospike Backup Service pod like aws creds etc. | `[]` (nil) |
| `resources` | Aerospike backup service pod resource requirements | `{}` (nil) |
| `service` | Kubernetes service configuration for Aerospike backup service | `{}` (nil) |

| Name | Description | Default |
|-----------------------|-------------------------------------------------------------------------------|--------------------------------------|
| `image.repository` | Aerospike backup service container image repository | `aerospike/aerospike-backup-service` |
| `image.tag` | Aerospike backup service container image tag | `3.0.0` |
| `customLabels` | Custom labels to add on the Aerospike backup service resource | `{}` (nil) |
| `backupServiceConfig` | Aerospike backup service configuration | `{}` (nil) |
| `secrets` | Secrets to be mounted in the Aerospike backup service pod like aws creds etc. | `[]` (nil) |
| `resources` | Aerospike backup service pod resource requirements | `{}` (nil) |
| `service` | Kubernetes service configuration for Aerospike backup service | `{}` (nil) |
| `podSpec` | Aerospike backup service pod configuration | `{}` (nil) |

### Configurations Explained

[//]: # (TODO: Update below link when the documentation is available.)
Refer
to [AerospikeBackupService Customer Resource Spec](https://docs.aerospike.com/cloud/kubernetes/operator/cluster-configuration-settings#spec)
to [AerospikeBackupService Customer Resource Spec](https://aerospike.com/docs/cloud/kubernetes/operator/backup-and-restore/backup-service-configuration#spec)
for details on above [configuration fields](#Configurations)
1 change: 0 additions & 1 deletion helm-charts/aerospike-backup-service/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ backupServiceConfig: {}
# backup-policies:
# test-policy:
# parallel: 3
# remove-files: KeepAll
# storage:
# local:
# local-storage:
Expand Down
4 changes: 1 addition & 3 deletions helm-charts/aerospike-backup/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,6 @@ helm install aerospike-backup aerospike/aerospike-backup \
| `onDemandBackups[*].delay` | Delay interval before starting the on-demand backup | |

### Configurations Explained

[//]: # (TODO: Update below link when the documentation is available.)
Refer
to [AerospikeBackup Customer Resource Spec](https://docs.aerospike.com/cloud/kubernetes/operator/cluster-configuration-settings#spec)
to [AerospikeBackup Customer Resource Spec](https://aerospike.com/docs/cloud/kubernetes/operator/backup-and-restore/backup-configuration#spec)
for details on above [configuration fields](#Configurations)
2 changes: 1 addition & 1 deletion helm-charts/aerospike-cluster/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,4 +116,4 @@ validationPolicy:

### Configurations Explained

Refer to [AerospikeCluster Customer Resource Spec](https://docs.aerospike.com/cloud/kubernetes/operator/cluster-configuration-settings#spec) for details on above [configuration fields](#Configurations)
Refer to [AerospikeCluster Customer Resource Spec](https://aerospike.com/docs/cloud/kubernetes/operator/configuration/Cluster-configuration-settings#spec) for details on above [configuration fields](#Configurations)
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ rules:
- get
- list
- watch
- update
- apiGroups:
- ""
resources:
Expand Down
4 changes: 1 addition & 3 deletions helm-charts/aerospike-restore/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,6 @@ helm install aerospike-restore aerospike/aerospike-restore \
| `pollingPeriod` | Polling period for restore operation status | `60s` |

### Configurations Explained

[//]: # (TODO: Update below link when the documentation is available.)
Refer
to [AerospikeRestore Customer Resource Spec](https://docs.aerospike.com/cloud/kubernetes/operator/cluster-configuration-settings#spec)
to [AerospikeRestore Customer Resource Spec](https://aerospike.com/docs/cloud/kubernetes/operator/backup-and-restore/restore-configuration#spec)
for details on above [configuration fields](#Configurations)
62 changes: 38 additions & 24 deletions internal/controller/backup-service/reconciler.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,8 @@ func (r *SingleBackupServiceReconciler) Reconcile() (result ctrl.Result, recErr
return ctrl.Result{}, err
}

r.Log.Info("Reconcile completed successfully")

return ctrl.Result{}, nil
}

Expand Down Expand Up @@ -254,22 +256,16 @@ func (r *SingleBackupServiceReconciler) getConfigMapData() map[string]string {
}

func (r *SingleBackupServiceReconciler) reconcileDeployment() error {
var deploy app.Deployment

if err := r.Client.Get(context.TODO(),
types.NamespacedName{
Namespace: r.aeroBackupService.Namespace,
Name: r.aeroBackupService.Name,
}, &deploy,
); err != nil {
deployment, err := r.getBackupSvcDeployment()
if err != nil {
if !errors.IsNotFound(err) {
return err
}

r.Log.Info("Creating Backup Service deployment",
"name", getBackupServiceName(r.aeroBackupService))

deployment, err := r.getDeploymentObject()
deployment, err = r.getDeploymentObject()
if err != nil {
return err
}
Expand Down Expand Up @@ -300,16 +296,16 @@ func (r *SingleBackupServiceReconciler) reconcileDeployment() error {
"name", getBackupServiceName(r.aeroBackupService),
)

oldResourceVersion := deploy.ResourceVersion
oldResourceVersion := deployment.ResourceVersion

desiredDeployObj, err := r.getDeploymentObject()
if err != nil {
return err
}

deploy.Spec = desiredDeployObj.Spec
deployment.Spec = desiredDeployObj.Spec

if err = r.Client.Update(context.TODO(), &deploy, common.UpdateOption); err != nil {
if err = r.Client.Update(context.TODO(), deployment, common.UpdateOption); err != nil {
return fmt.Errorf("failed to update Backup service deployment: %v", err)
}

Expand All @@ -318,7 +314,7 @@ func (r *SingleBackupServiceReconciler) reconcileDeployment() error {
r.Recorder.Eventf(r.aeroBackupService, corev1.EventTypeNormal, "DeploymentUpdated",
"Updated Backup Service Deployment %s/%s", r.aeroBackupService.Namespace, r.aeroBackupService.Name)

if oldResourceVersion != deploy.ResourceVersion {
if oldResourceVersion != deployment.ResourceVersion {
r.Log.Info("Deployment spec is updated, will result in rolling restart")
return r.waitForDeploymentToBeReady()
}
Expand Down Expand Up @@ -349,7 +345,22 @@ func (r *SingleBackupServiceReconciler) reconcileDeployment() error {
r.Log.Info("Reloaded backup service")
}

return nil
return r.waitForDeploymentToBeReady()
}

func (r *SingleBackupServiceReconciler) getBackupSvcDeployment() (*app.Deployment, error) {
var deployment app.Deployment

if err := r.Client.Get(context.TODO(),
types.NamespacedName{
Namespace: r.aeroBackupService.Namespace,
Name: r.aeroBackupService.Name,
}, &deployment,
); err != nil {
return nil, err
}

return &deployment, nil
}

func (r *SingleBackupServiceReconciler) updateBackupSvcConfig() error {
Expand Down Expand Up @@ -690,6 +701,18 @@ func (r *SingleBackupServiceReconciler) waitForDeploymentToBeReady() error {

if err := wait.PollUntilContextTimeout(context.TODO(),
podStatusRetryInterval, podStatusTimeout, true, func(ctx context.Context) (done bool, err error) {
deployment, err := r.getBackupSvcDeployment()
if err != nil {
return false, err
}

// This check is for the condition when deployment rollout is yet to begin, and
// pods with new spec are yet to be created.
if deployment.Generation > deployment.Status.ObservedGeneration {
r.Log.Info("Waiting for deployment to be ready")
return false, nil
}

podList, err := common.GetBackupServicePodList(r.Client, r.aeroBackupService.Name, r.aeroBackupService.Namespace)
if err != nil {
return false, err
Expand All @@ -713,16 +736,7 @@ func (r *SingleBackupServiceReconciler) waitForDeploymentToBeReady() error {
}
}

var deploy app.Deployment
if err := r.Client.Get(
ctx,
types.NamespacedName{Name: r.aeroBackupService.Name, Namespace: r.aeroBackupService.Namespace},
&deploy,
); err != nil {
return false, err
}

if deploy.Status.Replicas != *deploy.Spec.Replicas {
if deployment.Status.Replicas != *deployment.Spec.Replicas {
return false, nil
}

Expand Down
2 changes: 2 additions & 0 deletions internal/controller/backup/reconciler.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ func (r *SingleBackupReconciler) Reconcile() (result ctrl.Result, recErr error)
return reconcile.Result{}, err
}

r.Log.Info("Reconcile completed successfully")

return ctrl.Result{}, nil
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ type RackState struct {
Size int
}

// +kubebuilder:rbac:groups=core,resources=pods,verbs=get;list;watch;delete
// +kubebuilder:rbac:groups=core,resources=pods,verbs=get;list;watch;delete;update
// +kubebuilder:rbac:groups=core,resources=pods/exec,verbs=create
// +kubebuilder:rbac:groups=core,resources=services,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=core,resources=persistentvolumeclaims,verbs=get;list;watch;create;update;patch;delete
Expand Down
2 changes: 2 additions & 0 deletions internal/controller/restore/reconciler.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ func (r *SingleRestoreReconciler) Reconcile() (result ctrl.Result, recErr error)
r.Recorder.Eventf(r.aeroRestore, corev1.EventTypeNormal, "RestoreCompleted",
"Restore completed successfully %s/%s", r.aeroRestore.Namespace, r.aeroRestore.Name)

r.Log.Info("Reconcile completed successfully")

return ctrl.Result{}, nil
}

Expand Down
Loading