Skip to content

Commit fa0ed36

Browse files
authored
Merge pull request #2 from renoki-co/update/in-cluster
[2.x] In-Cluster Configuration
2 parents 101db88 + 33fd2d8 commit fa0ed36

File tree

5 files changed

+52
-5
lines changed

5 files changed

+52
-5
lines changed

.github/workflows/ci.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,17 @@ jobs:
5353

5454
- name: Install dependencies
5555
run: |
56-
composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" "orchestra/database:${{ matrix.testbench }}" --no-interaction --no-update
56+
composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update
5757
composer update --${{ matrix.prefer }} --prefer-dist --no-interaction --no-suggest
5858
59+
- name: Setup in-cluster config
60+
run: |
61+
sudo mkdir -p /var/run/secrets/kubernetes.io/serviceaccount
62+
echo "some-token" | sudo tee /var/run/secrets/kubernetes.io/serviceaccount/token
63+
echo "c29tZS1jZXJ0Cg==" | sudo tee /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
64+
echo "some-namespace" | sudo tee /var/run/secrets/kubernetes.io/serviceaccount/namespace
65+
sudo chmod -R 777 /var/run/secrets/kubernetes.io/serviceaccount/
66+
5967
- name: Run tests
6068
run: |
6169
vendor/bin/phpunit --coverage-text --coverage-clover=coverage.xml

composer.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
}
1313
],
1414
"require": {
15-
"renoki-co/php-k8s": "^2.0"
15+
"renoki-co/php-k8s": "^2.2"
1616
},
1717
"autoload": {
1818
"psr-4": {
@@ -28,10 +28,8 @@
2828
"test": "vendor/bin/phpunit"
2929
},
3030
"require-dev": {
31-
"laravel/legacy-factories": "^1.1",
3231
"mockery/mockery": "^1.4",
33-
"orchestra/testbench": "^5.0|^6.0",
34-
"orchestra/database": "^5.0|^6.0"
32+
"orchestra/testbench": "^5.0|^6.0"
3533
},
3634
"config": {
3735
"sort-packages": true

config/k8s.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,21 @@
8080
'token' => env('KUBE_BEARER_TOKEN', null),
8181
],
8282

83+
/*
84+
|--------------------------------------------------------------------------
85+
| In-Cluster Driver
86+
|--------------------------------------------------------------------------
87+
|
88+
| In-Cluster Driver works only if the written PHP app runs
89+
| inside a Kubernetes Pod, within a Cluster. The configuration
90+
| is being loaded automatically.
91+
|
92+
*/
93+
94+
'cluster' => [
95+
'driver' => 'cluster',
96+
],
97+
8398
],
8499

85100
];

src/KubernetesCluster.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ protected function loadFromConfig(array $config)
5353
case 'kubeconfig': $this->configureWithKubeConfigFile($config); break;
5454
case 'http': $this->configureWithHttpAuth($config); break;
5555
case 'token': $this->configureWithToken($config); break;
56+
case 'cluster': $this->configureInCluster(); break;
5657
default: break;
5758
}
5859
}
@@ -131,6 +132,16 @@ protected function configureWithToken(array $config)
131132
$this->cluster->withToken($config['token']);
132133
}
133134

135+
/**
136+
* Load the In-Cluster configuration.
137+
*
138+
* @return void
139+
*/
140+
protected function configureInCluster()
141+
{
142+
$this->cluster->inClusterConfiguration();
143+
}
144+
134145
/**
135146
* Get the initialized cluster.
136147
*

tests/ConfigurationTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace RenokiCo\LaravelK8s\Test;
44

55
use RenokiCo\LaravelK8s\LaravelK8sFacade;
6+
use RenokiCo\PhpK8s\Kinds\K8sResource;
67

78
class ConfigurationTest extends TestCase
89
{
@@ -108,4 +109,18 @@ public function test_token_authentication()
108109

109110
$this->assertEquals('Bearer some-token', $token);
110111
}
112+
113+
public function test_in_cluster_config()
114+
{
115+
$cluster = LaravelK8sFacade::connection('cluster')->getCluster();
116+
117+
[
118+
'headers' => ['authorization' => $token],
119+
'verify' => $caPath,
120+
] = $cluster->getClient()->getConfig();
121+
122+
$this->assertEquals('Bearer some-token', $token);
123+
$this->assertEquals('/var/run/secrets/kubernetes.io/serviceaccount/ca.crt', $caPath);
124+
$this->assertEquals('some-namespace', K8sResource::$defaultNamespace);
125+
}
111126
}

0 commit comments

Comments
 (0)