Skip to content

Commit 1fe0ea8

Browse files
Arta AsadiArta Asadi
authored andcommitted
fix: add kubernetes cluster describer
1 parent 0d1c405 commit 1fe0ea8

File tree

10 files changed

+698
-0
lines changed

10 files changed

+698
-0
lines changed

cloudql/kubernetes/plugin.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ func Plugin(ctx context.Context) *plugin.Plugin {
1919
},
2020
DefaultTransform: transform.FromCamel(),
2121
TableMap: map[string]*plugin.Table{
22+
"kubernetes_cluster": tableKubernetesCluster(ctx),
2223
"kubernetes_cluster_role": tableKubernetesClusterRole(ctx),
2324
"kubernetes_cluster_role_binding": tableKubernetesClusterRoleBinding(ctx),
2425
"kubernetes_config_map": tableKubernetesConfigMap(ctx),
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package kubernetes
2+
3+
import (
4+
"context"
5+
opengovernance "github.com/opengovern/og-describer-kubernetes/discovery/pkg/es"
6+
7+
"github.com/turbot/steampipe-plugin-sdk/v5/grpc/proto"
8+
"github.com/turbot/steampipe-plugin-sdk/v5/plugin"
9+
"github.com/turbot/steampipe-plugin-sdk/v5/plugin/transform"
10+
)
11+
12+
func tableKubernetesCluster(ctx context.Context) *plugin.Table {
13+
return &plugin.Table{
14+
Name: "kubernetes_cluster",
15+
Description: "ClusterRole contains rules that represent a set of permissions.",
16+
List: &plugin.ListConfig{
17+
Hydrate: opengovernance.ListKubernetesCluster,
18+
},
19+
Columns: commonColumns([]*plugin.Column{
20+
{
21+
Name: "context_name",
22+
Type: proto.ColumnType_STRING,
23+
Description: "Context name of the cluster.",
24+
Transform: transform.FromField("Description.ContextName"),
25+
},
26+
{
27+
Name: "endpoint",
28+
Type: proto.ColumnType_STRING,
29+
Description: "endpoint of the cluster.",
30+
Transform: transform.FromField("Description.Endpoint"),
31+
},
32+
{
33+
Name: "auth_method",
34+
Type: proto.ColumnType_STRING,
35+
Description: "cluster auth method.",
36+
Transform: transform.FromField("Description.AuthMethod"),
37+
},
38+
{
39+
Name: "tls_server_verification",
40+
Type: proto.ColumnType_BOOL,
41+
Description: "endpoint of the cluster.",
42+
Transform: transform.FromField("Description.TLSServerVerification"),
43+
},
44+
{
45+
Name: "server_version",
46+
Type: proto.ColumnType_STRING,
47+
Description: "endpoint of the cluster.",
48+
Transform: transform.FromField("Description.ServerVersion"),
49+
},
50+
}),
51+
}
52+
}

discovery/describers/kubernetes.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,29 @@ import (
1010
"k8s.io/apimachinery/pkg/runtime/schema"
1111
)
1212

13+
func KubernetesCluster(ctx context.Context, client model.Client, extra string, stream *models.StreamSender) ([]models.Resource, error) {
14+
var allValues []models.Resource
15+
16+
cluster, err := DoDiscovery(client.KubeConfig)
17+
if err != nil {
18+
return nil, err
19+
}
20+
resource := models.Resource{
21+
ID: fmt.Sprintf("cluster/%s", cluster.ContextName),
22+
Name: cluster.ContextName,
23+
Description: cluster,
24+
}
25+
26+
if stream != nil {
27+
if err := (*stream)(resource); err != nil {
28+
return allValues, fmt.Errorf("error streaming resource: %w", err)
29+
}
30+
} else {
31+
allValues = append(allValues, resource)
32+
}
33+
return allValues, nil
34+
}
35+
1336
func KubernetesClusterRole(ctx context.Context, client model.Client, extra string, stream *models.StreamSender) ([]models.Resource, error) {
1437
var allValues []models.Resource
1538

0 commit comments

Comments
 (0)