Cloud Services

Enterprise Marketplace

DevOps and CI/CD integration with GitOps
Published On Dec 17, 2024 - 12:52 PM

DevOps and CI/CD integration with GitOps

Details the different stages that a GitHub order goes through in Kyndryl Modern Operations Applications.
You can also integrate the lifecycle of a Terraform catalog with a GitOps catalog to perform Day 0 and Day 1 deployments end to end using Kyndryl Modern Operations Applications.
  • Submitted: Kyndryl Modern Operations Applications generates the order ID, adds it to the JSON Byte Order Mark (BOM), and commits the rendered JSON BOM to the DevOps Git repository
    DRAFT** branch.
  • Approved: The Approved stage can have these options:
    • Kyndryl Modern Operations Applications creates the
      ./mcmp-deploy/OrderID/BoM.json
      file in the
      RELEASE
      branch and the
      ./mcmp-deploy/OrderID/orderstatus.json
      folder in the
      DRAFT
      branch, and then adds the pull request ID in the
      orderstatus.json
      file.
    • A configurable callback API is enabled for the DevOps pipeline/tool to send the deployment status over to MCMP.
  • Provisioning in progress: This stage has these substages:
    • The DevOps system records the order status as part of the Git commit in the
      ./mcmp-deploy/OrderID/orderstatus.json
      file in the
      DRAFT
      branch.
    • Kyndryl Modern Operations Applications tracks the
      ./mcmp-deploy/OrderID/orderstatus.json
      file to get the order status.
  • Processed by DevOps Infrastructure: You can either use a configurable callback API which is enabled for DevOps pipeline/tools to send their deployment status to Kyndryl Modern Operations Applications, or you can update the order tracking information in GitHub itself.
  • Completed: After your CI/CD pipelines have processed the order successfully, to let Kyndryl Modern Operations Applications know that the order has been successfully provisioned, the pipeline can update the order tracking information in the Git repository for GitOps content and submitted orders that have not been approved yet. The order directory will be available in the "Orders" branch. The CI/CD pipeline can update the value of the status parameter to "Completed" in order to let MCMP know that all proccessing is complete for this order
MCMP will update the order information in a few minutes
{ "status": "Completed", "commitId": "<id>", "submittedBy": "<username>" }
Day0 & Day1 Chaining with Terraform and GitOps
Kyndryl Modern Operations Applications provides a way to automate the deployment of infrastructure (Day 0) and any associated operating systems, applications, and configuration (Day 1) to complete the overall deployment. Using this feature, you can deploy infrastructure and services using Terraform on your provider of choice and then perform installation and configuration using your choice of CI/CD software. This process ensures that your DevOps and CI/CD jobs are automatically provided the correct resource information, Terraform state, and other end user configuration using a GitOps workflow. You do not have to manually configure or launch the job or pipeline from the CI/CD interface.
The Terraform state includes all information about your deployment of infrastructure including your output specification, any other user configuration that was part of the GitOps catalog, and other Kyndryl Modern Operations Applications order attributes for the Day 0 Terraform resources. With GitOps Engine, the Terraform state is automatically passed to Jenkins with no manual intervention needed. Your DevOps team will not need to log in to the Jenkins UI to pass your Day 1 configuration to your Jenkins job.
You can instruct the GitOps Engine that certain GitOps catalogs are valid for specific Terraform catalogs using the
deployment
section in the mcmp.yaml file. This section allows you to define which Terraform catalogs that the GitOps catalog applies to. For example, you can relate a GitOps catalog for Kubernetes configuration to a Terraform catalog for Kubernetes. For more information, see Creating a GitHub repository.
For example, you might want to deploy a series of virtual machines or Kubernetes clusters using Terraform templates that you will use as testing or production environments. You can configure an
outputs.tf
file containing the attributes for each resource type for your Terraform template and ingest it into the Catalog. Then you can create a Day 1 GitOps catalog for installing software or configuration onto the cluster or VM, which would trigger your chosen DevOps or CI/CD tool such as Jenkins. After this is set up, your customers can deploy one or more instances of the Terraform catalog and then select one of those instances during the GitOps catalog configuration. The list of instances will be automatically visible to them.
Do you have two minutes for a quick survey?
Take Survey