Skip to content

Commit

Permalink
feat(pdb): add PodDisruptionBudget support
Browse files Browse the repository at this point in the history
  • Loading branch information
lwpk110 committed Nov 11, 2024
1 parent 43ea166 commit 8530ac5
Show file tree
Hide file tree
Showing 9 changed files with 98 additions and 169 deletions.
2 changes: 1 addition & 1 deletion api/v1alpha1/hivemetastore_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ type RoleSpec struct {
RoleGroups map[string]*RoleGroupSpec `json:"roleGroups"`

// +kubebuilder:validation:Optional
PodDisruptionBudget *commonsv1alpha1.PodDisruptionBudgetSpec `json:"podDisruptionBudget,omitempty"`
RoleConfig *commonsv1alpha1.RoleConfigSpec `json:"roleConfig,omitempty"`

// +kubebuilder:validation:Optional
CliOverrides []string `json:"cliOverrides,omitempty"`
Expand Down
42 changes: 0 additions & 42 deletions api/v1alpha1/resources.go

This file was deleted.

117 changes: 3 additions & 114 deletions api/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 15 additions & 12 deletions config/crd/bases/zncdata.dev_hivemetastores.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1308,19 +1308,22 @@ spec:
additionalProperties:
type: string
type: object
podDisruptionBudget:
description: |-
This struct is used to configure:
1. If PodDisruptionBudgets are created by the operator
2. The allowed number of Pods to be unavailable (`maxUnavailable`)
roleConfig:
properties:
enabled:
default: true
type: boolean
maxUnavailable:
format: int32
type: integer
podDisruptionBudget:
description: |-
This struct is used to configure:
1. If PodDisruptionBudgets are created by the operator
2. The allowed number of Pods to be unavailable (`maxUnavailable`)
properties:
enabled:
default: true
type: boolean
maxUnavailable:
format: int32
type: integer
type: object
type: object
roleGroups:
additionalProperties:
Expand Down
12 changes: 12 additions & 0 deletions config/rbac/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,18 @@ rules:
- patch
- update
- watch
- apiGroups:
- policy
resources:
- poddisruptionbudgets
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- s3.zncdata.dev
resources:
Expand Down
1 change: 1 addition & 0 deletions internal/controller/metastore_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ type HiveMetastoreReconciler struct {
// +kubebuilder:rbac:groups=core,resources=pods,verbs=get;list;watch
// +kubebuilder:rbac:groups=s3.zncdata.dev,resources=s3connections,verbs=get;list;watch
// +kubebuilder:rbac:groups=s3.zncdata.dev,resources=s3buckets,verbs=get;list;watch
// +kubebuilder:rbac:groups=policy,resources=poddisruptionbudgets,verbs=get;list;watch;create;update;patch;delete

func (r *HiveMetastoreReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
log.Info("Reconciling instance")
Expand Down
11 changes: 11 additions & 0 deletions test/e2e/pdb/chainsaw-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
name: pdb
spec:
steps:
- try:
- apply:
file: hive.yaml
- assert:
file: hive-assert.yaml
26 changes: 26 additions & 0 deletions test/e2e/pdb/hive-assert.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: hive-vector-metastore-default
status:
availableReplicas: 1
readyReplicas: 1
replicas: 1
---
apiVersion: v1
kind: ConfigMap
metadata:
name: hive-vector-metastore-default
---
apiVersion: v1
kind: Service
metadata:
name: hive-vector-metastore-default
---
# pdb
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: hive-vector-metastore
spec:
maxUnavailable: 2
29 changes: 29 additions & 0 deletions test/e2e/pdb/hive.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
apiVersion: v1
kind: Secret
metadata:
name: hive
type: Opaque
stringData:
username: hive
password: hive
---
apiVersion: zncdata.dev/v1alpha1
kind: HiveMetastore
metadata:
name: hive-vector
spec:
clusterConfig:
database:
databaseType: derby
connectionString: jdbc:derby:;databaseName=metastore_db;create=true
credentialsSecret: hive
metastore:
roleConfig:
podDisruptionBudget:
maxUnavailable: 2
roleGroups:
default:
config:
warehouseDir: /kubedoop/warehouse
replicas: 1

0 comments on commit 8530ac5

Please sign in to comment.