业务场景
阿里云没有提供部署应用api,继承原生框架部署引用
maven 配置
<dependency>
<groupId>io.fabric8</groupId>
<artifactId>kubernetes-client</artifactId>
<version>5.4.0</version>
</dependency>
<dependency>
<groupId>io.fabric8</groupId>
<artifactId>openshift-client</artifactId>
<version>5.4.0</version>
</dependency>
java 代码
默认加载的配置文件路径:C:\Users\wb-hp633743\.kube\conf
容器文件存储到宿主机上面,我使用的docker cp 命令,简单方式是通过数据卷pv和pvc实现 (https://www.jianshu.com/p/b3665b72126e)
package scop.common;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.taobao.diamond.client.Diamond;
import io.fabric8.kubernetes.api.model.ObjectMeta;
import io.fabric8.kubernetes.api.model.Pod;
import io.fabric8.kubernetes.api.model.Service;
import io.fabric8.kubernetes.api.model.apps.Deployment;
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.dsl.ExecListener;
import io.fabric8.kubernetes.client.dsl.ExecWatch;
import lombok.extern.slf4j.Slf4j;
import okhttp3.Response;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.io.*;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Stream;
@Component
@Slf4j
public class KubernetesUtil {
private static final String projectAddr="user.dir";
private static final String docker_name="&dockerName";
private static KubernetesClient k8s;
private static final String namespace = "default";
@PostConstruct
public void init(){
k8s = new DefaultKubernetesClient();
}
/**
* 部署应用
* @param dockerName