为了从0到1搭建一个能够部署Spring Boot项目到Kubernetes (k8s) 的环境,你需要完成以下步骤:
安装和配置Docker。 安装和配置kubectl。 安装Minikube或其他k8s集群。 创建Spring Boot项目并打包为Docker镜像。 编写k8s部署配置文件。 部署到k8s集群。
以下是具体的操作步骤和示例代码:
安装Docker: bash
在Ubuntu上
sudo apt-get update sudo apt-get install docker-ce
安装kubectl: bash
在Ubuntu上
curl -LO https://storage.googleapis.com/kubernetes/release/$(curl -s https://storage.googleapis.com/kubernetes/release/stable.txt)/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl
安装Minikube:
bash
在Ubuntu上
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 chmod +x minikube sudo mv minikube /usr/local/bin/
启动Minikube:
bash
minikube start
创建Spring Boot项目并编写一个简单的Controller:
java
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello from Spring Boot on Kubernetes!";
}
}
在项目的pom.xml中添加Docker插件配置: xml
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>your-docker-id/springboot-k8s</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
在src/main/docker目录下创建一个名为Dockerfile的文件:
dockerfile
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD springboot-k8s.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
创建k8s部署配置文件deployment.yaml: yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: springboot-k8s-deployment
spec:
replicas: 2
selector:
matchLabels:
app: springboot-k8s
template:
metadata:
labels:
app: springboot-k8s
spec:
containers:
- name: springboot-k8s
image: your-docker-id/springboot-k8s
ports:
- containerPort: 8080
创建服务配置文件service.yaml: yaml
apiVersion: v1
kind: Service
metadata:
name: springboot-k8s-service
spec:
selector:
app: springboot-k8s
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer
使用以下命令部署到k8s: bash 构