Package

purescript-kubernetes

Repository
hoodunit/purescript-kubernetes
License
Apache-2.0
Uploaded by
hoodunit
Published on
2018-03-14

PureScript client for the Kubernetes API.

Supports Kubernetes API versions up to 1.10.0.

Status

Pre-release. You should probably not rely on this for production software unless you are planning on making upstream changes.

Supports:

  • Basic API calls: reading/creating/deleting deployments/namespaces/pods/whatever
  • Authentication via basic auth, X509 client certificates, or bearer tokens.
  • Client-specified HTTPS server certificates

Missing:

  • Watch calls
  • Untested: exec, attach, port-forward calls
  • Encodings other than JSON
  • Support for browser environment (works only in Node.js)

Installation

bower install --save purescript-kubernetes

Usage

See the integration test for an example. This deploys and exposes a Hello World pod, pings it, and then tears it all down.

API documentation is published on Pursuit.

Development

Assuming Nix is installed:

nix-shell
npm install
./bower update --force-latest

# Generate type definitions
npm run build:generation
npm run generate

npm run test:unit

All the nix-shell step does here is install Node.js, so you should also be able to install the version of Node.js in default.nix separately and run with that.

The Kubernetes API types and endpoints are generated from the Kubernetes Swagger definitions in the definitions directory.

Testing

Unit tests:

npm run test:unit

Integration tests:

npm run test:integration:local
Modules
Kubernetes.Api.APIExtensions
Kubernetes.Api.APIExtensions.V1Beta1
Kubernetes.Api.APIExtensions.V1Beta1.CustomResourceDefinition
Kubernetes.Api.AdmissionRegistration
Kubernetes.Api.AdmissionRegistration.V1Alpha1
Kubernetes.Api.AdmissionRegistration.V1Alpha1.InitializerConfiguration
Kubernetes.Api.AdmissionRegistration.V1Beta1
Kubernetes.Api.AdmissionRegistration.V1Beta1.MutatingWebhookConfiguration
Kubernetes.Api.AdmissionRegistration.V1Beta1.ValidatingWebhookConfiguration
Kubernetes.Api.ApiRegistration
Kubernetes.Api.ApiRegistration.V1Beta1
Kubernetes.Api.ApiRegistration.V1Beta1.APIService
Kubernetes.Api.Apis
Kubernetes.Api.Apps
Kubernetes.Api.Apps.V1
Kubernetes.Api.Apps.V1.ControllerRevision
Kubernetes.Api.Apps.V1.DaemonSet
Kubernetes.Api.Apps.V1.Deployment
Kubernetes.Api.Apps.V1.ReplicaSet
Kubernetes.Api.Apps.V1.StatefulSet
Kubernetes.Api.Apps.V1Beta1
Kubernetes.Api.Apps.V1Beta1.ControllerRevision
Kubernetes.Api.Apps.V1Beta1.Deployment
Kubernetes.Api.Apps.V1Beta1.DeploymentRollback
Kubernetes.Api.Apps.V1Beta1.Scale
Kubernetes.Api.Apps.V1Beta1.StatefulSet
Kubernetes.Api.Apps.V1Beta2
Kubernetes.Api.Apps.V1Beta2.ControllerRevision
Kubernetes.Api.Apps.V1Beta2.DaemonSet
Kubernetes.Api.Apps.V1Beta2.Deployment
Kubernetes.Api.Apps.V1Beta2.ReplicaSet
Kubernetes.Api.Apps.V1Beta2.Scale
Kubernetes.Api.Apps.V1Beta2.StatefulSet
Kubernetes.Api.Authentication
Kubernetes.Api.Authentication.V1
Kubernetes.Api.Authentication.V1.TokenReview
Kubernetes.Api.Authentication.V1Beta1
Kubernetes.Api.Authentication.V1Beta1.TokenReview
Kubernetes.Api.Authorization
Kubernetes.Api.Authorization.V1
Kubernetes.Api.Authorization.V1.LocalSubjectAccessReview
Kubernetes.Api.Authorization.V1.SelfSubjectAccessReview
Kubernetes.Api.Authorization.V1.SelfSubjectRulesReview
Kubernetes.Api.Authorization.V1.SubjectAccessReview
Kubernetes.Api.Authorization.V1Beta1
Kubernetes.Api.Authorization.V1Beta1.LocalSubjectAccessReview
Kubernetes.Api.Authorization.V1Beta1.SelfSubjectAccessReview
Kubernetes.Api.Authorization.V1Beta1.SelfSubjectRulesReview
Kubernetes.Api.Authorization.V1Beta1.SubjectAccessReview
Kubernetes.Api.Autoscaling
Kubernetes.Api.Autoscaling.V1
Kubernetes.Api.Autoscaling.V1.HorizontalPodAutoscaler
Kubernetes.Api.Autoscaling.V1.Scale
Kubernetes.Api.Autoscaling.V2Beta1
Kubernetes.Api.Autoscaling.V2Beta1.HorizontalPodAutoscaler
Kubernetes.Api.Batch
Kubernetes.Api.Batch.V1
Kubernetes.Api.Batch.V1.Job
Kubernetes.Api.Batch.V1Beta1
Kubernetes.Api.Batch.V1Beta1.CronJob
Kubernetes.Api.Batch.V2Alpha1
Kubernetes.Api.Batch.V2Alpha1.CronJob
Kubernetes.Api.Certificates
Kubernetes.Api.Certificates.V1Beta1
Kubernetes.Api.Certificates.V1Beta1.CertificateSigningRequest
Kubernetes.Api.Core
Kubernetes.Api.Core.V1
Kubernetes.Api.Core.V1.Binding
Kubernetes.Api.Core.V1.ComponentStatus
Kubernetes.Api.Core.V1.ConfigMap
Kubernetes.Api.Core.V1.Endpoints
Kubernetes.Api.Core.V1.Event
Kubernetes.Api.Core.V1.LimitRange
Kubernetes.Api.Core.V1.Namespace
Kubernetes.Api.Core.V1.Node
Kubernetes.Api.Core.V1.PersistentVolume
Kubernetes.Api.Core.V1.PersistentVolumeClaim
Kubernetes.Api.Core.V1.Pod
Kubernetes.Api.Core.V1.PodTemplate
Kubernetes.Api.Core.V1.ReplicationController
Kubernetes.Api.Core.V1.ResourceQuota
Kubernetes.Api.Core.V1.Secret
Kubernetes.Api.Core.V1.Service
Kubernetes.Api.Core.V1.ServiceAccount
Kubernetes.Api.Events
Kubernetes.Api.Events.Event
Kubernetes.Api.Extensions
Kubernetes.Api.Extensions.V1Beta1
Kubernetes.Api.Extensions.V1Beta1.DaemonSet
Kubernetes.Api.Extensions.V1Beta1.Deployment
Kubernetes.Api.Extensions.V1Beta1.DeploymentRollback
Kubernetes.Api.Extensions.V1Beta1.Ingress
Kubernetes.Api.Extensions.V1Beta1.NetworkPolicy
Kubernetes.Api.Extensions.V1Beta1.PodSecurityPolicy
Kubernetes.Api.Extensions.V1Beta1.ReplicaSet
Kubernetes.Api.Extensions.V1Beta1.Scale
Kubernetes.Api.Lens
Kubernetes.Api.Logs
Kubernetes.Api.Meta.V1
Kubernetes.Api.Networking
Kubernetes.Api.Networking.V1
Kubernetes.Api.Networking.V1.NetworkPolicy
Kubernetes.Api.Policy
Kubernetes.Api.Policy.V1Beta1
Kubernetes.Api.Policy.V1Beta1.Eviction
Kubernetes.Api.Policy.V1Beta1.PodDisruptionBudget
Kubernetes.Api.Rbac
Kubernetes.Api.Rbac.V1
Kubernetes.Api.Rbac.V1.ClusterRole
Kubernetes.Api.Rbac.V1.ClusterRoleBinding
Kubernetes.Api.Rbac.V1.Role
Kubernetes.Api.Rbac.V1.RoleBinding
Kubernetes.Api.Rbac.V1Alpha1
Kubernetes.Api.Rbac.V1Alpha1.ClusterRole
Kubernetes.Api.Rbac.V1Alpha1.ClusterRoleBinding
Kubernetes.Api.Rbac.V1Alpha1.Role
Kubernetes.Api.Rbac.V1Alpha1.RoleBinding
Kubernetes.Api.Rbac.V1Beta1
Kubernetes.Api.Rbac.V1Beta1.ClusterRole
Kubernetes.Api.Rbac.V1Beta1.ClusterRoleBinding
Kubernetes.Api.Rbac.V1Beta1.Role
Kubernetes.Api.Rbac.V1Beta1.RoleBinding
Kubernetes.Api.Resource
Kubernetes.Api.Runtime
Kubernetes.Api.Scheduling
Kubernetes.Api.Scheduling.V1Alpha1
Kubernetes.Api.Scheduling.V1Alpha1.PriorityClass
Kubernetes.Api.Settings
Kubernetes.Api.Settings.V1Alpha1
Kubernetes.Api.Settings.V1Alpha1.PodPreset
Kubernetes.Api.Storage
Kubernetes.Api.Storage.V1
Kubernetes.Api.Storage.V1.StorageClass
Kubernetes.Api.Storage.V1Alpha1
Kubernetes.Api.Storage.V1Alpha1.VolumeAttachment
Kubernetes.Api.Storage.V1Beta1
Kubernetes.Api.Storage.V1Beta1.StorageClass
Kubernetes.Api.Util
Kubernetes.Api.Version
Kubernetes.Client
Kubernetes.Config
Kubernetes.Default
Kubernetes.Generation.AST
Kubernetes.Generation.Emitter
Kubernetes.Generation.GenerateApi
Kubernetes.Generation.GenerateDefinitions
Kubernetes.Generation.GenerateSchemaType
Kubernetes.Generation.Generation
Kubernetes.Generation.JsonSchema
Kubernetes.Generation.Main
Kubernetes.Generation.Names
Kubernetes.Generation.Passes.AddDependencyImports
Kubernetes.Generation.Passes.GenerateLenses
Kubernetes.Generation.Passes.HelperLenses
Kubernetes.Generation.Passes.PrefixNamespace
Kubernetes.Generation.Passes.ResolveLocalRefs
Kubernetes.Generation.PathParsing
Kubernetes.Generation.Swagger
Kubernetes.Json
Kubernetes.QueryString
Kubernetes.Request
Kubernetes.RequestOptions
Kubernetes.SchemaExtensions
Dependencies