[BAEL-4945] Using Namespaces and Selectors With the Kubernetes Java API (#10745)
* [BAEL-4863] Inicial code * [BAEL-4863] Article code * [BAEL-4945]
This commit is contained in:
parent
6e02759f10
commit
99213ea74c
|
@ -0,0 +1,58 @@
|
|||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: ns1
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: ns2
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: httpd
|
||||
namespace: ns1
|
||||
labels:
|
||||
app: httpd
|
||||
version: "1"
|
||||
spec:
|
||||
replicas: 3
|
||||
selector:
|
||||
matchLabels:
|
||||
app: httpd
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: httpd
|
||||
spec:
|
||||
containers:
|
||||
- name: main
|
||||
image: httpd:alpine
|
||||
ports:
|
||||
- containerPort: 80
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: httpd
|
||||
namespace: ns2
|
||||
labels:
|
||||
app: httpd
|
||||
version: "2"
|
||||
foo: bar
|
||||
spec:
|
||||
replicas: 3
|
||||
selector:
|
||||
matchLabels:
|
||||
app: httpd
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: httpd
|
||||
spec:
|
||||
containers:
|
||||
- name: main
|
||||
image: httpd:alpine
|
||||
ports:
|
||||
- containerPort: 80
|
|
@ -0,0 +1,68 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package com.baeldung.kubernetes.intro;
|
||||
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import io.kubernetes.client.openapi.ApiClient;
|
||||
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
||||
import io.kubernetes.client.openapi.models.V1NodeList;
|
||||
import io.kubernetes.client.openapi.models.V1PodList;
|
||||
import io.kubernetes.client.util.Config;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.logging.HttpLoggingInterceptor;
|
||||
|
||||
/**
|
||||
* @author Philippe
|
||||
*
|
||||
*/
|
||||
public class ListPodsWithFieldSelectors {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(ListPodsWithFieldSelectors.class);
|
||||
|
||||
/**
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
ApiClient client = Config.defaultClient();
|
||||
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(message -> log.info(message));
|
||||
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
|
||||
OkHttpClient newClient = client.getHttpClient()
|
||||
.newBuilder()
|
||||
.addInterceptor(interceptor)
|
||||
.readTimeout(0, TimeUnit.SECONDS)
|
||||
.build();
|
||||
|
||||
client.setHttpClient(newClient);
|
||||
CoreV1Api api = new CoreV1Api(client);
|
||||
|
||||
String fs = createSelector(args);
|
||||
V1PodList items = api.listPodForAllNamespaces(null, null, fs, null, null, null, null, null, 10, false);
|
||||
items.getItems()
|
||||
.stream()
|
||||
.map((pod) -> pod.getMetadata().getName() )
|
||||
.forEach((name) -> System.out.println("name=" + name));
|
||||
|
||||
}
|
||||
|
||||
private static String createSelector(String[] args) {
|
||||
|
||||
StringBuilder b = new StringBuilder();
|
||||
for( int i = 0 ; i < args.length; i++ ) {
|
||||
if( b.length() > 0 ) {
|
||||
b.append(',');
|
||||
}
|
||||
|
||||
b.append(args[i]);
|
||||
}
|
||||
|
||||
return b.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package com.baeldung.kubernetes.intro;
|
||||
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import io.kubernetes.client.openapi.ApiClient;
|
||||
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
||||
import io.kubernetes.client.openapi.models.V1NodeList;
|
||||
import io.kubernetes.client.openapi.models.V1PodList;
|
||||
import io.kubernetes.client.util.Config;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.logging.HttpLoggingInterceptor;
|
||||
|
||||
/**
|
||||
* @author Philippe
|
||||
*
|
||||
*/
|
||||
public class ListPodsWithLabelSelectors {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(ListPodsWithLabelSelectors.class);
|
||||
|
||||
/**
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
ApiClient client = Config.defaultClient();
|
||||
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(message -> log.info(message));
|
||||
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
|
||||
OkHttpClient newClient = client.getHttpClient()
|
||||
.newBuilder()
|
||||
.addInterceptor(interceptor)
|
||||
.readTimeout(0, TimeUnit.SECONDS)
|
||||
.build();
|
||||
|
||||
client.setHttpClient(newClient);
|
||||
CoreV1Api api = new CoreV1Api(client);
|
||||
|
||||
String selector = createSelector(args);
|
||||
V1PodList items = api.listPodForAllNamespaces(null, null, null, selector, null, null, null, null, 10, false);
|
||||
items.getItems()
|
||||
.stream()
|
||||
.map((pod) -> pod.getMetadata().getName() )
|
||||
.forEach((name) -> System.out.println("name=" + name));
|
||||
|
||||
}
|
||||
|
||||
private static String createSelector(String[] args) {
|
||||
|
||||
StringBuilder b = new StringBuilder();
|
||||
for( int i = 0 ; i < args.length; i++ ) {
|
||||
if( b.length() > 0 ) {
|
||||
b.append(',');
|
||||
}
|
||||
|
||||
b.append(args[i]);
|
||||
}
|
||||
|
||||
return b.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package com.baeldung.kubernetes.intro;
|
||||
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import io.kubernetes.client.openapi.ApiClient;
|
||||
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
||||
import io.kubernetes.client.openapi.models.V1NodeList;
|
||||
import io.kubernetes.client.openapi.models.V1PodList;
|
||||
import io.kubernetes.client.util.Config;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.logging.HttpLoggingInterceptor;
|
||||
|
||||
/**
|
||||
* @author Philippe
|
||||
*
|
||||
*/
|
||||
public class ListPodsWithNamespaces {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(ListPodsWithNamespaces.class);
|
||||
|
||||
/**
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
ApiClient client = Config.defaultClient();
|
||||
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(message -> log.info(message));
|
||||
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
|
||||
OkHttpClient newClient = client.getHttpClient()
|
||||
.newBuilder()
|
||||
.addInterceptor(interceptor)
|
||||
.readTimeout(0, TimeUnit.SECONDS)
|
||||
.build();
|
||||
|
||||
client.setHttpClient(newClient);
|
||||
CoreV1Api api = new CoreV1Api(client);
|
||||
String namespace = "ns1";
|
||||
V1PodList items = api.listNamespacedPod(namespace,null, null, null, null, null, null, null, null, 10, false);
|
||||
items.getItems()
|
||||
.stream()
|
||||
.map((pod) -> pod.getMetadata().getName() )
|
||||
.forEach((name) -> System.out.println("name=" + name));
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package com.baeldung.kubernetes.intro;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class ListPodsWithFieldSelectorsLiveTest {
|
||||
@Test
|
||||
void givenEqualitySelector_whenListPodsWithFieldSelectors_thenSuccess() throws Exception {
|
||||
ListPodsWithFieldSelectors.main(new String[] {
|
||||
"metadata.namespace=ns1"
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenInequalitySelector_whenListPodsWithFieldSelectors_thenSuccess() throws Exception {
|
||||
ListPodsWithFieldSelectors.main(new String[] {
|
||||
"metadata.namespace!=ns1"
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenChainedSelector_whenListPodsWithFieldSelectors_thenSuccess() throws Exception {
|
||||
ListPodsWithFieldSelectors.main(new String[] {
|
||||
"metadata.namespace=ns1",
|
||||
"status.phase=Running"
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
package com.baeldung.kubernetes.intro;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class ListPodsWithLabelSelectorsLiveTest {
|
||||
@Test
|
||||
void givenEqualitySelector_whenListPodsWithLabelSelectors_thenSuccess() throws Exception {
|
||||
ListPodsWithLabelSelectors.main(new String[] {
|
||||
"app=httpd"
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenInqualitySelector_whenListPodsWithLabelSelectors_thenSuccess() throws Exception {
|
||||
ListPodsWithLabelSelectors.main(new String[] {
|
||||
"app!=httpd"
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenInSetSelector_whenListPodsWithLabelSelectors_thenSuccess() throws Exception {
|
||||
ListPodsWithLabelSelectors.main(new String[] {
|
||||
"app in (httpd,test)"
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenNotInSetSelector_whenListPodsWithLabelSelectors_thenSuccess() throws Exception {
|
||||
ListPodsWithLabelSelectors.main(new String[] {
|
||||
"app notin (httpd)"
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenLabelPresentSelector_whenListPodsWithLabelSelectors_thenSuccess() throws Exception {
|
||||
ListPodsWithLabelSelectors.main(new String[] {
|
||||
"app"
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenLabelNotPresentSelector_whenListPodsWithLabelSelectors_thenSuccess() throws Exception {
|
||||
ListPodsWithLabelSelectors.main(new String[] {
|
||||
"!app"
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenChainedSelector_whenListPodsWithLabelSelectors_thenSuccess() throws Exception {
|
||||
ListPodsWithLabelSelectors.main(new String[] {
|
||||
"app=httpd",
|
||||
"!foo"
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue