Merge branch 'yue9944882-integration-test-remove-local-registry'
This commit is contained in:
@@ -14,16 +14,30 @@ KIND="${BIN_DIR}/kind"
|
|||||||
|
|
||||||
ISTIOCTL="${BIN_DIR}/istio-1.6.2/bin/istioctl"
|
ISTIOCTL="${BIN_DIR}/istio-1.6.2/bin/istioctl"
|
||||||
|
|
||||||
|
MVN_VERSION=$(mvn -q \
|
||||||
|
-Dexec.executable=echo \
|
||||||
|
-Dexec.args='${project.version}' \
|
||||||
|
--non-recursive \
|
||||||
|
exec:exec)
|
||||||
|
|
||||||
|
ALL_INTEGRATION_PROJECTS=(
|
||||||
|
"spring-cloud-kubernetes-core-k8s-client-it"
|
||||||
|
"spring-cloud-kubernetes-client-config-it"
|
||||||
|
"spring-cloud-kubernetes-configuration-watcher-it"
|
||||||
|
)
|
||||||
|
INTEGRATION_PROJECTS=(${INTEGRATION_PROJECTS:-${ALL_INTEGRATION_PROJECTS[@]}})
|
||||||
|
|
||||||
|
DEFAULT_PULLING_IMAGES=(
|
||||||
|
"docker.io/springcloud/spring-cloud-kubernetes-configuration-watcher:${MVN_VERSION}"
|
||||||
|
)
|
||||||
|
PULLING_IMAGES=(${PULLING_IMAGES:-${DEFAULT_PULLING_IMAGES[@]}})
|
||||||
|
|
||||||
CURRENT_DIR="$(pwd)"
|
CURRENT_DIR="$(pwd)"
|
||||||
|
|
||||||
# cleanup on exit (useful for running locally)
|
# cleanup on exit (useful for running locally)
|
||||||
cleanup() {
|
cleanup() {
|
||||||
"${KIND}" delete cluster || true
|
"${KIND}" delete cluster || true
|
||||||
rm -rf "${BIN_DIR}"
|
rm -rf "${BIN_DIR}"
|
||||||
|
|
||||||
docker kill kind-registry
|
|
||||||
docker rm kind-registry
|
|
||||||
docker network rm kind
|
|
||||||
}
|
}
|
||||||
trap cleanup EXIT
|
trap cleanup EXIT
|
||||||
|
|
||||||
@@ -56,40 +70,6 @@ install_kind_release() {
|
|||||||
chmod +x "${KIND}"
|
chmod +x "${KIND}"
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_registry() {
|
|
||||||
set -o errexit
|
|
||||||
|
|
||||||
# create registry container unless it already exists
|
|
||||||
reg_name='kind-registry'
|
|
||||||
reg_port='5000'
|
|
||||||
running="$(docker inspect -f '{{.State.Running}}' "${reg_name}" 2>/dev/null || true)"
|
|
||||||
if [ "${running}" != 'true' ]; then
|
|
||||||
docker run \
|
|
||||||
-d --restart=always -p "${reg_port}:5000" --name "${reg_name}" \
|
|
||||||
registry:2
|
|
||||||
fi
|
|
||||||
|
|
||||||
# create a cluster with the local registry enabled in containerd
|
|
||||||
cat <<EOF | "${KIND}" create cluster --config=-
|
|
||||||
kind: Cluster
|
|
||||||
apiVersion: kind.x-k8s.io/v1alpha4
|
|
||||||
containerdConfigPatches:
|
|
||||||
- |-
|
|
||||||
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:${reg_port}"]
|
|
||||||
endpoint = ["http://${reg_name}:${reg_port}"]
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# connect the registry to the cluster network
|
|
||||||
docker network connect "kind" "${reg_name}"
|
|
||||||
|
|
||||||
# tell https://tilt.dev to use the registry
|
|
||||||
# https://docs.tilt.dev/choosing_clusters.html#discovering-the-registry
|
|
||||||
for node in $("${KIND}" get nodes); do
|
|
||||||
kubectl annotate node "${node}" "kind.x-k8s.io/registry=localhost:${reg_port}";
|
|
||||||
done
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
# get kind
|
# get kind
|
||||||
install_latest_kind
|
install_latest_kind
|
||||||
@@ -97,33 +77,8 @@ main() {
|
|||||||
# create a cluster
|
# create a cluster
|
||||||
cd $CURRENT_DIR
|
cd $CURRENT_DIR
|
||||||
|
|
||||||
# create registry container unless it already exists
|
|
||||||
reg_name='kind-registry'
|
|
||||||
reg_port='5000'
|
|
||||||
running="$(docker inspect -f '{{.State.Running}}' "${reg_name}" 2>/dev/null || true)"
|
|
||||||
if [ "${running}" != 'true' ]; then
|
|
||||||
# If the container is not running but has exited remove it before trying to start it
|
|
||||||
if [ "$(docker ps -aq -f status=exited -f name=${reg_name})" ]; then
|
|
||||||
# cleanup
|
|
||||||
docker rm "${reg_name}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
docker run \
|
|
||||||
-d --restart=always -p "${reg_port}:5000" --name "${reg_name}" \
|
|
||||||
registry:2
|
|
||||||
fi
|
|
||||||
|
|
||||||
#TODO what happens if cluster is already there????
|
#TODO what happens if cluster is already there????
|
||||||
"${KIND}" create cluster --config kind-config.yaml --loglevel=debug
|
"${KIND}" create cluster --config=kind-config.yaml --loglevel=debug
|
||||||
|
|
||||||
# connect the registry to the cluster network
|
|
||||||
docker network connect "kind" "${reg_name}"
|
|
||||||
|
|
||||||
# tell https://tilt.dev to use the registry
|
|
||||||
# https://docs.tilt.dev/choosing_clusters.html#discovering-the-registry
|
|
||||||
for node in $("${KIND}" get nodes); do
|
|
||||||
kubectl annotate node "${node}" "kind.x-k8s.io/registry=localhost:${reg_port}";
|
|
||||||
done
|
|
||||||
|
|
||||||
# set KUBECONFIG to point to the cluster
|
# set KUBECONFIG to point to the cluster
|
||||||
kubectl cluster-info --context kind-kind
|
kubectl cluster-info --context kind-kind
|
||||||
@@ -131,26 +86,36 @@ main() {
|
|||||||
#setup nginx ingress
|
#setup nginx ingress
|
||||||
# kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/kind/deploy.yaml
|
# kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/kind/deploy.yaml
|
||||||
kubectl apply -fhttps://raw.githubusercontent.com/kubernetes/ingress-nginx/12150e318b972a03fb49d827e6cabb8ef62247ef/deploy/static/provider/kind/deploy.yaml
|
kubectl apply -fhttps://raw.githubusercontent.com/kubernetes/ingress-nginx/12150e318b972a03fb49d827e6cabb8ef62247ef/deploy/static/provider/kind/deploy.yaml
|
||||||
|
sleep 5 # hold 5 sec so that the pods can be created
|
||||||
kubectl wait --namespace ingress-nginx --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=360s
|
kubectl wait --namespace ingress-nginx --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=360s
|
||||||
|
|
||||||
# This creates the service account, role, and role binding necessary for Spring Cloud k8s apps
|
# This creates the service account, role, and role binding necessary for Spring Cloud k8s apps
|
||||||
kubectl apply -f ./permissions.yaml
|
kubectl apply -f ./permissions.yaml
|
||||||
|
|
||||||
# cd ${BIN_DIR}
|
# cd ${BIN_DIR}
|
||||||
# curl -L https://istio.io/downloadIstio | sh -
|
# curl -L https://istio.io/downloadIstio | sh -
|
||||||
#"${ISTIOCTL}" install --set profile=demo
|
#"${ISTIOCTL}" install --set profile=demo
|
||||||
|
|
||||||
cd $CURRENT_DIR
|
cd $CURRENT_DIR
|
||||||
|
|
||||||
# TODO: invoke your tests here
|
# pulling necessary images for setting up the integration test environment
|
||||||
cd spring-cloud-kubernetes-core-k8s-client-it
|
for i in "${PULLING_IMAGES[@]}"; do
|
||||||
../../mvnw clean install -P it
|
echo "Pull images for prepping testing environment: $i"
|
||||||
cd ../
|
docker pull $i
|
||||||
cd spring-cloud-kubernetes-client-config-it
|
"${KIND}" load docker-image $i
|
||||||
../../mvnw clean install -P it
|
done
|
||||||
cd ../
|
|
||||||
cd spring-cloud-kubernetes-configuration-watcher-it
|
# running tests..
|
||||||
../../mvnw clean install -P it
|
for p in "${INTEGRATION_PROJECTS[@]}"; do
|
||||||
|
echo "Running test: $p"
|
||||||
|
cd $p
|
||||||
|
../../mvnw spring-boot:build-image \
|
||||||
|
-Dspring-boot.build-image.imageName=docker.io/springcloud/$p:${MVN_VERSION}
|
||||||
|
"${KIND}" load docker-image docker.io/springcloud/$p:${MVN_VERSION}
|
||||||
|
../../mvnw clean install -P it
|
||||||
|
cd ..
|
||||||
|
done
|
||||||
|
|
||||||
# teardown will happen automatically on exit
|
# teardown will happen automatically on exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -63,28 +63,4 @@
|
|||||||
</profile>
|
</profile>
|
||||||
</profiles>
|
</profiles>
|
||||||
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<image>
|
|
||||||
<name>${env.IMAGE}</name>
|
|
||||||
</image>
|
|
||||||
<goal>build-image</goal>
|
|
||||||
</configuration>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<phase>package</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>build-image</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
|
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -20,14 +20,7 @@ import java.io.IOException;
|
|||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.github.dockerjava.api.DockerClient;
|
|
||||||
import com.github.dockerjava.core.DefaultDockerClientConfig;
|
|
||||||
import com.github.dockerjava.core.DockerClientConfig;
|
|
||||||
import com.github.dockerjava.core.DockerClientImpl;
|
|
||||||
import com.github.dockerjava.httpclient5.ApacheDockerHttpClient;
|
|
||||||
import com.github.dockerjava.transport.DockerHttpClient;
|
|
||||||
import io.kubernetes.client.openapi.ApiClient;
|
import io.kubernetes.client.openapi.ApiClient;
|
||||||
import io.kubernetes.client.openapi.Configuration;
|
|
||||||
import io.kubernetes.client.openapi.apis.AppsV1Api;
|
import io.kubernetes.client.openapi.apis.AppsV1Api;
|
||||||
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
||||||
import io.kubernetes.client.openapi.apis.NetworkingV1beta1Api;
|
import io.kubernetes.client.openapi.apis.NetworkingV1beta1Api;
|
||||||
@@ -36,7 +29,6 @@ import io.kubernetes.client.openapi.models.V1ConfigMap;
|
|||||||
import io.kubernetes.client.openapi.models.V1Deployment;
|
import io.kubernetes.client.openapi.models.V1Deployment;
|
||||||
import io.kubernetes.client.openapi.models.V1Secret;
|
import io.kubernetes.client.openapi.models.V1Secret;
|
||||||
import io.kubernetes.client.openapi.models.V1Service;
|
import io.kubernetes.client.openapi.models.V1Service;
|
||||||
import io.kubernetes.client.util.Config;
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -51,6 +43,7 @@ import org.springframework.web.client.RestTemplate;
|
|||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.awaitility.Awaitility.await;
|
import static org.awaitility.Awaitility.await;
|
||||||
|
import static org.springframework.cloud.kubernetes.integration.tests.commons.K8SUtils.createApiClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Ryan Baxter
|
* @author Ryan Baxter
|
||||||
@@ -59,22 +52,6 @@ public class ConfigMapAndSecretIT {
|
|||||||
|
|
||||||
private static final Log LOG = LogFactory.getLog(ConfigMapAndSecretIT.class);
|
private static final Log LOG = LogFactory.getLog(ConfigMapAndSecretIT.class);
|
||||||
|
|
||||||
private static final String KIND_REPO_HOST_PORT = "localhost:5000";
|
|
||||||
|
|
||||||
private static final String KIND_REPO_URL = "http://" + KIND_REPO_HOST_PORT;
|
|
||||||
|
|
||||||
private static final String IMAGE = "spring-cloud-kubernetes-client-config-it";
|
|
||||||
|
|
||||||
private static final String IMAGE_TAG = "2.0.0-SNAPSHOT";
|
|
||||||
|
|
||||||
private static final String LOCAL_REPO = "docker.io/springcloud";
|
|
||||||
|
|
||||||
private static final String LOCAL_IMAGE = LOCAL_REPO + "/" + IMAGE + ":" + IMAGE_TAG;
|
|
||||||
|
|
||||||
private static final String KIND_IMAGE = KIND_REPO_HOST_PORT + "/" + IMAGE;
|
|
||||||
|
|
||||||
private static final String KIND_IMAGE_WITH_TAG = KIND_IMAGE + ":" + IMAGE_TAG;
|
|
||||||
|
|
||||||
private static final String SPRING_CLOUD_CLIENT_CONFIG_IT_DEPLOYMENT_NAME = "spring-cloud-kubernetes-client-config-it-deployment";
|
private static final String SPRING_CLOUD_CLIENT_CONFIG_IT_DEPLOYMENT_NAME = "spring-cloud-kubernetes-client-config-it-deployment";
|
||||||
|
|
||||||
private static final String K8S_CONFIG_CLIENT_IT_NAME = "spring-cloud-kubernetes-client-config-it-deployment";
|
private static final String K8S_CONFIG_CLIENT_IT_NAME = "spring-cloud-kubernetes-client-config-it-deployment";
|
||||||
@@ -101,22 +78,11 @@ public class ConfigMapAndSecretIT {
|
|||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void setup() throws Exception {
|
public static void setup() throws Exception {
|
||||||
client = Config.defaultClient();
|
client = createApiClient();
|
||||||
// client.setDebugging(true);
|
|
||||||
Configuration.setDefaultApiClient(client);
|
|
||||||
api = new CoreV1Api();
|
api = new CoreV1Api();
|
||||||
appsApi = new AppsV1Api();
|
appsApi = new AppsV1Api();
|
||||||
networkingApi = new NetworkingV1beta1Api();
|
networkingApi = new NetworkingV1beta1Api();
|
||||||
k8SUtils = new K8SUtils(api, appsApi);
|
k8SUtils = new K8SUtils(api, appsApi);
|
||||||
|
|
||||||
DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
|
|
||||||
.withRegistryUrl(KIND_REPO_URL).build();
|
|
||||||
DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder().dockerHost(config.getDockerHost())
|
|
||||||
.sslConfig(config.getSSLConfig()).build();
|
|
||||||
|
|
||||||
DockerClient dockerClient = DockerClientImpl.getInstance(config, httpClient);
|
|
||||||
dockerClient.tagImageCmd(LOCAL_IMAGE, KIND_IMAGE, IMAGE_TAG).exec();
|
|
||||||
dockerClient.pushImageCmd(KIND_IMAGE_WITH_TAG).start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ spec:
|
|||||||
serviceAccountName: spring-cloud-kubernetes-serviceaccount
|
serviceAccountName: spring-cloud-kubernetes-serviceaccount
|
||||||
containers:
|
containers:
|
||||||
- name: spring-cloud-kubernetes-client-config-it
|
- name: spring-cloud-kubernetes-client-config-it
|
||||||
image: localhost:5000/spring-cloud-kubernetes-client-config-it:2.0.0-SNAPSHOT
|
image: docker.io/springcloud/spring-cloud-kubernetes-client-config-it:2.0.0-SNAPSHOT
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ spec:
|
|||||||
serviceAccountName: spring-cloud-kubernetes-serviceaccount
|
serviceAccountName: spring-cloud-kubernetes-serviceaccount
|
||||||
containers:
|
containers:
|
||||||
- name: spring-cloud-kubernetes-client-config-it
|
- name: spring-cloud-kubernetes-client-config-it
|
||||||
image: localhost:5000/spring-cloud-kubernetes-client-config-it:2.0.0-SNAPSHOT
|
image: docker.io/springcloud/spring-cloud-kubernetes-client-config-it:2.0.0-SNAPSHOT
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
|
|||||||
@@ -76,27 +76,4 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<image>
|
|
||||||
<name>springcloud/${project.artifactId}:${project.version}</name>
|
|
||||||
</image>
|
|
||||||
<goal>build-image</goal>
|
|
||||||
</configuration>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<phase>package</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>build-image</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -18,15 +18,8 @@ package org.springframework.cloud.kubernetes.configuration.watcher;
|
|||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
|
||||||
import com.github.dockerjava.api.DockerClient;
|
|
||||||
import com.github.dockerjava.core.DefaultDockerClientConfig;
|
|
||||||
import com.github.dockerjava.core.DockerClientConfig;
|
|
||||||
import com.github.dockerjava.core.DockerClientImpl;
|
|
||||||
import com.github.dockerjava.httpclient5.ApacheDockerHttpClient;
|
|
||||||
import com.github.dockerjava.transport.DockerHttpClient;
|
|
||||||
import com.github.tomakehurst.wiremock.client.WireMock;
|
import com.github.tomakehurst.wiremock.client.WireMock;
|
||||||
import io.kubernetes.client.openapi.ApiClient;
|
import io.kubernetes.client.openapi.ApiClient;
|
||||||
import io.kubernetes.client.openapi.Configuration;
|
|
||||||
import io.kubernetes.client.openapi.apis.AppsV1Api;
|
import io.kubernetes.client.openapi.apis.AppsV1Api;
|
||||||
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
||||||
import io.kubernetes.client.openapi.apis.NetworkingV1beta1Api;
|
import io.kubernetes.client.openapi.apis.NetworkingV1beta1Api;
|
||||||
@@ -35,7 +28,6 @@ import io.kubernetes.client.openapi.models.V1ConfigMap;
|
|||||||
import io.kubernetes.client.openapi.models.V1ConfigMapBuilder;
|
import io.kubernetes.client.openapi.models.V1ConfigMapBuilder;
|
||||||
import io.kubernetes.client.openapi.models.V1Deployment;
|
import io.kubernetes.client.openapi.models.V1Deployment;
|
||||||
import io.kubernetes.client.openapi.models.V1Service;
|
import io.kubernetes.client.openapi.models.V1Service;
|
||||||
import io.kubernetes.client.util.Config;
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -52,6 +44,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
|
|||||||
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
|
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
|
||||||
import static com.github.tomakehurst.wiremock.client.WireMock.verify;
|
import static com.github.tomakehurst.wiremock.client.WireMock.verify;
|
||||||
import static org.awaitility.Awaitility.await;
|
import static org.awaitility.Awaitility.await;
|
||||||
|
import static org.springframework.cloud.kubernetes.integration.tests.commons.K8SUtils.createApiClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Ryan Baxter
|
* @author Ryan Baxter
|
||||||
@@ -103,23 +96,12 @@ public class ActuatorRefreshIT {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws Exception {
|
public void setup() throws Exception {
|
||||||
this.client = Config.defaultClient();
|
this.client = createApiClient();
|
||||||
// client.setDebugging(true);
|
|
||||||
Configuration.setDefaultApiClient(client);
|
|
||||||
this.api = new CoreV1Api();
|
this.api = new CoreV1Api();
|
||||||
this.appsApi = new AppsV1Api();
|
this.appsApi = new AppsV1Api();
|
||||||
this.networkingApi = new NetworkingV1beta1Api();
|
this.networkingApi = new NetworkingV1beta1Api();
|
||||||
this.k8SUtils = new K8SUtils(api, appsApi);
|
this.k8SUtils = new K8SUtils(api, appsApi);
|
||||||
|
|
||||||
DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
|
|
||||||
.withRegistryUrl(KIND_REPO_URL).build();
|
|
||||||
DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder().dockerHost(config.getDockerHost())
|
|
||||||
.sslConfig(config.getSSLConfig()).build();
|
|
||||||
|
|
||||||
DockerClient dockerClient = DockerClientImpl.getInstance(config, httpClient);
|
|
||||||
dockerClient.tagImageCmd(LOCAL_IMAGE, KIND_IMAGE, IMAGE_TAG).exec();
|
|
||||||
dockerClient.pushImageCmd(KIND_IMAGE_WITH_TAG).start();
|
|
||||||
|
|
||||||
deployWiremock();
|
deployWiremock();
|
||||||
|
|
||||||
// Check to make sure the wiremock deployment is ready
|
// Check to make sure the wiremock deployment is ready
|
||||||
|
|||||||
@@ -18,14 +18,7 @@ package org.springframework.cloud.kubernetes.configuration.watcher;
|
|||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
|
||||||
import com.github.dockerjava.api.DockerClient;
|
|
||||||
import com.github.dockerjava.core.DefaultDockerClientConfig;
|
|
||||||
import com.github.dockerjava.core.DockerClientConfig;
|
|
||||||
import com.github.dockerjava.core.DockerClientImpl;
|
|
||||||
import com.github.dockerjava.httpclient5.ApacheDockerHttpClient;
|
|
||||||
import com.github.dockerjava.transport.DockerHttpClient;
|
|
||||||
import io.kubernetes.client.openapi.ApiClient;
|
import io.kubernetes.client.openapi.ApiClient;
|
||||||
import io.kubernetes.client.openapi.Configuration;
|
|
||||||
import io.kubernetes.client.openapi.apis.AppsV1Api;
|
import io.kubernetes.client.openapi.apis.AppsV1Api;
|
||||||
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
||||||
import io.kubernetes.client.openapi.apis.NetworkingV1beta1Api;
|
import io.kubernetes.client.openapi.apis.NetworkingV1beta1Api;
|
||||||
@@ -34,7 +27,6 @@ import io.kubernetes.client.openapi.models.V1ConfigMap;
|
|||||||
import io.kubernetes.client.openapi.models.V1ConfigMapBuilder;
|
import io.kubernetes.client.openapi.models.V1ConfigMapBuilder;
|
||||||
import io.kubernetes.client.openapi.models.V1Deployment;
|
import io.kubernetes.client.openapi.models.V1Deployment;
|
||||||
import io.kubernetes.client.openapi.models.V1Service;
|
import io.kubernetes.client.openapi.models.V1Service;
|
||||||
import io.kubernetes.client.util.Config;
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -49,6 +41,7 @@ import org.springframework.web.client.RestTemplate;
|
|||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.awaitility.Awaitility.await;
|
import static org.awaitility.Awaitility.await;
|
||||||
|
import static org.springframework.cloud.kubernetes.integration.tests.commons.K8SUtils.createApiClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Kris Iyer
|
* @author Kris Iyer
|
||||||
@@ -111,26 +104,12 @@ public class ActuatorRefreshKafkaIT {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws Exception {
|
public void setup() throws Exception {
|
||||||
this.client = Config.defaultClient();
|
this.client = createApiClient();
|
||||||
client.setDebugging(true);
|
|
||||||
Configuration.setDefaultApiClient(client);
|
|
||||||
this.api = new CoreV1Api();
|
this.api = new CoreV1Api();
|
||||||
this.appsApi = new AppsV1Api();
|
this.appsApi = new AppsV1Api();
|
||||||
this.networkingApi = new NetworkingV1beta1Api();
|
this.networkingApi = new NetworkingV1beta1Api();
|
||||||
this.k8SUtils = new K8SUtils(api, appsApi);
|
this.k8SUtils = new K8SUtils(api, appsApi);
|
||||||
|
|
||||||
DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
|
|
||||||
.withRegistryUrl(KIND_REPO_URL).build();
|
|
||||||
DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder().dockerHost(config.getDockerHost())
|
|
||||||
.sslConfig(config.getSSLConfig()).build();
|
|
||||||
|
|
||||||
DockerClient dockerClient = DockerClientImpl.getInstance(config, httpClient);
|
|
||||||
dockerClient.tagImageCmd(CONFIG_WATCHER_LOCAL_IMAGE, CONFIG_WATCHER_KIND_IMAGE, IMAGE_TAG).exec();
|
|
||||||
dockerClient.pushImageCmd(CONFIG_WATCHER_KIND_IMAGE_WITH_TAG).start();
|
|
||||||
|
|
||||||
dockerClient.tagImageCmd(CONFIG_WATCHER_IT_LOCAL_IMAGE, CONFIG_WATCHER_IT_KIND_IMAGE, IMAGE_TAG).exec();
|
|
||||||
dockerClient.pushImageCmd(CONFIG_WATCHER_IT_KIND_IMAGE_WITH_TAG).start();
|
|
||||||
|
|
||||||
deployZookeeper();
|
deployZookeeper();
|
||||||
|
|
||||||
k8SUtils.waitForDeployment(ZOOKEEPER_DEPLOYMENT, NAMESPACE);
|
k8SUtils.waitForDeployment(ZOOKEEPER_DEPLOYMENT, NAMESPACE);
|
||||||
|
|||||||
@@ -18,14 +18,7 @@ package org.springframework.cloud.kubernetes.configuration.watcher;
|
|||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
|
||||||
import com.github.dockerjava.api.DockerClient;
|
|
||||||
import com.github.dockerjava.core.DefaultDockerClientConfig;
|
|
||||||
import com.github.dockerjava.core.DockerClientConfig;
|
|
||||||
import com.github.dockerjava.core.DockerClientImpl;
|
|
||||||
import com.github.dockerjava.httpclient5.ApacheDockerHttpClient;
|
|
||||||
import com.github.dockerjava.transport.DockerHttpClient;
|
|
||||||
import io.kubernetes.client.openapi.ApiClient;
|
import io.kubernetes.client.openapi.ApiClient;
|
||||||
import io.kubernetes.client.openapi.Configuration;
|
|
||||||
import io.kubernetes.client.openapi.apis.AppsV1Api;
|
import io.kubernetes.client.openapi.apis.AppsV1Api;
|
||||||
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
||||||
import io.kubernetes.client.openapi.apis.NetworkingV1beta1Api;
|
import io.kubernetes.client.openapi.apis.NetworkingV1beta1Api;
|
||||||
@@ -35,7 +28,6 @@ import io.kubernetes.client.openapi.models.V1ConfigMapBuilder;
|
|||||||
import io.kubernetes.client.openapi.models.V1Deployment;
|
import io.kubernetes.client.openapi.models.V1Deployment;
|
||||||
import io.kubernetes.client.openapi.models.V1ReplicationController;
|
import io.kubernetes.client.openapi.models.V1ReplicationController;
|
||||||
import io.kubernetes.client.openapi.models.V1Service;
|
import io.kubernetes.client.openapi.models.V1Service;
|
||||||
import io.kubernetes.client.util.Config;
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
@@ -50,6 +42,7 @@ import org.springframework.web.client.RestTemplate;
|
|||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.awaitility.Awaitility.await;
|
import static org.awaitility.Awaitility.await;
|
||||||
|
import static org.springframework.cloud.kubernetes.integration.tests.commons.K8SUtils.createApiClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Ryan Baxter
|
* @author Ryan Baxter
|
||||||
@@ -59,31 +52,8 @@ public class ActuatorRefreshRabbitMQIT {
|
|||||||
|
|
||||||
private Log log = LogFactory.getLog(getClass());
|
private Log log = LogFactory.getLog(getClass());
|
||||||
|
|
||||||
private static final String KIND_REPO_HOST_PORT = "localhost:5000";
|
|
||||||
|
|
||||||
private static final String KIND_REPO_URL = "http://" + KIND_REPO_HOST_PORT;
|
|
||||||
|
|
||||||
private static final String CONFIG_WATCHER_IMAGE = "spring-cloud-kubernetes-configuration-watcher";
|
|
||||||
|
|
||||||
private static final String CONFIG_WATCHER_IT_IMAGE = "spring-cloud-kubernetes-configuration-watcher-it";
|
private static final String CONFIG_WATCHER_IT_IMAGE = "spring-cloud-kubernetes-configuration-watcher-it";
|
||||||
|
|
||||||
private static final String IMAGE_TAG = "2.0.0-SNAPSHOT";
|
|
||||||
|
|
||||||
private static final String LOCAL_REPO = "docker.io/springcloud";
|
|
||||||
|
|
||||||
private static final String CONFIG_WATCHER_LOCAL_IMAGE = LOCAL_REPO + "/" + CONFIG_WATCHER_IMAGE + ":" + IMAGE_TAG;
|
|
||||||
|
|
||||||
private static final String CONFIG_WATCHER_IT_LOCAL_IMAGE = LOCAL_REPO + "/" + CONFIG_WATCHER_IT_IMAGE + ":"
|
|
||||||
+ IMAGE_TAG;
|
|
||||||
|
|
||||||
private static final String CONFIG_WATCHER_KIND_IMAGE = KIND_REPO_HOST_PORT + "/" + CONFIG_WATCHER_IMAGE;
|
|
||||||
|
|
||||||
private static final String CONFIG_WATCHER_IT_KIND_IMAGE = KIND_REPO_HOST_PORT + "/" + CONFIG_WATCHER_IT_IMAGE;
|
|
||||||
|
|
||||||
private static final String CONFIG_WATCHER_KIND_IMAGE_WITH_TAG = CONFIG_WATCHER_KIND_IMAGE + ":" + IMAGE_TAG;
|
|
||||||
|
|
||||||
private static final String CONFIG_WATCHER_IT_KIND_IMAGE_WITH_TAG = CONFIG_WATCHER_IT_KIND_IMAGE + ":" + IMAGE_TAG;
|
|
||||||
|
|
||||||
private static final String SPRING_CLOUD_K8S_CONFIG_WATCHER_DEPLOYMENT_NAME = "spring-cloud-kubernetes-configuration-watcher-deployment";
|
private static final String SPRING_CLOUD_K8S_CONFIG_WATCHER_DEPLOYMENT_NAME = "spring-cloud-kubernetes-configuration-watcher-deployment";
|
||||||
|
|
||||||
private static final String SPRING_CLOUD_K8S_CONFIG_WATCHER_IT_DEPLOYMENT_NAME = "spring-cloud-kubernetes-configuration-watcher-it-deployment";
|
private static final String SPRING_CLOUD_K8S_CONFIG_WATCHER_IT_DEPLOYMENT_NAME = "spring-cloud-kubernetes-configuration-watcher-it-deployment";
|
||||||
@@ -106,26 +76,12 @@ public class ActuatorRefreshRabbitMQIT {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws Exception {
|
public void setup() throws Exception {
|
||||||
this.client = Config.defaultClient();
|
this.client = createApiClient();
|
||||||
// client.setDebugging(true);
|
|
||||||
Configuration.setDefaultApiClient(client);
|
|
||||||
this.api = new CoreV1Api();
|
this.api = new CoreV1Api();
|
||||||
this.appsApi = new AppsV1Api();
|
this.appsApi = new AppsV1Api();
|
||||||
this.networkingApi = new NetworkingV1beta1Api();
|
this.networkingApi = new NetworkingV1beta1Api();
|
||||||
this.k8SUtils = new K8SUtils(api, appsApi);
|
this.k8SUtils = new K8SUtils(api, appsApi);
|
||||||
|
|
||||||
DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
|
|
||||||
.withRegistryUrl(KIND_REPO_URL).build();
|
|
||||||
DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder().dockerHost(config.getDockerHost())
|
|
||||||
.sslConfig(config.getSSLConfig()).build();
|
|
||||||
|
|
||||||
DockerClient dockerClient = DockerClientImpl.getInstance(config, httpClient);
|
|
||||||
dockerClient.tagImageCmd(CONFIG_WATCHER_LOCAL_IMAGE, CONFIG_WATCHER_KIND_IMAGE, IMAGE_TAG).exec();
|
|
||||||
dockerClient.pushImageCmd(CONFIG_WATCHER_KIND_IMAGE_WITH_TAG).start();
|
|
||||||
|
|
||||||
dockerClient.tagImageCmd(CONFIG_WATCHER_IT_LOCAL_IMAGE, CONFIG_WATCHER_IT_KIND_IMAGE, IMAGE_TAG).exec();
|
|
||||||
dockerClient.pushImageCmd(CONFIG_WATCHER_IT_KIND_IMAGE_WITH_TAG).start();
|
|
||||||
|
|
||||||
deployRabbitMQ();
|
deployRabbitMQ();
|
||||||
|
|
||||||
k8SUtils.waitForReplicationController(RABBIT_MQ_CONTROLLER_NAME, NAMESPACE);
|
k8SUtils.waitForReplicationController(RABBIT_MQ_CONTROLLER_NAME, NAMESPACE);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ spec:
|
|||||||
serviceAccountName: spring-cloud-kubernetes-serviceaccount
|
serviceAccountName: spring-cloud-kubernetes-serviceaccount
|
||||||
containers:
|
containers:
|
||||||
- name: spring-cloud-kubernetes-configuration-watcher
|
- name: spring-cloud-kubernetes-configuration-watcher
|
||||||
image: localhost:5000/spring-cloud-kubernetes-configuration-watcher:2.0.0-SNAPSHOT
|
image: docker.io/springcloud/spring-cloud-kubernetes-configuration-watcher:2.0.0-SNAPSHOT
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
env:
|
env:
|
||||||
- name: SPRING_PROFILES_ACTIVE
|
- name: SPRING_PROFILES_ACTIVE
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ spec:
|
|||||||
serviceAccountName: spring-cloud-kubernetes-serviceaccount
|
serviceAccountName: spring-cloud-kubernetes-serviceaccount
|
||||||
containers:
|
containers:
|
||||||
- name: spring-cloud-kubernetes-configuration-watcher
|
- name: spring-cloud-kubernetes-configuration-watcher
|
||||||
image: localhost:5000/spring-cloud-kubernetes-configuration-watcher:2.0.0-SNAPSHOT
|
image: docker.io/springcloud/spring-cloud-kubernetes-configuration-watcher:2.0.0-SNAPSHOT
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
env:
|
env:
|
||||||
- name: SPRING_PROFILES_ACTIVE
|
- name: SPRING_PROFILES_ACTIVE
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ spec:
|
|||||||
serviceAccountName: spring-cloud-kubernetes-serviceaccount
|
serviceAccountName: spring-cloud-kubernetes-serviceaccount
|
||||||
containers:
|
containers:
|
||||||
- name: spring-cloud-kubernetes-configuration-watcher
|
- name: spring-cloud-kubernetes-configuration-watcher
|
||||||
image: localhost:5000/spring-cloud-kubernetes-configuration-watcher:2.0.0-SNAPSHOT
|
image: docker.io/springcloud/spring-cloud-kubernetes-configuration-watcher:2.0.0-SNAPSHOT
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: spring-cloud-kubernetes-configuration-watcher-it
|
- name: spring-cloud-kubernetes-configuration-watcher-it
|
||||||
image: localhost:5000/spring-cloud-kubernetes-configuration-watcher-it:2.0.0-SNAPSHOT
|
image: docker.io/springcloud/spring-cloud-kubernetes-configuration-watcher-it:2.0.0-SNAPSHOT
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
env:
|
env:
|
||||||
- name: SPRING_PROFILES_ACTIVE
|
- name: SPRING_PROFILES_ACTIVE
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: spring-cloud-kubernetes-configuration-watcher-it
|
- name: spring-cloud-kubernetes-configuration-watcher-it
|
||||||
image: localhost:5000/spring-cloud-kubernetes-configuration-watcher-it:2.0.0-SNAPSHOT
|
image: docker.io/springcloud/spring-cloud-kubernetes-configuration-watcher-it:2.0.0-SNAPSHOT
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
env:
|
env:
|
||||||
- name: SPRING_PROFILES_ACTIVE
|
- name: SPRING_PROFILES_ACTIVE
|
||||||
|
|||||||
@@ -63,27 +63,4 @@
|
|||||||
</profile>
|
</profile>
|
||||||
</profiles>
|
</profiles>
|
||||||
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<image>
|
|
||||||
<name>${env.IMAGE}</name>
|
|
||||||
</image>
|
|
||||||
<goal>build-image</goal>
|
|
||||||
</configuration>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<phase>package</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>build-image</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -20,21 +20,13 @@ import java.io.IOException;
|
|||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.github.dockerjava.api.DockerClient;
|
|
||||||
import com.github.dockerjava.core.DefaultDockerClientConfig;
|
|
||||||
import com.github.dockerjava.core.DockerClientConfig;
|
|
||||||
import com.github.dockerjava.core.DockerClientImpl;
|
|
||||||
import com.github.dockerjava.httpclient5.ApacheDockerHttpClient;
|
|
||||||
import com.github.dockerjava.transport.DockerHttpClient;
|
|
||||||
import io.kubernetes.client.openapi.ApiClient;
|
import io.kubernetes.client.openapi.ApiClient;
|
||||||
import io.kubernetes.client.openapi.Configuration;
|
|
||||||
import io.kubernetes.client.openapi.apis.AppsV1Api;
|
import io.kubernetes.client.openapi.apis.AppsV1Api;
|
||||||
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
||||||
import io.kubernetes.client.openapi.apis.NetworkingV1beta1Api;
|
import io.kubernetes.client.openapi.apis.NetworkingV1beta1Api;
|
||||||
import io.kubernetes.client.openapi.models.NetworkingV1beta1Ingress;
|
import io.kubernetes.client.openapi.models.NetworkingV1beta1Ingress;
|
||||||
import io.kubernetes.client.openapi.models.V1Deployment;
|
import io.kubernetes.client.openapi.models.V1Deployment;
|
||||||
import io.kubernetes.client.openapi.models.V1Service;
|
import io.kubernetes.client.openapi.models.V1Service;
|
||||||
import io.kubernetes.client.util.Config;
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.junit.AfterClass;
|
import org.junit.AfterClass;
|
||||||
@@ -51,6 +43,7 @@ import org.springframework.web.client.RestTemplate;
|
|||||||
|
|
||||||
import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
|
import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
|
||||||
import static org.awaitility.Awaitility.await;
|
import static org.awaitility.Awaitility.await;
|
||||||
|
import static org.springframework.cloud.kubernetes.integration.tests.commons.K8SUtils.createApiClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Ryan Baxter
|
* @author Ryan Baxter
|
||||||
@@ -60,22 +53,6 @@ public class ActuatorEndpointIT {
|
|||||||
|
|
||||||
private static final Log LOG = LogFactory.getLog(ActuatorEndpointIT.class);
|
private static final Log LOG = LogFactory.getLog(ActuatorEndpointIT.class);
|
||||||
|
|
||||||
private static final String KIND_REPO_HOST_PORT = "localhost:5000";
|
|
||||||
|
|
||||||
private static final String KIND_REPO_URL = "http://" + KIND_REPO_HOST_PORT;
|
|
||||||
|
|
||||||
private static final String IMAGE = "spring-cloud-kubernetes-core-k8s-client-it";
|
|
||||||
|
|
||||||
private static final String IMAGE_TAG = "2.0.0-SNAPSHOT";
|
|
||||||
|
|
||||||
private static final String LOCAL_REPO = "docker.io/springcloud";
|
|
||||||
|
|
||||||
private static final String LOCAL_IMAGE = LOCAL_REPO + "/" + IMAGE + ":" + IMAGE_TAG;
|
|
||||||
|
|
||||||
private static final String KIND_IMAGE = KIND_REPO_HOST_PORT + "/" + IMAGE;
|
|
||||||
|
|
||||||
private static final String KIND_IMAGE_WITH_TAG = KIND_IMAGE + ":" + IMAGE_TAG;
|
|
||||||
|
|
||||||
private static final String SPRING_CLOUD_K8S_CLIENT_IT_DEPLOYMENT_NAME = "spring-cloud-kubernetes-core-k8s-client-it-deployment";
|
private static final String SPRING_CLOUD_K8S_CLIENT_IT_DEPLOYMENT_NAME = "spring-cloud-kubernetes-core-k8s-client-it-deployment";
|
||||||
|
|
||||||
private static final String K8S_CONFIG_CLIENT_IT_NAME = "spring-cloud-kubernetes-core-k8s-client-it-deployment";
|
private static final String K8S_CONFIG_CLIENT_IT_NAME = "spring-cloud-kubernetes-core-k8s-client-it-deployment";
|
||||||
@@ -96,23 +73,12 @@ public class ActuatorEndpointIT {
|
|||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void setup() throws Exception {
|
public static void setup() throws Exception {
|
||||||
client = Config.defaultClient();
|
client = createApiClient();
|
||||||
// client.setDebugging(true);
|
|
||||||
Configuration.setDefaultApiClient(client);
|
|
||||||
api = new CoreV1Api();
|
api = new CoreV1Api();
|
||||||
appsApi = new AppsV1Api();
|
appsApi = new AppsV1Api();
|
||||||
networkingApi = new NetworkingV1beta1Api();
|
networkingApi = new NetworkingV1beta1Api();
|
||||||
k8SUtils = new K8SUtils(api, appsApi);
|
k8SUtils = new K8SUtils(api, appsApi);
|
||||||
|
|
||||||
DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
|
|
||||||
.withRegistryUrl(KIND_REPO_URL).build();
|
|
||||||
DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder().dockerHost(config.getDockerHost())
|
|
||||||
.sslConfig(config.getSSLConfig()).build();
|
|
||||||
|
|
||||||
DockerClient dockerClient = DockerClientImpl.getInstance(config, httpClient);
|
|
||||||
dockerClient.tagImageCmd(LOCAL_IMAGE, KIND_IMAGE, IMAGE_TAG).exec();
|
|
||||||
dockerClient.pushImageCmd(KIND_IMAGE_WITH_TAG).start();
|
|
||||||
|
|
||||||
deployCoreK8sClientIt();
|
deployCoreK8sClientIt();
|
||||||
|
|
||||||
// Check to make sure the controller deployment is ready
|
// Check to make sure the controller deployment is ready
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ spec:
|
|||||||
serviceAccountName: spring-cloud-kubernetes-serviceaccount
|
serviceAccountName: spring-cloud-kubernetes-serviceaccount
|
||||||
containers:
|
containers:
|
||||||
- name: spring-cloud-kubernetes-core-k8s-client-it
|
- name: spring-cloud-kubernetes-core-k8s-client-it
|
||||||
image: localhost:5000/spring-cloud-kubernetes-core-k8s-client-it:2.0.0-SNAPSHOT
|
image: docker.io/springcloud/spring-cloud-kubernetes-core-k8s-client-it:2.0.0-SNAPSHOT
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ package org.springframework.cloud.kubernetes.integration.tests.commons;
|
|||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
@@ -25,7 +26,9 @@ import java.util.Collection;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import io.kubernetes.client.openapi.ApiClient;
|
||||||
import io.kubernetes.client.openapi.ApiException;
|
import io.kubernetes.client.openapi.ApiException;
|
||||||
|
import io.kubernetes.client.openapi.Configuration;
|
||||||
import io.kubernetes.client.openapi.apis.AppsV1Api;
|
import io.kubernetes.client.openapi.apis.AppsV1Api;
|
||||||
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
import io.kubernetes.client.openapi.apis.CoreV1Api;
|
||||||
import io.kubernetes.client.openapi.models.V1Deployment;
|
import io.kubernetes.client.openapi.models.V1Deployment;
|
||||||
@@ -38,6 +41,7 @@ import io.kubernetes.client.openapi.models.V1ReplicationController;
|
|||||||
import io.kubernetes.client.openapi.models.V1ReplicationControllerList;
|
import io.kubernetes.client.openapi.models.V1ReplicationControllerList;
|
||||||
import io.kubernetes.client.openapi.models.V1Service;
|
import io.kubernetes.client.openapi.models.V1Service;
|
||||||
import io.kubernetes.client.openapi.models.V1ServiceBuilder;
|
import io.kubernetes.client.openapi.models.V1ServiceBuilder;
|
||||||
|
import io.kubernetes.client.util.Config;
|
||||||
import io.kubernetes.client.util.Yaml;
|
import io.kubernetes.client.util.Yaml;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
@@ -56,6 +60,18 @@ public class K8SUtils {
|
|||||||
|
|
||||||
private AppsV1Api appsApi;
|
private AppsV1Api appsApi;
|
||||||
|
|
||||||
|
public static ApiClient createApiClient() throws IOException {
|
||||||
|
return createApiClient(false, Duration.ofSeconds(15));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ApiClient createApiClient(boolean debug, Duration readTimeout) throws IOException {
|
||||||
|
ApiClient client = Config.defaultClient();
|
||||||
|
client.setHttpClient(client.getHttpClient().newBuilder().readTimeout(readTimeout).build());
|
||||||
|
client.setDebugging(debug);
|
||||||
|
Configuration.setDefaultApiClient(client);
|
||||||
|
return client;
|
||||||
|
}
|
||||||
|
|
||||||
public K8SUtils(CoreV1Api api, AppsV1Api appsApi) {
|
public K8SUtils(CoreV1Api api, AppsV1Api appsApi) {
|
||||||
this.api = api;
|
this.api = api;
|
||||||
this.appsApi = appsApi;
|
this.appsApi = appsApi;
|
||||||
|
|||||||
Reference in New Issue
Block a user