DEV Community

akhil mittal
akhil mittal

Posted on

Deploy Custom Application in Kubernetes using Helm

To deploy your custom application in a Kubernetes cluster using Helm, follow these steps to create a Helm chart and configure it to deploy the application:

Step-by-Step Guide

1. Set Up Your Environment

  • Make sure Helm is installed on your local machine and configured to interact with your Kubernetes cluster.
  • Verify the Helm version and check connectivity to the cluster:

     helm version
     kubectl get nodes
    

2. Create a New Helm Chart

  • Use Helm to scaffold a new chart for your application:

     helm create myapp
    
  • This creates a directory named myapp with a predefined folder structure (templates, values.yaml, etc.).

3. Customize values.yaml

  • The values.yaml file holds the default configuration values for your chart. Modify it to reflect the settings for your application. For example:
    • Set the Docker image details (e.g., repository and tag).
    • Define service ports, replicas, and other configurations.
  • Example:

     image:
       repository: your-docker-repo/your-app
       tag: "latest"
     service:
       type: ClusterIP
       port: 80
    

4. Edit Kubernetes Manifests in templates Directory

  • The templates directory contains YAML templates for various Kubernetes resources.
  • Edit these files to fit your application requirements:
    • deployment.yaml for deployment configurations.
    • service.yaml for exposing your application.
    • Add additional YAML files if you need specific resources like ConfigMaps, Ingress, or Secrets.
  • For example, customize deployment.yaml with your application's container image and other specifications.

5. Package and Install the Helm Chart

  • Before deploying, package the chart to confirm that everything is structured correctly:

     helm package myapp
    
  • Install the Helm chart in your Kubernetes cluster:

     helm install myapp ./myapp
    
  • This command deploys your application using the configurations defined in your chart.

6. Verify the Deployment

  • Check that the application pods and services are running:

     kubectl get pods
     kubectl get svc
    
  • To debug any issues, use:

     kubectl describe pod <pod-name>
     kubectl logs <pod-name>
    

7. Expose the Application (Optional)

  • If you want external access to your application, configure an Ingress resource or use a LoadBalancer service type. Update the service.yaml and ingress.yaml files accordingly in your templates directory.

8. Update the Application

  • For any changes to the chart or configuration, use the helm upgrade command:

     helm upgrade myapp ./myapp
    

9. Uninstall the Application (Cleanup)

  • To remove the application when it’s no longer needed:

     helm uninstall myapp
    

Summary of Key Components in Helm Chart

  • values.yaml: Default values for your chart.
  • templates/: Directory containing Kubernetes manifests for deployment, service, and other resources.
  • Chart.yaml: Metadata about the chart (name, version, etc.).

This process gives you flexibility to manage and version control your deployments, making it easier to maintain and scale the application in Kubernetes.

Top comments (0)