Skip to content

Commit 5b83a7f

Browse files
Release v1.4.0
2 parents ccf854d + d35901d commit 5b83a7f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+3257
-547
lines changed

.circleci/config.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -94,16 +94,16 @@ jobs:
9494
command: |
9595
docker build -t zenikalabs/karto .
9696
docker tag zenikalabs/karto zenikalabs/karto:v1
97-
docker tag zenikalabs/karto zenikalabs/karto:v1.3
98-
docker tag zenikalabs/karto zenikalabs/karto:v1.3.0
97+
docker tag zenikalabs/karto zenikalabs/karto:v1.4
98+
docker tag zenikalabs/karto zenikalabs/karto:v1.4.0
9999
- run:
100100
name: Push docker image
101101
command: |
102102
echo "$DOCKER_PASS" | docker login --username $DOCKER_USER --password-stdin
103103
docker push zenikalabs/karto
104104
docker push zenikalabs/karto:v1
105-
docker push zenikalabs/karto:v1.3
106-
docker push zenikalabs/karto:v1.3.0
105+
docker push zenikalabs/karto:v1.4
106+
docker push zenikalabs/karto:v1.4.0
107107
workflows:
108108
version: 2
109109
build-test-and-deploy:

.run/Back.run.xml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="Run Back" type="GoApplicationRunConfiguration" factoryName="Go Application">
3+
<module name="karto" />
4+
<working_directory value="$PROJECT_DIR$/back" />
5+
<go_parameters value="-i" />
6+
<kind value="PACKAGE" />
7+
<filePath value="$PROJECT_DIR$/back" />
8+
<package value="karto" />
9+
<directory value="$PROJECT_DIR$" />
10+
<method v="2" />
11+
</configuration>
12+
</component>

.run/Front.run.xml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="Run Front" type="js.build_tools.npm">
3+
<package-json value="$PROJECT_DIR$/front/package.json" />
4+
<command value="run" />
5+
<scripts>
6+
<script value="start" />
7+
</scripts>
8+
<node-interpreter value="project" />
9+
<envs />
10+
<method v="2" />
11+
</configuration>
12+
</component>

.run/Test Back.run.xml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="Test Back" type="GoTestRunConfiguration" factoryName="Go Test">
3+
<module name="karto" />
4+
<working_directory value="$PROJECT_DIR$/back" />
5+
<framework value="gotest" />
6+
<kind value="DIRECTORY" />
7+
<package value="karto" />
8+
<directory value="$PROJECT_DIR$/back" />
9+
<filePath value="$PROJECT_DIR$" />
10+
<method v="2" />
11+
</configuration>
12+
</component>

.run/Test Front.run.xml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="Test Front" type="js.build_tools.npm">
3+
<package-json value="$PROJECT_DIR$/front/package.json" />
4+
<command value="run" />
5+
<scripts>
6+
<script value="test" />
7+
</scripts>
8+
<node-interpreter value="project" />
9+
<envs />
10+
<method v="2" />
11+
</configuration>
12+
</component>

README.md

+7-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44

55
A simple static analysis tool to explore a Kubernetes cluster.
66

7-
## Observe your cluster state, in real time!
7+
## Explore you cluster interactively!
8+
9+
![deployment-demo](docs/assets/exploring-demo.gif)
10+
11+
## Observe your cluster change in real time!
812

913
![deployment-demo](docs/assets/deployment-demo.gif)
1014

@@ -26,9 +30,9 @@ The left part of the screen contains the controls for the main view:
2630

2731
The main view shows the graph of pods and allowed routes in your selection:
2832
- Zoom in and out by scrolling
29-
- Drag and drop pods to draw the perfect map of your cluster
33+
- Drag and drop graph elements to draw the perfect map of your cluster
3034

31-
Hover over an item to display details: name, namespace, labels, isolation (ingress/egress)... and more!
35+
Hover over any graph element to display details: name, namespace, labels, isolation (ingress/egress)... and more!
3236

3337
## Installation
3438

back/analyzer/analysis_scheduler.go

+34-8
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import (
1010
)
1111

1212
type AnalysisScheduler interface {
13-
AnalyzeOnClusterStateChange(clusterStateChannel <-chan types.ClusterState, resultsChannel chan<- types.AnalysisResult)
13+
AnalyzeOnClusterStateChange(clusterStateChannel <-chan types.ClusterState,
14+
resultsChannel chan<- types.AnalysisResult)
1415
}
1516

1617
type analysisSchedulerImpl struct {
@@ -39,20 +40,45 @@ func (analysisScheduler analysisSchedulerImpl) AnalyzeOnClusterStateChange(
3940

4041
func (analysisScheduler analysisSchedulerImpl) analyze(clusterState types.ClusterState) types.AnalysisResult {
4142
start := time.Now()
42-
pods := analysisScheduler.podAnalyzer.Analyze(clusterState.Pods)
43-
podIsolations, allowedRoutes := analysisScheduler.trafficAnalyzer.Analyze(clusterState.Pods,
44-
clusterState.Namespaces, clusterState.NetworkPolicies)
45-
services, replicaSets, deployments := analysisScheduler.workloadAnalyzer.Analyze(clusterState.Pods,
46-
clusterState.Services, clusterState.ReplicaSets, clusterState.Deployments)
43+
podsResult := analysisScheduler.podAnalyzer.Analyze(pod.ClusterState{
44+
Pods: clusterState.Pods,
45+
})
46+
trafficResult := analysisScheduler.trafficAnalyzer.Analyze(traffic.ClusterState{
47+
Pods: clusterState.Pods,
48+
Namespaces: clusterState.Namespaces,
49+
NetworkPolicies: clusterState.NetworkPolicies,
50+
})
51+
workloadResult := analysisScheduler.workloadAnalyzer.Analyze(workload.ClusterState{
52+
Pods: clusterState.Pods,
53+
Services: clusterState.Services,
54+
Ingresses: clusterState.Ingresses,
55+
ReplicaSets: clusterState.ReplicaSets,
56+
StatefulSets: clusterState.StatefulSets,
57+
DaemonSets: clusterState.DaemonSets,
58+
Deployments: clusterState.Deployments,
59+
})
60+
pods := podsResult.Pods
61+
podIsolations := trafficResult.Pods
62+
allowedRoutes := trafficResult.AllowedRoutes
63+
services := workloadResult.Services
64+
ingresses := workloadResult.Ingresses
65+
replicaSets := workloadResult.ReplicaSets
66+
statefulSets := workloadResult.StatefulSets
67+
daemonSets := workloadResult.DaemonSets
68+
deployments := workloadResult.Deployments
4769
elapsed := time.Since(start)
48-
log.Printf("Finished analysis in %s, found: %d pods, %d allowed routes, %d services, %d replicaSets and "+
49-
"%d deployments\n", elapsed, len(pods), len(allowedRoutes), len(services), len(replicaSets), len(deployments))
70+
log.Printf("Finished analysis in %s, found: %d pods, %d allowed routes, %d services, %d ingresses, "+
71+
"%d replicaSets, %d statefulSets, %d daemonSets and %d deployments\n", elapsed, len(pods), len(allowedRoutes),
72+
len(services), len(ingresses), len(replicaSets), len(statefulSets), len(daemonSets), len(deployments))
5073
return types.AnalysisResult{
5174
Pods: pods,
5275
PodIsolations: podIsolations,
5376
AllowedRoutes: allowedRoutes,
5477
Services: services,
78+
Ingresses: ingresses,
5579
ReplicaSets: replicaSets,
80+
StatefulSets: statefulSets,
81+
DaemonSets: daemonSets,
5682
Deployments: deployments,
5783
}
5884
}

0 commit comments

Comments
 (0)