Kubernetes Native
Visualize Kubernetes resources and monitor changes through queries and alerts.
- Installation
- Authorization
- Data Model
- Types
- Release Notes
Installation
To use this integration, you must have a running Kubernetes cluster. This integration with JupiterOne is deployed as a pod and interacts with a Kubernetes API server.
Configuration in JupiterOne
-
Navigate to the Integrations tab in JupiterOne and select Kubernetes.
-
Click New Instance to begin configuring your integration and provide the following:
- Account Name — used to identify the Kubernetes account in JupiterOne. Ingested entities will have this value stored in
tag.AccountNamewhen the AccountName toggle is enabled. - Description (optional) — helps identify the integration instance.
- Account Name — used to identify the Kubernetes account in JupiterOne. Ingested entities will have this value stored in
-
Click Create. Your instance appears in the list of Kubernetes instances.
-
Click the name of the new instance and go to the API Keys tab.
-
Follow the prompts to create an integration API key.
-
Click Reveal and copy the API key.
For the Kubernetes configuration you will need:
- The Integration API Key you just created
- The Integration Instance ID (listed as ID in Configuration Settings)
- Your Account ID (listed under Account Management after clicking the gear icon)
Configuration in Kubernetes using Helm (recommended)
The easiest way to install and keep the integration up to date is through the published Helm chart. See the JupiterOne Helm repository for full chart documentation.
Quickstart
helm repo add jupiterone https://jupiterone.github.io/helm-charts
helm repo update
helm install [RELEASE_NAME] jupiterone/graph-kubernetes \
--set secrets.jupiteroneAccountId="<account-id>" \
--set secrets.jupiteroneApiKey="<api-key>" \
--set secrets.jupiteroneIntegrationInstanceId="<integration-instance-id>"
The Helm chart automatically creates the service account, the required RBAC Role/ClusterRole, and the RoleBinding/ClusterRoleBinding for the integration.
Configuration in Kubernetes using standard YAML
Authentication — RBAC
The integration runs as a Kubernetes service account that must be granted read access to the resources it ingests. It dynamically skips any resource type the service account cannot access, so you can tune permissions to match what your cluster allows.
The built-in view ClusterRole is not sufficient. It omits secrets, cluster-scoped RBAC resources (clusterroles, clusterrolebindings), nodes, and certificatesigningrequests, which the integration collects. Use a custom Role or ClusterRole as shown below.
Namespace-scoped access (limits ingestion to a single namespace):
- Create a service account:
kubectl create sa jupiterone-integration -n <namespace>
- Apply a custom Role granting read access to the required resources, then bind it:
kubectl apply -f role.ymlkubectl apply -f roleBinding.yml
Cluster-wide access (ingests all namespaces and cluster-scoped resources):
- Create a service account:
kubectl create sa jupiterone-integration-cluster
- Apply a custom ClusterRole and ClusterRoleBinding:
kubectl apply -f clusterRole.ymlkubectl apply -f clusterRoleBinding.yml
See the Helm chart RBAC templates for reference Role and ClusterRole definitions that match the integration's full resource requirements.
If you use a different service account name or namespace, update the names consistently across all YAML files and kubectl commands.
Secrets
The integration reads your JupiterOne credentials from Kubernetes Secrets. Create the secret with base64-encoded values:
kubectl apply -f createSecret.yml
Deploying
Deploy the integration as a Kubernetes CronJob:
-
Namespace-scoped access:
kubectl apply -f cronjobNamespace.yml -
Cluster-wide access:
kubectl apply -f cronjobCluster.yml
Debugging
-
Check whether the CronJob was created:
kubectl get cronjob -
Check whether the CronJob has spawned jobs:
kubectl get job -
View pod logs:
kubectl logs --selector job-name=<job-name>
Uninstall
kubectl delete cronjob <name>
kubectl delete serviceaccount <serviceaccount> -n <namespace>
kubectl delete clusterrolebinding <clusterrolebinding>
kubectl delete clusterrole <clusterrole>
Upgrading
Reapply any changed resource manifest:
kubectl apply -f resourceFile.yaml
Telemetry and Diagnostics
The Helm chart and vanilla Kubernetes YAML manifests include the OpenTelemetry Collector and FluentBit, with FluentBit forwarding container logs into the OpenTelemetry Collector. To forward telemetry to your own systems (CloudWatch, Prometheus, etc.), configure the collector to point to them and update the manifests.
Next steps
Now that your integration instance has been configured, it will begin running on the polling interval you provided, populating data within JupiterOne. Continue on to our Instance management guide to learn more about working with and editing integration instances.
Entities
The following entities are created:
| Resources | Entity _type | Entity _class |
|---|---|---|
| Kubernetes Certificate Signing Request | kube_certificate_signing_request | Certificate, NHI |
| Kubernetes Cluster | kube_cluster | Cluster |
| Kubernetes Cluster Role | kube_cluster_role | AccessRole |
| Kubernetes Cluster Role Binding | kube_cluster_role_binding | AccessPolicy |
| Kubernetes ConfigMap | kube_config_map | Configuration |
| Kubernetes Container | kube_container | Container |
| Kubernetes Container Spec | kube_container_spec | Configuration |
| Kubernetes CronJob | kube_cron_job | Task |
| Kubernetes Custom Resource | kube_custom_resource | Resource |
| Kubernetes Custom Resource Definition | kube_custom_resource_definition | Resource |
| Kubernetes DaemonSet | kube_daemon_set | Deployment |
| Kubernetes Deployment | kube_deployment | Deployment |
| Kubernetes Image | kube_image | Image |
| Kubernetes Job | kube_job | Task |
| Kubernetes Namespace | kube_namespace | Group |
| Kubernetes Network Policy | kube_network_policy | Configuration |
| Kubernetes Node | kube_node | Host |
| Kubernetes Pod | kube_pod | Task |
| Kubernetes ReplicaSet | kube_replica_set | Deployment |
| Kubernetes Role | kube_role | AccessRole |
| Kubernetes Role Binding | kube_role_binding | AccessPolicy |
| Kubernetes Role Rule | kube_role_rule | Rule |
| Kubernetes Secret | kube_secret | Vault, NHI |
| Kubernetes Service | kube_service | Service |
| Kubernetes Service Account | kube_service_account | User, NHI |
| Kubernetes StatefulSet | kube_stateful_set | Deployment |
| Kubernetes User | kube_user | User |
| Kubernetes Volume | kube_volume | Disk |
Relationships
The following relationships are created:
Source Entity _type | Relationship _class | Target Entity _type |
|---|---|---|
kube_cluster | CONTAINS | kube_cluster_role |
kube_cluster | CONTAINS | kube_cluster_role_binding |
kube_cluster | CONTAINS | kube_namespace |
kube_cluster_role | ENFORCES | kube_role_rule |
kube_cluster_role | ASSIGNED | kube_role_binding |
kube_cluster_role_binding | ASSIGNED | kube_service_account |
kube_container | USES | kube_image |
kube_container_spec | USES | kube_volume |
kube_cron_job | MANAGES | kube_job |
kube_cron_job | USES | kube_container_spec |
kube_custom_resource | IMPLEMENTS | kube_custom_resource_definition |
kube_daemon_set | USES | kube_container_spec |
kube_deployment | USES | kube_container_spec |
kube_deployment | MANAGES | kube_replica_set |
kube_job | USES | kube_container_spec |
kube_job | MANAGES | kube_pod |
kube_namespace | CONTAINS | kube_network_policy |
kube_namespace | CONTAINS | kube_service_account |
kube_namespace | CONTAINS | kube_role |
kube_namespace | CONTAINS | kube_role_binding |
kube_namespace | CONTAINS | kube_service |
kube_namespace | CONTAINS | kube_deployment |
kube_namespace | CONTAINS | kube_replica_set |
kube_namespace | CONTAINS | kube_stateful_set |
kube_namespace | CONTAINS | kube_daemon_set |
kube_namespace | CONTAINS | kube_job |
kube_namespace | CONTAINS | kube_cron_job |
kube_namespace | CONTAINS | kube_config_map |
kube_namespace | CONTAINS | kube_secret |
kube_node | HAS | kube_image |
kube_node | RUNS | kube_pod |
kube_pod | CONTAINS | kube_container |
kube_pod | USES | kube_secret |
kube_pod | USES | kube_container_spec |
kube_pod | USES | kube_service_account |
kube_pod | HAS | kube_certificate_signing_request |
kube_replica_set | USES | kube_image |
kube_replica_set | USES | kube_container_spec |
kube_replica_set | MANAGES | kube_pod |
kube_role | ENFORCES | kube_role_rule |
kube_role | ASSIGNED | kube_cluster_role_binding |
kube_role | ASSIGNED | kube_role_binding |
kube_service_account | USES | kube_secret |
kube_service_account | ASSIGNED | kube_role_binding |
kube_stateful_set | MANAGES | kube_pod |
Mapped Relationships
The following mapped relationships are created:
Source Entity _type | Relationship _class | Target Entity _type | Direction |
|---|---|---|---|
kube_cluster | IS | azure_kubernetes_cluster | FORWARD |
kube_cluster | IS | google_container_cluster | FORWARD |
Kube Service Account
kube_service_account inherits from User, NHI
| Property | Type | Description | Specifications |
|---|---|---|---|
deletionGracePeriodSeconds | integer | ||
generation | integer | ||
namespace | string | ||
resourceVersion | string | ||
secretIds | array of strings | ||
secretNames | array of strings |
Kube User
kube_user inherits from User
| Property | Type | Description | Specifications |
|---|---|---|---|
certFile | string | ||
keyFile | string |
Release Notes
- 2026-03-31 — Added OS kernel version to Kubernetes node entities.
- 2025-10-03 — Added relationships linking Kubernetes role bindings to their assigned cluster roles.
- 2025-09-25 — Added relationships linking Kubernetes pods to their assigned service accounts.
- 2025-08-06 — Added namespace property to all Kubernetes resource entities for easier namespace-scoped queries.
- 2025-06-03 — Added security context properties to Kubernetes pods and container specs, including seccomp profile type and privilege escalation settings.
- 2025-05-21 — Added Kubernetes role rule ingestion as individual rule entities linked to their parent roles and cluster roles, exposing role permission details.
- 2025-05-12 — Added ingestion of Kubernetes Certificate Signing Requests as certificate entities, with relationships linking pods to their certificate requests.
- 2025-04-15 — Added support for Kubernetes Custom Resource Definitions and custom resources as queryable entities.