Skip to content

Conversation

evanwave
Copy link
Contributor

Motivation

Currently, Function deployments are hardcoded to use 1 replica, which limits the ability to scale functions based on workload requirements. This change adds a configurable replicas field to the Function CRD, allowing users to specify the desired number of replicas for their function deployments. This enables horizontal scaling of functions to handle increased load and improve availability.

Modifications

  • Function CRD Enhancement: Added replicas field to FunctionSpec with validation and default value of 1
  • Controller Logic: Updated FunctionReconciler to use the specified replicas when creating deployments
  • CRD Generation: Updated generated deepcopy functions and CRD YAML files to include the new field
  • Testing: Added comprehensive test cases to verify replica configuration works correctly, including:
    • Custom replica specification
    • Replica updates
    • Default replica behavior when not specified
  • Gitignore Updates: Added macOS-specific ignore patterns (.DS_Store and ._* files) to prevent accidental commits

The implementation maintains backward compatibility by defaulting to 1 replica when the field is not specified, ensuring existing function deployments continue to work without modification.

@evanwave evanwave self-assigned this Jul 20, 2025
@RobertIndie RobertIndie requested a review from Copilot July 20, 2025 10:51
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds a configurable replicas field to the Function CRD to enable horizontal scaling of function deployments, replacing the hardcoded single replica limit. The implementation maintains backward compatibility by defaulting to 1 replica when not specified.

  • Added replicas field to FunctionSpec with proper validation and default value
  • Updated controller logic to use the specified replica count when creating deployments
  • Added comprehensive test coverage for custom replicas, replica updates, and default behavior

Reviewed Changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
operator/api/v1alpha1/function_types.go Added replicas field to FunctionSpec struct with kubebuilder annotations
operator/internal/controller/function_controller.go Updated reconciler to use configurable replicas instead of hardcoded value
operator/internal/controller/function_controller_test.go Added comprehensive test cases for replica configuration scenarios
operator/api/v1alpha1/zz_generated.deepcopy.go Updated generated deepcopy function to handle the new replicas pointer field
operator/config/crd/bases/fs.functionstream.github.io_functions.yaml Updated CRD schema to include replicas field definition
operator/deploy/chart/templates/crd/fs.functionstream.github.io_functions.yaml Updated Helm chart CRD template with replicas field
operator/scripts/deploy.yaml Updated deployment YAML with replicas field schema

@RobertIndie RobertIndie merged commit 2ce7841 into main Jul 20, 2025
5 checks passed
@RobertIndie RobertIndie deleted the function-replicas branch July 20, 2025 10:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants