From 6415d14004f718b49e89621c9c2f5691c1f00744 Mon Sep 17 00:00:00 2001 From: willdavsmith Date: Mon, 3 Feb 2025 13:32:29 -0800 Subject: [PATCH 1/4] Thank you Copilot Signed-off-by: willdavsmith --- tools/2025-01-gitops-technical-design.md | 343 +++++++++++++++++++++++ 1 file changed, 343 insertions(+) create mode 100644 tools/2025-01-gitops-technical-design.md diff --git a/tools/2025-01-gitops-technical-design.md b/tools/2025-01-gitops-technical-design.md new file mode 100644 index 00000000..fdf4dcfe --- /dev/null +++ b/tools/2025-01-gitops-technical-design.md @@ -0,0 +1,343 @@ +# Radius Flux Controller Design + +* **Author**: Will Smith (@willdavsmith) + +## Overview + + + +The Radius Flux Controller is a key component of the Radius GitOps feature. It is responsible for reading the Git repository, compiling Bicep files, and creating the DeploymentTemplate resources on the cluster. This controller ensures that the infrastructure defined in the Git repository is accurately reflected in the Kubernetes cluster, enabling a seamless GitOps workflow. + +## Terms and definitions + + + +- **GitOps**: A set of practices to manage infrastructure and application configurations using Git. +- **Bicep**: A domain-specific language (DSL) for deploying Azure resources declaratively. +- **DeploymentTemplate**: A custom resource in Kubernetes that represents the desired state of a deployment. + +## Objectives + + + +> **Issue Reference:** #6689 + +### Goals + + + +- Enable seamless integration of GitOps workflows with Radius. +- Automate the process of reading, compiling, and deploying infrastructure as code (IaC) from a Git repository. +- Ensure that the infrastructure defined in the Git repository is accurately reflected in the Kubernetes cluster. + +### Non goals + + + +- Implementing advanced error handling and recovery mechanisms. +- Supporting non-Bicep IaC formats. +- Providing a user interface for managing GitOps workflows. + +### User scenarios (optional) + + + +#### User story 1 + +As a DevOps engineer, I want to automate the deployment of my infrastructure using GitOps so that I can ensure consistency and reliability in my deployments. + +#### User story 2 + +As a developer, I want to define my infrastructure as code in a Git repository and have it automatically deployed to my Kubernetes cluster. + +## User Experience (if applicable) + + +**Sample Input:** + +git push origin main + +**Sample Output:** + +DeploymentTemplate resources created successfully. + +**Sample Recipe Contract:** + +N/A + +## Design + +### High Level Design + + +The Radius Flux Controller reads the Git repository, compiles Bicep files, and creates DeploymentTemplate resources on the cluster. It interacts with the DeploymentTemplate controller to ensure that the desired state defined in the Git repository is accurately reflected in the Kubernetes cluster. + +### Architecture Diagram + + +!Architecture Diagram + +### Detailed Design + + + +#### Advantages (of each option considered) + + +- Seamless integration with existing GitOps workflows. +- Automated deployment of infrastructure as code. +- Consistency and reliability in deployments. + +#### Disadvantages (of each option considered) + + +- Limited to Bicep IaC format. +- Requires integration with the DeploymentTemplate controller. + +#### Proposed Option + + +The proposed option is to implement the Radius Flux Controller as described, leveraging the existing DeploymentTemplate controller for managing the desired state of the infrastructure. + +### API design (if applicable) + + + +N/A + +### CLI Design (if applicable) + + +N/A + +### Implementation Details + + +- **Controller**: Implement the Radius Flux Controller to read the Git repository, compile Bicep files, and create DeploymentTemplate resources. +- **Processor**: Ensure that the compiled Bicep files are processed correctly. +- **Renderer**: Render the DeploymentTemplate resources based on the compiled Bicep files. +- **Recipe Engine**: Integrate with the existing recipe engine to manage the deployment process. + +#### UCP (if applicable) +N/A + +#### Bicep (if applicable) +N/A + +#### Deployment Engine (if applicable) +N/A + +#### Core RP (if applicable) +N/A + +#### Portable Resources / Recipes RP (if applicable) +N/A + +### Error Handling + + +- **Git Repository Not Found**: Log an error and retry after a specified interval. +- **Bicep Compilation Error**: Log the error and notify the user. +- **DeploymentTemplate Creation Error**: Log the error and retry after a specified interval. + +## Test plan + + + +- **Unit Tests**: Test the individual components of the Radius Flux Controller. +- **Integration Tests**: Test the integration with the Git repository and the DeploymentTemplate controller. +- **End-to-End Tests**: Test the entire GitOps workflow from pushing changes to the Git repository to deploying the infrastructure on the Kubernetes cluster. + +## Security + + + +The Radius Flux Controller will use existing authentication mechanisms to access the Git repository and Kubernetes cluster. Secrets and credentials will be stored securely using Kubernetes Secrets. No new cryptographic methods are introduced. + +## Compatibility (optional) + + + +The Radius Flux Controller is compatible with existing Radius components and does not introduce any breaking changes. + +## Monitoring and Logging + + + +- **Metrics**: Track the number of successful and failed deployments. +- **Logs**: Log all actions performed by the Radius Flux Controller, including errors and retries. +- **Tracing**: Implement tracing to track the flow of operations from reading the Git repository to deploying the infrastructure. + +## Development plan + + + +- **Phase 1**: Implement the basic functionality of the Radius Flux Controller. +- **Phase 2**: Integrate with the DeploymentTemplate controller. +- **Phase 3**: Implement error handling and retry mechanisms. +- **Phase 4**: Write unit, integration, and end-to-end tests. +- **Phase 5**: Monitor and log the Radius Flux Controller's actions. + +## Open Questions + + + +- How should we handle large Git repositories with many Bicep files? +- What is the best way to notify users of errors during the deployment process? + +## Alternatives considered + + + +- **Alternative 1**: Use a different IaC format instead of Bicep. Rejected because Bicep is the preferred format for Azure resources. +- **Alternative 2**: Implement a custom deployment controller instead of using the DeploymentTemplate controller. Rejected because the DeploymentTemplate controller provides the necessary functionality. + +## Design Review Notes + + + +To be updated after the design review meeting. From fa54e8e4f0840eb626075c499e135ad19c90ebad Mon Sep 17 00:00:00 2001 From: willdavsmith Date: Mon, 3 Feb 2025 15:01:42 -0800 Subject: [PATCH 2/4] wip Signed-off-by: willdavsmith --- tools/2025-01-gitops-technical-design.md | 346 +++++++++++------- .../2025-01-gitops-technical-design/rfc-1.png | Bin 0 -> 78541 bytes .../2025-01-gitops-technical-design/rfc-2.png | Bin 0 -> 61284 bytes 3 files changed, 219 insertions(+), 127 deletions(-) create mode 100644 tools/2025-01-gitops-technical-design/rfc-1.png create mode 100644 tools/2025-01-gitops-technical-design/rfc-2.png diff --git a/tools/2025-01-gitops-technical-design.md b/tools/2025-01-gitops-technical-design.md index fdf4dcfe..6b20f8ad 100644 --- a/tools/2025-01-gitops-technical-design.md +++ b/tools/2025-01-gitops-technical-design.md @@ -12,7 +12,7 @@ team. Do not provide the design details in this, section - there is a dedicated section for that later in the document. --> -The Radius Flux Controller is a key component of the Radius GitOps feature. It is responsible for reading the Git repository, compiling Bicep files, and creating the DeploymentTemplate resources on the cluster. This controller ensures that the infrastructure defined in the Git repository is accurately reflected in the Kubernetes cluster, enabling a seamless GitOps workflow. +The Radius Flux Controller is a new Radius control plane service that, along with the Radius DeploymentTemplate Controller, enables GitOps practices for Radius users. It is responsible for reading the Git repository, compiling Bicep files, and creating the DeploymentTemplate resources on the cluster. This controller ensures that the infrastructure defined in the Git repository is accurately reflected in the Kubernetes cluster, enabling a seamless GitOps workflow. ## Terms and definitions @@ -25,7 +25,7 @@ be specific to this design context. - **GitOps**: A set of practices to manage infrastructure and application configurations using Git. - **Bicep**: A domain-specific language (DSL) for deploying Azure resources declaratively. -- **DeploymentTemplate**: A custom resource in Kubernetes that represents the desired state of a deployment. +- **DeploymentTemplate**: A custom resource in Kubernetes that represents the desired state of a Bicep deployment. ## Objectives @@ -47,9 +47,9 @@ Describe goals to define why we are doing this work, how we will make priority decisions, and how we will determine success. --> -- Enable seamless integration of GitOps workflows with Radius. -- Automate the process of reading, compiling, and deploying infrastructure as code (IaC) from a Git repository. -- Ensure that the infrastructure defined in the Git repository is accurately reflected in the Kubernetes cluster. +- Enable seamless integration of GitOps workflows with Radius + Bicep. Users should be able to specify their Bicep files and parameters in a Git repository and have the resources within them automatically deployed to their Kubernetes cluster. +- Ensure that the infrastructure defined in the Git repository is accurately reflected in the Kubernetes cluster. This includes creating, updating, and deleting resources as necessary, based on the changes in the Git repository. +- Provide an experience that is consistent with existing Flux workflows. Users should be able to use Flux as they do today, with the addition of the Radius Flux Controller for managing Bicep files. ### Non goals @@ -61,9 +61,9 @@ we plan to do in the future, but are out of scope of this design, list them here. Provide a brief explanation on why this is a non-goal. --> -- Implementing advanced error handling and recovery mechanisms. +- Supporting non-Flux GitOps tools (e.g., ArgoCD). - Supporting non-Bicep IaC formats. -- Providing a user interface for managing GitOps workflows. +- Radius Dashboard support ### User scenarios (optional) @@ -74,35 +74,9 @@ If you have an existing issue that describes the user scenarios, please link to that issue instead. --> -#### User story 1 +#### Helly can use Radius and Bicep to simplify application and infrastructure management -As a DevOps engineer, I want to automate the deployment of my infrastructure using GitOps so that I can ensure consistency and reliability in my deployments. - -#### User story 2 - -As a developer, I want to define my infrastructure as code in a Git repository and have it automatically deployed to my Kubernetes cluster. - -## User Experience (if applicable) - - -**Sample Input:** - -git push origin main - -**Sample Output:** - -DeploymentTemplate resources created successfully. - -**Sample Recipe Contract:** - -N/A +Helly is an infrastructure operator for an enterprise company. Her team manages a production application that is deployed on Kubernetes and uses AWS resources. To simplify the management of the application and infrastructure, Helly decides to use Radius and Bicep. She writes Bicep manifests that define the AWS resources required by the application, such as S3 buckets and RDS databases, as well as Radius resources that define container applications. Helly then uploads these Bicep files to a Git repository. She then writes a Flux configuration which includes Flux installation, Radius installation, and Flux setup for tracking her Git repository. Finally, Helly applies the Flux configuration to her Kubernetes cluster, and Radius deploys the resources defined in the Bicep manifests to the cluster. Now, any changes to the Bicep files in the Git repository are automatically reflected in the Kubernetes cluster, enabling a seamless GitOps workflow. ## Design @@ -129,9 +103,11 @@ components interact with each other in the context of this proposal. Include separate high level architecture diagram and component specific diagrams, wherever appropriate. --> -!Architecture Diagram +![Architecture Diagram Part 1](2025-01-gitops-technical-design/rfc-1.png) + +![Architecture Diagram Part 2](2025-01-gitops-technical-design/rfc-2.png) -### Detailed Design +### Detailed Design: Radius Flux Controller -#### Advantages (of each option considered) - - -- Seamless integration with existing GitOps workflows. -- Automated deployment of infrastructure as code. -- Consistency and reliability in deployments. - -#### Disadvantages (of each option considered) - - -- Limited to Bicep IaC format. -- Requires integration with the DeploymentTemplate controller. - -#### Proposed Option - - -The proposed option is to implement the Radius Flux Controller as described, leveraging the existing DeploymentTemplate controller for managing the desired state of the infrastructure. - -### API design (if applicable) - - - -N/A - -### CLI Design (if applicable) - - -N/A +The Radius Flux Controller will be implemented as a new controller in the `controller` service. Here is the high-level control loop of the new controller: + +1. The controller lists all `GitRepository` resources in the cluster. +1. For each `GitRepository`, the controller parses the contents of the Git repository. +1. The controller checks for a `radius-config.yaml` file in the repository. If the file is not present, then the controller skips the repository. +1. The controller reads the `radius-config.yaml` file and extracts the Bicep compilation instructions, such as the Bicep file path and parameters. +1. The controller compiles the Bicep file using the Bicep CLI, which is installed on the controller. +1. The controller creates (or updates) a `DeploymentTemplate` resource on the cluster with the compiled Bicep file as the template. +1. The controller lists all `DeploymentTemplate` resources in the cluster that have been created from this Git repository and deletes any resources that are not present in the Git repository. +1. The controller repeats this process at a regular interval to ensure that the resources in the Git repository are accurately reflected in the Kubernetes cluster. + +The following is a detailed description of the major steps in the control loop. + +#### Reading the Git Repository + +The code for reading the Git repository will use the Flux GitOps toolkit libraries and will be based off the example [here](https://fluxcd.io/flux/gitops-toolkit/source-watcher/). + +The controller is set up to watch `GitRepository` resources in the cluster: +```go +func (r *FluxController) SetupWithManager(mgr ctrl.Manager) error { + if err := mgr.GetFieldIndexer().IndexField(context.Background(), &radappiov1alpha3.DeploymentTemplate{}, deploymentTemplateRepositoryField, deploymentTemplateRepositoryIndexer); err != nil { + return err + } + + return ctrl.NewControllerManagedBy(mgr). + For(&sourcev1.GitRepository{}, builder.WithPredicates(GitRepositoryRevisionChangePredicate{})). + Complete(r) +} +``` + +When a `GitRepository` resource is created or updated, the controller will get the object and read the contents of the Git repository: +```go + // Get the GitRepository object from the cluster + var repository sourcev1.GitRepository + if err := r.Get(ctx, req.NamespacedName, &repository); err != nil { + return ctrl.Result{}, client.IgnoreNotFound(err) + } + + ... + + // Fetch the artifact from the Source Controller + logger.Info("Fetching artifact", "url", artifact.URL) + if err := r.ArchiveFetcher.Fetch(artifact.URL, artifact.Digest, tmpDir); err != nil { + logger.Error(err, "unable to fetch artifact") + return ctrl.Result{}, err + } +``` + +#### Parsing the `radius-config.yaml` File + +The controller will look for a `radius-config.yaml` file in the Git repository. If the file is not present, then the controller will skip the repository. If the file is present, then the controller will read the file and extract the Bicep compilation instructions: +```go + // Read the radius-config.yaml file + configFile := filepath.Join(tmpDir, "radius-config.yaml") + config, err := ioutil.ReadFile(configFile) + if err != nil { + logger.Error(err, "unable to read radius-config.yaml file") + return ctrl.Result{}, err + } + + // Parse the radius-config.yaml file + var radiusConfig RadiusConfig + if err := yaml.Unmarshal(config, &radiusConfig); err != nil { + logger.Error(err, "unable to parse radius-config.yaml file") + return ctrl.Result{}, err + } +``` + +The `radius-config.yaml` file will have the following structure: +> Note: The structure of the `radius-config.yaml` file is subject to change. We should discuss this in the design meeting. I considered adapting the existing `.rad/config.yaml` file format, but there were too many differences between the two formats, so I decided to create a new format specifically for the Radius Flux Controller. +```yaml +config: + bicep: + - file: main.bicep + parameters: main.bicepparam + namespace: default + - file: secondary.bicep + providers: + - radius: + scope: /planes/radius/local/resourcegroups/default + - aws: + scope: /planes/aws/aws/accounts/000000000/regions/us-west-2 + - azure: + scope: /planes/azure/azurecloud/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-group +``` + +#### Compiling the Bicep File + +The controller will compile the Bicep file using the Bicep CLI, which is installed on the controller. It will use existing functionality to leverage the Bicep compiler: https://github.com/radius-project/radius/blob/87f7ea1b8d814a266fb89333ea4e5b38463ed7f9/pkg/cli/bicep/types.go#L46 + +#### Creating the `DeploymentTemplate` Resource + +The controller will create (or update) a `DeploymentTemplate` resource on the cluster with the compiled Bicep file as the template: +```go + // Create the DeploymentTemplate resource + deploymentTemplate := &radappiov1alpha3.DeploymentTemplate{ + ObjectMeta: metav1.ObjectMeta{ + Name: radiusConfig.Name, + Namespace: radiusConfig.Namespace, + }, + Spec: radappiov1alpha3.DeploymentTemplateSpec{ + Template: string(compiledBicep), + }, + } + + // Create or update the DeploymentTemplate resource + if err := r.CreateOrUpdate(ctx, deploymentTemplate); err != nil { + logger.Error(err, "unable to create or update DeploymentTemplate resource") + return ctrl.Result{}, err + } +``` + +#### Deleting Stale `DeploymentTemplate` Resources + +The controller will list all `DeploymentTemplate` resources in the cluster that have been created from this Git repository and delete any resources that are not present in the Git repository: +```go + // List all DeploymentTemplates on the cluster that are from the same git repository + deploymentTemplates := &radappiov1alpha3.DeploymentTemplateList{} + err = r.Client.List(ctx, deploymentTemplates, client.MatchingFields{deploymentTemplateRepositoryField: repository.Name}) + if err != nil { + logger.Error(err, "unable to list deployment templates") + return ctrl.Result{}, err + } + + // For all of the DeploymentTemplates on the cluster, check if the bicep file + // that it was created from is still present in the git repository. If not, delete the + // DeploymentTemplate from the cluster. + for _, deploymentTemplate := range deploymentTemplates.Items { + if _, err := r.FileSystem.Stat(path.Join(tmpDir, deploymentTemplate.Name)); os.IsNotExist(err) { + // File does not exist in the git repository, + // delete the DeploymentTemplate from the cluster + logger.Info("Deleting DeploymentTemplate", "name", deploymentTemplate.Name) + if err := r.Client.Delete(ctx, &deploymentTemplate); err != nil { + logger.Error(err, "unable to delete deployment template") + return ctrl.Result{}, err + } + + logger.Info("Deleted DeploymentTemplate", "name", deploymentTemplate.Name) + } else if err != nil { + logger.Error(err, "failed to check if file exists") + return ctrl.Result{}, err + } + } +``` + +### Detailed Design: Bicep Compilation + +The Bicep compilation will be done using the Bicep CLI. The Bicep CLI itself will be present in a container image that is mounted as a volume in the controller pod. The controller will use the Bicep CLI to compile the Bicep file and return the compiled template as a string. + +`deploy/images/bicep/Dockerfile`: +```Dockerfile +FROM alpine:latest + +ARG TARGETARCH + +RUN apk --no-cache add curl + +WORKDIR / + +RUN curl -Lo bicep https://github.com/Azure/bicep/releases/latest/download/bicep-linux-x64 \ + && chmod +x ./bicep + +ENTRYPOINT ["/bin/sh"] +``` + +`deploy/Chart/templates/controller/deployment.yaml`: +```yaml + spec: + ... + initContainers: + - name: bicep + image: "{{ .Values.bicep.image }}:{{ .Values.bicep.tag | default $appversion }}" + command: ['sh', '-c', 'mv ./bicep /usr/local/bin/bicep'] + volumeMounts: + - name: bicep + mountPath: /usr/local/bin + ... + containers: + ... + volumeMounts: + - name: bicep + mountPath: /usr/local/bin + ... + volumes: + ... + - name: bicep + emptyDir: {} + ... +``` ### Implementation Details -- **Controller**: Implement the Radius Flux Controller to read the Git repository, compile Bicep files, and create DeploymentTemplate resources. -- **Processor**: Ensure that the compiled Bicep files are processed correctly. -- **Renderer**: Render the DeploymentTemplate resources based on the compiled Bicep files. -- **Recipe Engine**: Integrate with the existing recipe engine to manage the deployment process. - -#### UCP (if applicable) -N/A - -#### Bicep (if applicable) -N/A - -#### Deployment Engine (if applicable) -N/A - -#### Core RP (if applicable) -N/A - -#### Portable Resources / Recipes RP (if applicable) -N/A +- **Controller**: The Radius Flux Controller will be implemented as a new controller in the `controller` service. The controller will read the Git repository, compile Bicep files, and create DeploymentTemplate resources on the cluster. +- **Bicep Compilation**: The Bicep compilation will be done using the Bicep CLI. The Bicep CLI itself will be present in a container image that is mounted as a volume in the controller pod. The controller will use the Bicep CLI to compile the Bicep file and return the compiled template as a string. ### Error Handling -- **Git Repository Not Found**: Log an error and retry after a specified interval. -- **Bicep Compilation Error**: Log the error and notify the user. -- **DeploymentTemplate Creation Error**: Log the error and retry after a specified interval. +All errors will be logged to the Kubernetes event log. We will also provide detailed error messages in the controller logs to help users troubleshoot any issues. ## Test plan @@ -252,9 +348,9 @@ Describe any functionality that will create new testing challenges: - Features that do I/O or change OS state and are thus hard to unit test --> -- **Unit Tests**: Test the individual components of the Radius Flux Controller. -- **Integration Tests**: Test the integration with the Git repository and the DeploymentTemplate controller. -- **End-to-End Tests**: Test the entire GitOps workflow from pushing changes to the Git repository to deploying the infrastructure on the Kubernetes cluster. +- **Unit Tests**: Test the individual components of the Radius Flux Controller. There are many external dependencies that will need to be mocked, such as GitRepository objects and Bicep compilation. +- **Functional Tests**: Test the end-to-end functionality of the Radius Flux Controller together with the DeploymentTemplate controller. This will involve creating GitRepository objects on a real Kubernetes cluster and verifying that the resources in the Bicep templates are created and updated correctly. +- **Sample**: Provide a sample Git repository with Bicep files and a `radius-config.yaml` file to test the Radius Flux Controller. This should be added as a sample in our documentation. ## Security @@ -272,7 +368,7 @@ If this feature has no new challenges or changes to the security model then describe how the feature will use existing security features of Radius. --> -The Radius Flux Controller will use existing authentication mechanisms to access the Git repository and Kubernetes cluster. Secrets and credentials will be stored securely using Kubernetes Secrets. No new cryptographic methods are introduced. +No new security challenges are introduced by the Radius Flux Controller. It uses the existing security features of Radius and Flux. ## Compatibility (optional) @@ -292,9 +388,7 @@ diagnose this new feature. It also describes how to troubleshoot this feature with the instrumentation. --> -- **Metrics**: Track the number of successful and failed deployments. -- **Logs**: Log all actions performed by the Radius Flux Controller, including errors and retries. -- **Tracing**: Implement tracing to track the flow of operations from reading the Git repository to deploying the infrastructure. +The Radius Flux Controller will be setup as another controller in the Radius controller process. It will use standard Radius and Kubernetes logging and monitoring facilities, such as Kubernetes events and logs, to provide visibility into its actions. Users will be able to troubleshoot the Radius Flux Controller by examining the logs and events generated by the controller, as is the case with other Kubernetes controllers. ## Development plan @@ -306,11 +400,13 @@ item. Don’t forget to include the Unit Test and functional test in your estimates. --> -- **Phase 1**: Implement the basic functionality of the Radius Flux Controller. -- **Phase 2**: Integrate with the DeploymentTemplate controller. -- **Phase 3**: Implement error handling and retry mechanisms. -- **Phase 4**: Write unit, integration, and end-to-end tests. -- **Phase 5**: Monitor and log the Radius Flux Controller's actions. +The development of the Radius Flux Controller will be broken down into the following tasks: + +1. Implement the Bicep compilation functionality in the controller. +1. Implement the control loop for the controller. +1. Write unit and functional tests for the controller. +1. Write documentation and samples for the controller. + ## Open Questions @@ -320,8 +416,7 @@ Use the discussion to answer these with experts after people digest the overall design. --> -- How should we handle large Git repositories with many Bicep files? -- What is the best way to notify users of errors during the deployment process? +* Does this design fit well into the Kubernetes controller pattern? Are there any improvements that can be made to the design to better align with Kubernetes controller best practices? ## Alternatives considered @@ -331,13 +426,10 @@ Give a justification for why alternative approaches should be rejected if possible. --> -- **Alternative 1**: Use a different IaC format instead of Bicep. Rejected because Bicep is the preferred format for Azure resources. -- **Alternative 2**: Implement a custom deployment controller instead of using the DeploymentTemplate controller. Rejected because the DeploymentTemplate controller provides the necessary functionality. +* We should consider different formats for the `radius-config.yaml` format. ## Design Review Notes - -To be updated after the design review meeting. diff --git a/tools/2025-01-gitops-technical-design/rfc-1.png b/tools/2025-01-gitops-technical-design/rfc-1.png new file mode 100644 index 0000000000000000000000000000000000000000..fe755cbd9d385c0c68600fdf58ecab1923ac51c1 GIT binary patch literal 78541 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�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 Date: Thu, 27 Mar 2025 09:37:20 -0700 Subject: [PATCH 3/4] design review comments Signed-off-by: willdavsmith --- tools/2025-01-gitops-technical-design.md | 56 +++++++++++------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/tools/2025-01-gitops-technical-design.md b/tools/2025-01-gitops-technical-design.md index 6b20f8ad..649d1248 100644 --- a/tools/2025-01-gitops-technical-design.md +++ b/tools/2025-01-gitops-technical-design.md @@ -24,7 +24,7 @@ be specific to this design context. --> - **GitOps**: A set of practices to manage infrastructure and application configurations using Git. -- **Bicep**: A domain-specific language (DSL) for deploying Azure resources declaratively. +- **Bicep**: A domain-specific language (DSL) for managing resources; originally developed to deploy Azure resources declaratively, Radius uses Bicep to model applications and resources agnostic of a cloud provider. - **DeploymentTemplate**: A custom resource in Kubernetes that represents the desired state of a Bicep deployment. ## Objectives @@ -62,8 +62,6 @@ them here. Provide a brief explanation on why this is a non-goal. --> - Supporting non-Flux GitOps tools (e.g., ArgoCD). -- Supporting non-Bicep IaC formats. -- Radius Dashboard support ### User scenarios (optional) @@ -131,10 +129,10 @@ considered during the design process. The Radius Flux Controller will be implemented as a new controller in the `controller` service. Here is the high-level control loop of the new controller: -1. The controller lists all `GitRepository` resources in the cluster. -1. For each `GitRepository`, the controller parses the contents of the Git repository. -1. The controller checks for a `radius-config.yaml` file in the repository. If the file is not present, then the controller skips the repository. -1. The controller reads the `radius-config.yaml` file and extracts the Bicep compilation instructions, such as the Bicep file path and parameters. +1. The controller watches all `GitRepository` resources in the cluster. +1. For each `GitRepository` resource, the controller fetches the artifact from the Flux source controller and unpacks it to a temporary directory. +1. The controller checks for a `radius-gitops-config.yaml` file in the repository. If the file is not present, then the controller skips the repository. +1. The controller reads the `radius-gitops-config.yaml` file and extracts the Bicep compilation instructions, such as the Bicep file path and parameters. 1. The controller compiles the Bicep file using the Bicep CLI, which is installed on the controller. 1. The controller creates (or updates) a `DeploymentTemplate` resource on the cluster with the compiled Bicep file as the template. 1. The controller lists all `DeploymentTemplate` resources in the cluster that have been created from this Git repository and deletes any resources that are not present in the Git repository. @@ -161,6 +159,8 @@ func (r *FluxController) SetupWithManager(mgr ctrl.Manager) error { When a `GitRepository` resource is created or updated, the controller will get the object and read the contents of the Git repository: ```go +func (r *FluxController) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { + ... // Get the GitRepository object from the cluster var repository sourcev1.GitRepository if err := r.Get(ctx, req.NamespacedName, &repository); err != nil { @@ -175,44 +175,40 @@ When a `GitRepository` resource is created or updated, the controller will get t logger.Error(err, "unable to fetch artifact") return ctrl.Result{}, err } + ... +} ``` -#### Parsing the `radius-config.yaml` File +#### Parsing the `radius-gitops-config.yaml` File -The controller will look for a `radius-config.yaml` file in the Git repository. If the file is not present, then the controller will skip the repository. If the file is present, then the controller will read the file and extract the Bicep compilation instructions: +The controller will look for a `radius-gitops-config.yaml` file in the Git repository. If the file is not present, then the controller will skip the repository. If the file is present, then the controller will read the file and extract the Bicep compilation instructions: ```go - // Read the radius-config.yaml file - configFile := filepath.Join(tmpDir, "radius-config.yaml") + // Read the radius-gitops-config.yaml file + configFile := filepath.Join(tmpDir, "radius-gitops-config.yaml") config, err := ioutil.ReadFile(configFile) if err != nil { - logger.Error(err, "unable to read radius-config.yaml file") + logger.Error(err, "unable to read radius-gitops-config.yaml file") return ctrl.Result{}, err } - // Parse the radius-config.yaml file + // Parse the radius-gitops-config.yaml file var radiusConfig RadiusConfig if err := yaml.Unmarshal(config, &radiusConfig); err != nil { - logger.Error(err, "unable to parse radius-config.yaml file") + logger.Error(err, "unable to parse radius-gitops-config.yaml file") return ctrl.Result{}, err } ``` -The `radius-config.yaml` file will have the following structure: -> Note: The structure of the `radius-config.yaml` file is subject to change. We should discuss this in the design meeting. I considered adapting the existing `.rad/config.yaml` file format, but there were too many differences between the two formats, so I decided to create a new format specifically for the Radius Flux Controller. +The `radius-gitops-config.yaml` file will have the following structure: ```yaml config: - bicep: - - file: main.bicep - parameters: main.bicepparam - namespace: default - - file: secondary.bicep - providers: - - radius: - scope: /planes/radius/local/resourcegroups/default - - aws: - scope: /planes/aws/aws/accounts/000000000/regions/us-west-2 - - azure: - scope: /planes/azure/azurecloud/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-group + - file: main.bicep + parameters: main.bicepparam + namespace: default + resourceGroup: default + - file: secondary.bicep + # namespace: defaults to "secondary" + # resourceGroup: defaults to "secondary" ``` #### Compiling the Bicep File @@ -350,7 +346,7 @@ Describe any functionality that will create new testing challenges: - **Unit Tests**: Test the individual components of the Radius Flux Controller. There are many external dependencies that will need to be mocked, such as GitRepository objects and Bicep compilation. - **Functional Tests**: Test the end-to-end functionality of the Radius Flux Controller together with the DeploymentTemplate controller. This will involve creating GitRepository objects on a real Kubernetes cluster and verifying that the resources in the Bicep templates are created and updated correctly. -- **Sample**: Provide a sample Git repository with Bicep files and a `radius-config.yaml` file to test the Radius Flux Controller. This should be added as a sample in our documentation. +- **Sample**: Provide a sample Git repository with Bicep files and a `radius-gitops-config.yaml` file to test the Radius Flux Controller. This should be added as a sample in our documentation. ## Security @@ -426,7 +422,7 @@ Give a justification for why alternative approaches should be rejected if possible. --> -* We should consider different formats for the `radius-config.yaml` format. +* We should consider different formats for the `radius-gitops-config.yaml` format. ## Design Review Notes From c3acec05add24a3a38c85b1693035d9f574811ca Mon Sep 17 00:00:00 2001 From: willdavsmith Date: Thu, 27 Mar 2025 09:42:44 -0700 Subject: [PATCH 4/4] spelling Signed-off-by: willdavsmith --- .github/config/en-custom.txt | 5 ++++- tools/2025-01-gitops-technical-design.md | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/config/en-custom.txt b/.github/config/en-custom.txt index 3d20b10d..1cf19fb0 100644 --- a/.github/config/en-custom.txt +++ b/.github/config/en-custom.txt @@ -909,4 +909,7 @@ kube workspace's Authorizer Aditi -Twilio \ No newline at end of file +Twilio +DSL +Helly +GitRepository diff --git a/tools/2025-01-gitops-technical-design.md b/tools/2025-01-gitops-technical-design.md index 649d1248..bc7c69ee 100644 --- a/tools/2025-01-gitops-technical-design.md +++ b/tools/2025-01-gitops-technical-design.md @@ -213,7 +213,7 @@ config: #### Compiling the Bicep File -The controller will compile the Bicep file using the Bicep CLI, which is installed on the controller. It will use existing functionality to leverage the Bicep compiler: https://github.com/radius-project/radius/blob/87f7ea1b8d814a266fb89333ea4e5b38463ed7f9/pkg/cli/bicep/types.go#L46 +The controller will compile the Bicep file using the Bicep CLI, which is installed on the controller. It will use [existing functionality](https://github.com/radius-project/radius/blob/87f7ea1b8d814a266fb89333ea4e5b38463ed7f9/pkg/cli/bicep/types.go#L46) to leverage the Bicep compiler. #### Creating the `DeploymentTemplate` Resource