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.
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:
-
Network Policies: Implement Kubernetes Network Policies to control which pods can access the IT-Tools service.
-
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!