Control your Kubernetes clusters with this PHP-based Kubernetes client. It supports any form of authentication, the exec API, and it has an easy implementation for CRDs.

Maintainers

👁 eldadfux

Package info

github.com/appwrite-labs/php-k8s

Homepage

pkg:composer/appwrite-labs/php-k8s

Fund package maintenance!

rennokki

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

0.1.0 2026-06-11 08:06 UTC

Requires (Dev)

Suggests

  • ext-yaml: YAML extension is used to read or generate YAML from PHP K8s internal classes.
  • aws/aws-sdk-php: Required for native EKS token generation without AWS CLI.

Provides

None

Conflicts

None

Replaces

None

Apache-2.0 f571fd2c440c699f0aced5563be8558b00baac5e

phpapilaravelclusterkubekubernetesk8sk3sk0skubeadmkubeapi


README

Note: This is a maintained fork of renoki-co/php-k8s with PHP 8.3+ support and additional features. See fork differences for details.

👁 v1.33.10 K8s Version
👁 v1.34.6 K8s Version
👁 v1.35.3 K8s Version

👁 Client Capabilities
👁 Client Support Level

Control your Kubernetes clusters with this PHP-based Kubernetes client. It supports any form of authentication, the exec API, and it has an easy implementation for CRDs.

For Laravel projects, you might want to use renoki-co/laravel-php-k8s (from the upstream project). Note that compatibility with this fork is not guaranteed.

✨ Features

  • Full Kubernetes API Support: 33+ resource types including Pods, Deployments, Services, and more
  • Exec & Logs: Execute commands and stream logs from containers
  • Watch API: Real-time event streaming for resource changes
  • JSON Patch & Merge Patch: RFC 6902 and RFC 7396 support for precise updates
  • Custom Resources (CRDs): Easy CRD integration with macros
  • PHP 8.2+ Modern Features: Enums, type hints, readonly properties, match expressions
  • Laravel Integration: First-class Laravel support via laravel-php-k8s
  • Flexible Authentication: Kubeconfig, tokens, certificates, exec plugins, AWS EKS native, OpenShift OAuth
  • YAML Import: Load resources directly from YAML files with templating

🚀 Quick Start

use RenokiCo\PhpK8s\K8s;
use RenokiCo\PhpK8s\KubernetesCluster;

$cluster = new KubernetesCluster('http://127.0.0.1:8080');

$pod = K8s::pod($cluster)
 ->setName('my-pod')
 ->setContainers([
 K8s::container()->setName('app')->setImage('nginx:latest')
 ])
 ->create();

echo $pod->getName(); // my-pod
echo $pod->getPodPhase(); // Returns PodPhase enum

See more examples →

🔐 Advanced Authentication

AWS EKS Native

// No AWS CLI required - pure PHP token generation
$cluster = KubernetesCluster::fromUrl($eksClusterUrl)
 ->withEksAuth('cluster-name', 'us-east-2')
 ->withCaCertificate('/path/to/ca.crt');

OpenShift OAuth

// Direct username/password authentication
$cluster = KubernetesCluster::fromUrl($openshiftUrl)
 ->withOpenShiftAuth('username', 'password');

Exec Credential Plugins

// Automatically supported from kubeconfig
$cluster = KubernetesCluster::fromKubeConfigYamlFile('~/.kube/config');
// Works with AWS EKS, GKE, AKS, and custom credential providers

See authentication docs →

📦 Requirements

  • PHP 8.2 or higher
  • Laravel 11.x or 12.x (for Laravel integration)
  • Kubernetes cluster access

📃 Documentation

Read the full documentation at php-k8s.cuppett.dev

This fork is based on renoki-co/php-k8s. See the project history and upstream documentation for more details.

🐛 Testing

vendor/bin/phpunit

🤝 Contributing

Please see CONTRIBUTING for details.

🔒 Security

If you discover any security related issues, please email steve@cuppett.com instead of using the issue tracker.

🎉 Credits