kubernetes connectors¶
Kubernetes API integrations. All 20 connectors use the official k8s.io/client-go typed clientset for standard resources and k8s.io/client-go/dynamic for Custom Resources (CRDs). They share a kubeConfig resolver (in kube_client.go) that picks credentials in this order:
- In-cluster config (automatic when running inside a pod)
- Explicit
kubeconfigfile path - Default
~/.kube/config
Each connector supports list, get, create, update, patch, and delete operations on its target resource type. Pass the operation via exchange header operation=list|get|create|update|patch|delete and the resource payload as the exchange body.
Connectors in this category¶
| Connector | URI / type | Auth | Native SDK | One-line description |
|---|---|---|---|---|
kubernetes-config-maps |
connector://k8s-cm/send |
Kubeconfig / in-cluster | Yes (client-go) |
ConfigMap CRUD via corev1.ConfigMap. |
kubernetes-cronjobs |
connector://k8s-cj/send |
Kubeconfig / in-cluster | Yes (client-go) |
CronJob CRUD via batchv1.CronJob. |
kubernetes-custom-resources |
connector://k8s-cr/send |
Kubeconfig / in-cluster | Yes (client-go/dynamic) |
Custom Resource CRUD via dynamic.Interface — any CRD by group / version / resource. |
kubernetes-daemonsets |
connector://k8s-ds/send |
Kubeconfig / in-cluster | Yes (client-go) |
DaemonSet CRUD via appsv1.DaemonSet. |
kubernetes-deployments |
connector://k8s-deploy/send |
Kubeconfig / in-cluster | Yes (client-go) |
Deployment CRUD + rollout + scale via appsv1.Deployment. |
kubernetes-events |
connector://k8s-ev/send |
Kubeconfig / in-cluster | Yes (client-go) |
Event create + list via eventsv1.Event. |
kubernetes-hpa |
connector://k8s-hpa/send |
Kubeconfig / in-cluster | Yes (client-go) |
HorizontalPodAutoscaler CRUD via autoscalingv2.HorizontalPodAutoscaler. |
kubernetes-ingresses |
connector://k8s-ing/send |
Kubeconfig / in-cluster | Yes (client-go) |
Ingress CRUD via networkingv1.Ingress. |
kubernetes-jobs |
connector://k8s-job/send |
Kubeconfig / in-cluster | Yes (client-go) |
Job CRUD via batchv1.Job. |
kubernetes-namespaces |
connector://k8s-ns/send |
Kubeconfig / in-cluster | Yes (client-go) |
Namespace CRUD via corev1.Namespace. |
kubernetes-nodes |
connector://k8s-node/send |
Kubeconfig / in-cluster | Yes (client-go) |
Node list + describe + cordon + drain via corev1.Node. |
kubernetes-persistent-volume-claims |
connector://k8s-pvc/send |
Kubeconfig / in-cluster | Yes (client-go) |
PersistentVolumeClaim CRUD via corev1.PersistentVolumeClaim. |
kubernetes-persistent-volumes |
connector://k8s-pv/send |
Kubeconfig / in-cluster | Yes (client-go) |
PersistentVolume CRUD via corev1.PersistentVolume. |
kubernetes-pods |
connector://k8s-pod/send |
Kubeconfig / in-cluster | Yes (client-go) |
Pod CRUD + exec + logs via corev1.Pod. |
kubernetes-replication-controllers |
connector://k8s-rc/send |
Kubeconfig / in-cluster | Yes (client-go) |
ReplicationController CRUD via corev1.ReplicationController. |
kubernetes-resource-quotas |
connector://k8s-rq/send |
Kubeconfig / in-cluster | Yes (client-go) |
ResourceQuota CRUD via corev1.ResourceQuota. |
kubernetes-secrets |
connector://k8s-secret/send |
Kubeconfig / in-cluster | Yes (client-go) |
Secret CRUD via corev1.Secret. |
kubernetes-service-accounts |
connector://k8s-sa/send |
Kubeconfig / in-cluster | Yes (client-go) |
ServiceAccount CRUD via corev1.ServiceAccount. |
kubernetes-services |
connector://k8s-svc/send |
Kubeconfig / in-cluster | Yes (client-go) |
Service CRUD via corev1.Service. |
kubernetes-statefulsets |
connector://k8s-sts/send |
Kubeconfig / in-cluster | Yes (client-go) |
StatefulSet CRUD via appsv1.StatefulSet. |
kube_client.go is the shared client + config resolver; it does not register a connector itself.
Native-SDK deep section¶
Shared kubeConfig¶
Source: pkg/connector/connectors/kubernetes/kube_client.go. Every connector embeds *kubernetes.Clientset (typed) and dynamic.Interface (untyped, for CRDs). Resolution order:
// 1. In-cluster (KUBERNETES_SERVICE_HOST + token mount)
config, err := rest.InClusterConfig()
// 2. Explicit kubeconfig path
if err != nil { config, err = clientcmd.BuildConfigFromFlags("", kubeconfigPath) }
// 3. Default ~/.kube/config
if err != nil { /* read from $HOME/.kube/config */ }
Example — Deployments¶
connectors:
k8s:
type: kubernetes-deployments
config:
namespace: production
kubeconfig: /etc/helix/kubeconfig
# In-cluster mode: omit kubeconfig
workflows:
- id: rollout-on-merge
trigger:
uri: direct://github-merge
steps:
- transform:
starlang: |
%sl 2.0
output application/json
input payload
---
var x = setHeader("operation", "patch")
var y = setHeader("name", payload["deployment"])
payload
- to: connector://k8s/send
kubernetes-custom-resources¶
Source: pkg/connector/connectors/kubernetes/custom_resources.go. Uses dynamic.Interface so any CRD works:
Body is a *unstructured.Unstructured document.
See also¶
- Connector SDK guide — adding a new connector
- infrastructure — Consul, ZooKeeper, Envoy, Dapr
- devops — ArgoCD, Jenkins, GitHub Actions for the CI side of K8s