Post

Deploying IT-Tools: A Practical Developer Utilities Suite on Kubernetes

IT-Tools is a comprehensive suite of developer utilities with an excellent user experience. This guide walks through deploying IT-Tools on Kubernetes, making these utilities available to your entire team with high availability and proper ingress configuration.

Deploying IT-Tools: A Practical Developer Utilities Suite on Kubernetes

What is IT-Tools?

IT-Tools is a comprehensive collection of handy utilities for developers and IT professionals with an excellent user interface. The project provides dozens of commonly needed tools including:

  • Conversion utilities (Base64, JSON, YAML, etc.)
  • Cryptographic tools (hash generators, encoders/decoders)
  • Network utilities (CIDR calculator, DNS lookup)
  • Text manipulation (diff checker, string utilities)
  • Development helpers (crontab generator, regex tester)
  • And many more practical everyday tools

With over 29,000 stars on GitHub, IT-Tools has become a popular open-source project that many developers find indispensable in their daily workflow. By deploying IT-Tools on your Kubernetes cluster, you can provide these utilities to your entire team without relying on external services.

Prerequisites

Before we begin, ensure you have:

  • A running Kubernetes cluster. You can set up one by following my previous post on Kubernetes or using my ansible playbook for Kubernetes.
  • kubectl configured to communicate with your cluster
  • A LoadBalancer or Ingress Controller set up. If you’re running on bare metal, you might want to check my guides on MetalLB and Traefik.

Deployment Strategy

We’ll deploy IT-Tools using a simple Kubernetes Deployment and expose it using a Service. For production environments, we’ll also set up an Ingress to make it accessible via a domain name with HTTPS.

Step 1: Create a Namespace

First, let’s create a dedicated namespace for IT-Tools:

1
kubectl create namespace it-tools

Step 2: Create the Deployment

Create a file named it-tools-deployment.yaml with the following content:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: it-tools
  name: it-tools
  namespace: it-tools
spec:
  replicas: 1
  selector:
    matchLabels:
      app: it-tools
  strategy: {}
  template:
    metadata:
      labels:
        app: it-tools
    spec:
      containers:
      - image: corentinth/it-tools:latest
        name: it-tools
        ports:
        - containerPort: 80
        resources: {
          "limits": {
            "cpu": "300m",
            "memory": "512Mi"
          },
          "requests": {
            "cpu": "100m",
            "memory": "128Mi"
          }
        }

This deployment:

  • Uses a single replica (sufficient for most use cases)
  • Uses the official IT-Tools Docker image
  • Sets resource requests of 100m CPU and 128Mi memory
  • Sets resource limits of 300m CPU and 512Mi memory to ensure stability
  • Exposes port 80 for the web interface

Apply the deployment:

1
kubectl apply -f it-tools-deployment.yaml

Step 3: Create a Service

Next, let’s create a service to expose the deployment. Create a file named it-tools-service.yaml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
apiVersion: v1
kind: Service
metadata:
  labels:
    app: it-tools
  name: it-tools
  namespace: it-tools
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: it-tools
  type: ClusterIP

Apply the service:

1
kubectl apply -f it-tools-service.yaml

Step 4: Create an Ingress (Optional for Production)

For production environments, we’ll create an Ingress to expose IT-Tools with a proper domain name and TLS. If you’ve set up Traefik following my previous guide, this will be straightforward.

Create a file named it-tools-ingress.yaml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: it-tools
  namespace: it-tools
  annotations: 
    kubernetes.io/ingress.class: traefik-external
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`tools.plutolab.live`)
      kind: Rule
      services:
        - name: it-tools
          port: 80

Notice that this configuration:

  • Uses the domain tools.plutolab.live for the IT-Tools service
  • Uses the Traefik external entrypoint for websecure (HTTPS) traffic
  • Does not explicitly define a TLS section, assuming Traefik is configured to handle TLS certificates automatically

Apply the Ingress:

1
kubectl apply -f it-tools-ingress.yaml

Make sure your DNS is configured to point tools.plutolab.live to your cluster’s external IP address.

Step 5: Verify the Deployment

Check that all pods are running correctly:

1
kubectl -n it-tools get pods

You should see output similar to:

1
2
3
NAME                        READY   STATUS    RESTARTS   AGE
it-tools-7689f79b6d-6g4xr   1/1     Running   0          45s
it-tools-7689f79b6d-j8s5t   1/1     Running   0          45s

Check that the service is created:

1
kubectl -n it-tools get svc

Output should be:

1
2
NAME       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
it-tools   ClusterIP   10.110.147.188   <none>        80/TCP    60s

Accessing IT-Tools

Temporary Access via Port Forwarding

For quick access during testing, use kubectl port-forwarding:

1
kubectl -n it-tools port-forward svc/it-tools 8080:80

Then open your browser and navigate to http://localhost:8080.

Production Access via Ingress

If you configured the Ingress, you can access IT-Tools at the URL you specified, e.g., https://tools.plutolab.live.

Advanced Configuration

Using Persistent Storage (Optional)

IT-Tools doesn’t require persistent storage by default since it’s a stateless application. However, if you want to persist any configuration or data, you can add a volume to the deployment.

Updating to New Versions

The IT-Tools image is regularly updated. To update your deployment:

1
kubectl -n it-tools set image deployment/it-tools it-tools=corentinth/it-tools:latest

For a more controlled approach, you can specify a specific version tag instead of latest.

Scaling the Deployment

If you have many users, you can scale the deployment:

1
kubectl -n it-tools scale deployment it-tools --replicas=5

Security Considerations

By default, IT-Tools doesn’t require authentication. If you want to restrict access, consider:

  1. Network Policies: Implement Kubernetes Network Policies to control which pods can access the IT-Tools service.

  2. Basic Authentication: Add authentication through your Ingress controller. With Traefik, you can use middleware for basic authentication:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: basic-auth
  namespace: it-tools
spec:
  basicAuth:
    secret: basic-auth-secret
---
# Then update your IngressRoute to use this middleware
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: it-tools
  namespace: it-tools
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`tools.plutolab.live`)
      kind: Rule
      middlewares:
        - name: basic-auth
      services:
        - name: it-tools
          port: 80
  tls:
    certResolver: letsencrypt

You’ll need to create a secret with the authentication credentials:

1
2
3
4
# First create an auth file with username:hashed-password
htpasswd -c auth username
# Create the secret
kubectl -n it-tools create secret generic basic-auth-secret --from-file=users=auth

Monitoring and Health Checks

To ensure your IT-Tools deployment is running properly, you can monitor it with the kube-prometheus stack I covered in a previous guide.

Conclusion

You now have IT-Tools deployed on your Kubernetes cluster, providing your team with a comprehensive suite of developer utilities. This deployment is:

  • Highly available with multiple replicas
  • Properly secured through your Ingress controller
  • Easily accessible via a memorable URL
  • Ready for production use with appropriate resource limits and health checks

IT-Tools is a lightweight yet powerful suite that developers appreciate having at their fingertips. By hosting it internally, you’re providing a valuable resource to your team while maintaining control over the deployment.

Have you deployed other developer tools on your Kubernetes cluster? Let me know in the comments what other utilities you find essential for your development workflow!

This post is licensed under CC BY 4.0 by the author.