Komodor is a Kubernetes management platform that empowers everyone from Platform engineers to Developers to stop firefighting, simplify operations and proactively improve the health of their workloads and infrastructure.
Proactively detect & remediate issues in your clusters & workloads.
Easily operate & manage K8s clusters at scale.
Reduce costs without compromising on performance.
Empower developers with self-service K8s troubleshooting.
Simplify and accelerate K8s migration for everyone.
Fix things fast with AI-powered root cause analysis.
Explore our K8s guides, e-books and webinars.
Learn about K8s trends & best practices from our experts.
Listen to K8s adoption stories from seasoned industry veterans.
The missing UI for Helm – a simplified way of working with Helm.
Visualize Crossplane resources and speed up troubleshooting.
Validate, clean & secure your K8s YAMLs.
Navigate the community-driven K8s ecosystem map.
Your single source of truth for everything regarding Komodor’s Platform.
Keep up with all the latest feature releases and product updates.
Leverage Komodor’s public APIs in your internal development workflows.
Get answers to any Komodor-related questions, report bugs, and submit feature requests.
Kubernetes 101: A comprehensive guide
Expert tips for debugging Kubernetes
Tools and best practices
Kubernetes monitoring best practices
Understand Kubernetes & Container exit codes in simple terms
Exploring the building blocks of Kubernetes
Cost factors, challenges and solutions
Kubectl commands at your fingertips
Understanding K8s versions & getting the latest version
Rancher overview, tutorial and alternatives
Kubernetes management tools: Lens vs alternatives
Troubleshooting and fixing 5xx server errors
Solving common Git errors and issues
Who we are, and our promise for the future of K8s.
Have a question for us? Write us.
Come aboard the K8s ship – we’re hiring!
Hear’s what they’re saying about Komodor in the news.
Crossplane is an open-source project for managing and provisioning infrastructure through a Kubernetes-native environment. It extends Kubernetes’ capabilities to manage external resources, letting developers deploy infrastructure components using kubectl as if they were deploying native Kubernetes applications.
Crossplane takes a declarative approach, where users define the desired state of their infrastructure through custom resources. This allows for the reconciliation process, where Crossplane continually manages the external resources to match the declared specifications. The project supports a range of infrastructure services provided by AWS, Azure, Google Cloud, and other providers, simplifying the integration process.
Crossplane uses the permissive Apache 2.0 license. It has over 200 contributors on GitHub and 6K+ GitHub stars. The project was accepted to CNCF in June 25, 2020 and received the Incubating maturity level in September, 2021.
Source: Crossplane
You can get Crossplane from the official GitHub repo.
This is part of a series of articles about Kubernetes management
Crossplane offers the following features to simplify infrastructure management.
Crossplane offers a unified API that abstracts infrastructure setup across different cloud providers. Developers can handle resources across AWS, Azure, and Google Cloud using a consistent approach. It uses Kubernetes Custom Resource Definitions (CRDs) to ensure that users interact with infrastructure uniformly, regardless of the underlying provider.
The unified API simplifies the complexity associated with multi-cloud environments. Developers can use familiar Kubernetes tooling and practices to manage resources like databases, clusters, and storage across multiple clouds. This reduces the learning curve and accelerates the development process.
Crossplane uses an IaC approach, allowing teams to define, version, and reuse infrastructure configurations through code. The ability to check these configurations into version control systems brings traceability and collaboration to infrastructure management tasks. Crossplane configurations can be shared and repeated, improving consistency across deployments.
Crossplane integrates with continuous integration/continuous deployment (CI/CD) workflows, enabling automated testing, deployment, and scaling of infrastructure in line with application needs. Infrastructure is managed as code, meaning that changes are auditable and rollback is simplified, providing greater operational stability.
Crossplane has a composition engine that allows users to define custom composite resources. These represent higher-level abstractions that bundle multiple infrastructure components into a single deployable unit. This encapsulation helps in managing complex setups with fewer errors.
The composition engine also supports defining dependencies and their lifecycle connections within the IT infrastructure. By creating custom compositions, organizations can tailor their infrastructure to their workflows and needs, enabling clear separation between different teams or services.
Crossplane makes it possible to extend the Kubernetes API to include custom resources for various infrastructure tasks. Users can define CRDs to represent external resources, allowing Kubernetes to manage these resources alongside native ones. This makes integrations smoother and more manageable.
Custom resources in Crossplane can include customized service compositions or entirely new services. This leads to a highly customizable platform that can grow and adapt to the needs of business teams and developers, offering a competitive advantage.
Itiel Shwartz
Co-Founder & CTO
In my experience, here are tips that can help you make better use of Crossplane:
Use Crossplane’s composite resources to encapsulate complex setups. This approach reduces configuration errors and simplifies management, especially in multi-cloud scenarios.
Develop reusable Crossplane configuration templates for common infrastructure setups. This improves consistency and reduces the time needed for deployment in different environments.
Integrate custom health checks for managed resources to provide more detailed insights into their status and performance, beyond the basic Kubernetes status indicators.
Set up automation to regularly check for and apply updates to Crossplane providers. Keeping providers up to date ensures compatibility with cloud services and access to new features.
Regularly monitor and adjust Kubernetes resource quotas and limits to ensure Crossplane operates efficiently, especially in environments with multiple namespaces and teams.
Crossplane and Terraform are both widely used tools for managing infrastructure as code, but they have different approaches and use cases.
Crossplane integrates deeply with Kubernetes, allowing you to manage both Kubernetes resources and cloud infrastructure using Kubernetes CRDs and controllers. This means you can use Kubernetes-native tools like kubectl to manage infrastructure, which can simplify operations if you’re already using Kubernetes.
kubectl
Terraform is a standalone tool that manages infrastructure independently of Kubernetes. It is more versatile for developers who are not exclusively using Kubernetes.
Both tools use a declarative approach to infrastructure management, where you define the desired state of the infrastructure, and the tool ensures that this state is achieved. However, they offer different levels of control over state.
Crossplane uses Kubernetes’ existing reconciliation loops to manage state, integrating seamlessly into the Kubernetes ecosystem. However, it can potentially introduce performance overhead due to continuous reconciliation.
Terraform’s state management is more explicit, requiring a state file to track resources. While this approach can lead to more complex workflows, it also provides a clearer picture of resource dependencies and changes.
Crossplane is extensible through Kubernetes CRDs and providers, but is primarily focused on cloud infrastructure and services. This can limit its use cases, making it highly specialized for cloud-native environments.
Terraform has a larger ecosystem of providers and modules, making it more extensible than Crossplane. It is versatile, with a wider range of use cases.
Crossplane, as a CNCF project, benefits from a strong open-source community. It is rapidly evolving with contributions from the cloud-native community, particularly those focused on Kubernetes.
Terraform, maintained by HashiCorp, has a large and active community. It also offers extensive documentation and commercial support options, making it suitable for enterprise environments.
Crossplane integrates with providers to set up infrastructure on external services.
The AWS provider for Crossplane allows users to manage AWS resources directly from the Kubernetes environment. It simplifies tasks such as configuring S3 buckets, RDS instances, and IAM roles by using Kubernetes manifests. It translates Kubernetes API calls into AWS API requests, maintaining consistency with other Kubernetes operations.
Crossplane’s integration with Azure, through Provider Azure, lets users manage Azure services directly from Kubernetes. This setup supports a range of Azure resources including VMs, Storage Accounts, and Azure SQL databases. Users interact with these resources through Kubernetes-style configurations, making cloud management simpler and more intuitive.
Provider GCP in Crossplane integrates Google Cloud services within the Kubernetes infrastructure, enabling the management of Google Cloud resources like Google Compute Engine instances, Google Kubernetes Engine clusters, or Cloud SQL databases.
With Provider Kubernetes, Crossplane extends its management capabilities to include external cloud resources and Kubernetes clusters themselves. This provider simplifies the setup and operation of new Kubernetes clusters across different environments. It harmonizes cluster management using the familiar Kubernetes API, improving usability and control.
This integration ensures that managing Kubernetes resources, whether clusters or workloads, follows a standardized process. It supports scaling up operations while enabling cohesive management of multi-cluster environments.
When evaluating Crossplane, you should be aware of the following limitations.
Implementing Crossplane involves a complex setup process. This is due to its extensive integration with Kubernetes and the need for detailed configuration of providers and resources. For organizations new to Kubernetes or with limited technical capability, the initial setup can be challenging and resource-intensive.
Ongoing management can also become complicated as dependencies and configurations increase. Without proper documentation and skilled personnel, maintaining an environment managed by Crossplane can lead to challenges in large-scale deployments or multi-cloud configurations.
Crossplane’s reliance on the Kubernetes ecosystem can impose a steep learning curve. Organizations must have a strong understanding of Kubernetes to use it, which can pose a barrier for teams without prior Kubernetes experience or with limited technical resources.
Using Crossplane introduces additional overhead on system performance, mainly due to its operation on top of Kubernetes and the continuous reconciliation processes it performs. These operations, essential for maintaining the desired state of infrastructure, consume computational resources, which can affect overall system efficiency.
In environments with high complexity or a large number of managed resources, there can be a greater impact on performance. Organizations need to balance the benefits of automation and uniform management against the potential decrease in performance, especially in resource-constrained scenarios.
The instructions and code below are adapted from the official Crossplane documentation.
Before you begin, ensure you have the following:
To install Crossplane in your existing Kubernetes cluster, you can use Helm:
helm repo add crossplane-stable https://charts.crossplane.io/stablehelm repo update
helm install crossplane crossplane-stable/crossplane --dry-run --debug --namespace crossplane-system --create-namespace
helm install crossplane crossplane-stable/crossplane --namespace crossplane-system --create-namespace
kubectl get pods
kubectl get pods -n crossplane-system
You should see output similar to:
NAME READY STATUS RESTARTS AGEcrossplane-c4gd8b587-ldbfc 1/1 Running 0 48scrossplane-rbac-manager-85679d548-6mw6f 1/1 Running 0 48s
You can install the provider for AWS S3 into a Kubernetes cluster with the following configuration file:
cat <<EOF | kubectl apply -f -apiVersion: pkg.crossplane.io/v1kind: Providermetadata: name: provider-aws-s3spec: package: xpkg.upbound.io/upbound/provider-aws-s3:v1.1.0EOF
Verify the provider installation using the kubectl get providers command. You should see the following:
NAME INSTALLED HEALTHY PACKAGE AGEprovider-aws-s3 True True xpkg.upbound.io/upbound/provider-aws-s3:1.1.0 89supbound-provider-family-aws True True xpkg.upbound.io/upbound/provider-family-aws:1.1.0 79s
[default]aws_access_key_id = YOUR_ACCESS_KEY_IDaws_secret_access_key = YOUR_SECRET_ACCESS_KEY
kubectl create secret generic aws-secret -n crossplane-system --from-file=creds=./aws-credentials.txt
kubectl describe secret aws-secret -n crossplane-system
Apply the following configuration to customize the settings of the AWS Provider:
cat <<EOF | kubectl apply -f -apiVersion: aws.upbound.io/v1beta1kind: ProviderConfigmetadata: name: defaultspec: credentials: source: Secret secretRef: namespace: crossplane-system name: aws-secret key: credsEOF
This configuration links the AWS credentials stored in the Kubernetes secret to the provider.
In this example, we’ll use Crossplane to create an AWS S3 bucket as a managed resource:
cat <<EOF | kubectl create -f -apiVersion: s3.aws.upbound.io/v1beta1kind: Bucketmetadata: generateName: crossplane-bucket-spec: forProvider: region: us-east-2 providerConfigRef: name: defaultEOF
kubectl get buckets
NAME READY SYNCED EXTERNAL-NAME AGEcrossplane-bucket-aadhx True True crossplane-bucket-aadhx 8s
Komodor is the Continuous Kubernetes Reliability Platform, designed to democratize K8s expertise across the organization and enable engineering teams to leverage its full value.
Komodor’s platform empowers developers to confidently monitor and troubleshoot their workloads while allowing cluster operators to enforce standardization and optimize performance. Specifically when working in a hybrid environment, Komodor reduces the complexity by providing a unified view of all your services and clusters.
By leveraging Komodor, companies of all sizes significantly improve reliability, productivity, and velocity. Or, to put it simply – Komodor helps you spend less time and resources on managing Kubernetes, and more time on innovating at scale.
If you are interested in checking out Komodor, use this link to sign up for a Free Trial.
In addition, check out Komodor’s Open Source Project, Komoplane, which helps you experiment with visualizing Crossplane resources. The goal is to help Crossplane users to understand the structure of their control plane resources and speed up troubleshooting.
Share:
and start using Komodor in seconds!