Skip to content

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:

  1. In-cluster config (automatic when running inside a pod)
  2. Explicit kubeconfig file path
  3. 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:

config:
  group: argoproj.io
  version: v1alpha1
  resource: applications
  namespace: argocd

Body is a *unstructured.Unstructured document.

See also