# 教程：将应用程序部署到 minikube 集群

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com/zh-cn/help/idea/llms.txt).

在本教程中，将了解如何直接从 IntelliJ IDEA 使用 [minikube](https://minikube.sigs.k8s.io/docs/) 启动本地 Kubernetes 集群，并将示例应用程序部署到该集群。 在此过程中，将构建应用程序、创建 Docker 镜像，并将其部署到 minikube。

在本地运行 Kubernetes 对于原型设计、测试部署以及学习 Kubernetes 工作流尤其有用。 借助 IntelliJ IDEA 中提供的 Docker 和 Kubernetes 支持，可以在不离开 IDE 的情况下启动集群、部署资源并检查应用程序。

## 开始之前

开始之前，请确保已安装并配置以下项：

* [Java JDK 17](sdk.html#jdk)

* [Docker Desktop](https://docs.docker.com/get-started/introduction/get-docker-desktop/) 正在运行

* [minikube](https://minikube.sigs.k8s.io/docs/start/?arch=%2Fmacos%2Farm64%2Fstable%2Fbinary+download)

### 启用必需插件

本教程中使用的功能性依赖于以下插件：

* [Kubernetes](https://plugins.jetbrains.com/plugin/10485-kubernetes)

* [Gradle](https://plugins.jetbrains.com/plugin/13112-gradle)

* [适用于 Java 的 Gradle](https://plugins.jetbrains.com/plugin/27367-gradle-for-java)

* [Spring](https://plugins.jetbrains.com/plugin/20221-spring)

这些插件默认在 IntelliJ IDEA 中捆绑并启用。 如果相关功能不可用，请确保未禁用任何插件。

Procedure:

1. 按 `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS)) 打开设置，然后选择  `插件` 。

2. 找到所需插件并将其开启。

## 克隆示例项目

要开始，请从 GitHub 克隆  `Spring PetClinic`  应用程序，或者如果本机上已有该项目，则在 IntelliJ IDEA 中打开它。

Procedure:

该应用程序的源代码托管在 GitHub 上，地址为 [https://github.com/spring-projects/spring-petclinic](https://github.com/spring-projects/spring-petclinic)。

1. 在主菜单中，前往  `文件 | 新建 | 从版本控制创建项目…` 。

2. 指定仓库的 URL，然后点击   克隆  。

3. 在   打开或导入项目​   对话框中，选择   Gradle 项目   以使用 Gradle 作为项目的主要构建系统。

4. 如有必要，请同意在新窗口中打开克隆的项目。

## 构建应用程序

在将应用程序部署到 Kubernetes 之前，需要构建它并将其打包到容器镜像中。 在本教程中，将使用 Gradle 任务编译应用程序源代码、运行测试，并生成一个 JAR 可执行文件。 此 JAR 文件稍后将在创建 Docker 镜像时使用。

Procedure:

1. 打开   Gradle   工具窗口。

2. 展开项目节点 (  `spring-petclinic` )，然后展开   任务   节点，并点击   构建   任务两次以运行它。

![Gradle 工具窗口](https://resources.jetbrains.com/help/img/idea/2026.3/ij-petclinic-gradle-build.png)

等待 IntelliJ IDEA 完成任务。 因此，IDE 会在项目根目录中创建包含工件的  `构建`  目录。

![Gradle 已成功完成构建任务](https://resources.jetbrains.com/help/img/idea/2026.3/ij-petclinic-build-successful.png)

## 将应用程序容器化

在此步骤中，将把构建的应用程序打包到 Docker 镜像中。 Kubernetes 稍后会将此镜像作为 Pod 中的容器运行。

Procedure: 创建 Dockerfile

1. 在   项目   工具窗口 `Alt+1` (Windows), `⌘ 1` (macOS), `⌘ 1` (IntelliJ IDEA Classic (macOS)), `⌘ 1` (macOS System Shortcuts), `Alt+1` (XWin), `Alt+1` (GNOME), `Alt+1` (KDE), `Alt+1` (Emacs), `Alt+1` (Sublime Text), `⌘ 1` (Sublime Text (macOS)), `Ctrl+Alt+L` (Visual Studio), `⌘ ⌥ L` (Visual Studio (macOS)), `Ctrl+1` (NetBeans), `Alt+1` (Eclipse), `Alt+1` (Eclipse (macOS)) 中，右键点击项目根目录，指向   新建  ，然后点击   文件  。

2. 在   新建文件…  对话框中，输入  `Dockerfile` 并按 `Enter` (Windows), `⏎` (macOS), `⏎` (IntelliJ IDEA Classic (macOS)), `⏎` (macOS System Shortcuts), `Enter` (XWin), `Enter` (GNOME), `Enter` (KDE), `Enter` (Emacs), `Enter` (Sublime Text), `⏎` (Sublime Text (macOS)), `Enter` (Visual Studio), `⏎` (Visual Studio (macOS)), `Enter` (NetBeans), `Enter` (Eclipse), `⏎` (Eclipse (macOS))。

如出现提示，请同意将该文件添加到 Git。

3. 请将以下代码粘贴到新的 Dockerfile 中：

```DOCKERFILE
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY build/libs/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
                
```

创建的 Dockerfile 包含用于构建 Docker 镜像的指令，该镜像基于  `eclipse-temurin:17-jre`  镜像，后者提供轻量级 Java 17 运行时环境。

构建镜像时，Docker 会将 Gradle 构建生成的 JAR 可执行文件从项目的  `build/libs`  目录复制到容器内的  `/app`  目录。

从镜像启动容器时，Docker 会运行  `java -jar app.jar`  命令，该命令会启动 Spring Petclinic 应用程序。

Procedure: 构建 Docker 镜像

> **Note:**
> 在继续操作前，请确保 [Docker Desktop](https://docs.docker.com/get-started/introduction/get-docker-desktop/)正在你的计算机上运行。

1. 在 Dockerfile 内侧边栏中，点击 ![在 Docker 上运行图标](https://resources.jetbrains.com/help/img/idea/2026.3/app.actions.runAll.svg)并选择   新建运行配置  。

![从编辑器创建新的 Dockerfile 运行/调试配置](https://resources.jetbrains.com/help/img/idea/2026.3/ij-new-dockerfile-configuration.png)

2. 在   编辑运行配置   对话框中，在   镜像标记   字段中指定  `petclinic-app` ，并在   容器名称   字段中指定  `petclinic` 。 然后，点击   运行  。

IntelliJ IDEA 创建一个 [Dockerfile 运行配置](dockerfile-run-configuration.html)，该配置从 Dockerfile 构建一个镜像，然后基于该镜像运行一个容器。 要跟踪整个过程，请打开   服务   工具窗口中的   日志   选项卡。

![Services 工具窗口中的 Push 日志选项卡](https://resources.jetbrains.com/help/img/idea/2026.3/ij-petclinic-docker-log.png)

## 连接到 minikube

现在已有包含应用程序的 Docker 镜像，需要启动本地 Kubernetes 集群以将其部署到该集群。 将使用 minikube 直接从 IntelliJ IDEA 运行本地单节点 Kubernetes 集群。

Procedure: 使用 Docker 驱动程序启动 minikube

1. 打开   终端   工具窗口：转到  `视图｜工具窗口｜终端`  或按 `Alt+F12` (Windows), `⌥ F12` (macOS), `⌥ F12` (IntelliJ IDEA Classic (macOS)), `⌘ ⌃ T` (macOS System Shortcuts), `Alt+F12` (XWin), `Alt+F12` (GNOME), `Alt+F12` (KDE), `Alt+F12` (Emacs), `Alt+F12` (Sublime Text), `⌥ F12` (Sublime Text (macOS)), `Ctrl+Alt+1` (Visual Studio), `⌘ ⌃ 1` (Visual Studio (macOS)), `Alt+F12` (NetBeans), `Alt+F12` (Eclipse), `⌥ F12` (Eclipse (macOS))。

2. 运行以下命令以启动本地 Kubernetes 集群，并指示 minikube 使用 Docker 作为虚拟化驱动程序：

```BASH
minikube start --driver=docker
```

3. 使用以下命令验证集群是否已启动并正在运行：

```BASH
minikube status
```

使用 Docker 驱动程序会在 Docker 容器内运行 minikube 集群，提供非常适合本地开发的轻量级环境。

Procedure: 将 minikube 集群添加到 IntelliJ IDEA

1. 打开 [服务](services-tool-window.html) 工具窗口：转到  `查看 | 工具窗口 | 服务`  或按 `Alt+8` (Windows), `⌘ 8` (macOS), `⌘ 8` (IntelliJ IDEA Classic (macOS)), `⌘ 8` (macOS System Shortcuts), `Alt+8` (XWin), `Alt+8` (GNOME), `Alt+8` (KDE), `Alt+8` (Emacs), `Alt+8` (Sublime Text), `⌘ 8` (Sublime Text (macOS)), `Alt+8` (Visual Studio), `Alt+8` (Visual Studio (macOS)), `Alt+8` (NetBeans), `Alt+8` (Eclipse), `⌘ 8` (Eclipse (macOS))。

2. 选择   Kubernetes   节点，点击   添加集群   按钮，然后从上下文菜单中选择   来自默认目录  。

![从 Services 工具窗口中的 Kubernetes 欢迎屏幕添加新集群](https://resources.jetbrains.com/help/img/idea/2026.3/k8s-welcome-screen-add-cluster.png)

3. 在   添加集群   对话框中，选择   minikube   并点击   添加集群  。

添加的集群将在   服务   工具窗口中可用。

4. 在   服务   工具窗口中，右键点击 minikube 集群并选择   连接集群  。

![连接到 minikube 集群](https://resources.jetbrains.com/help/img/idea/2026.3/ij-connect-cluster.png)

此时，IntelliJ IDEA 已连接到正在运行的 minikube 集群，并可以显示其 Kubernetes 资源。 可以直接从   服务   工具窗口浏览命名空间、节点和其他集群对象。

## 部署应用程序

在本教程前面，已经 [在本地构建了应用程序镜像](#build-docker-image)。 但是，minikube 集群无法自动访问本地 Docker 守护进程中的镜像。 需要将镜像加载到 minikube，使其可用。

Procedure: 将 Docker 镜像加载到 minikube

1. 打开   终端   工具窗口：转到  `视图｜工具窗口｜终端`  或按 `Alt+F12` (Windows), `⌥ F12` (macOS), `⌥ F12` (IntelliJ IDEA Classic (macOS)), `⌘ ⌃ T` (macOS System Shortcuts), `Alt+F12` (XWin), `Alt+F12` (GNOME), `Alt+F12` (KDE), `Alt+F12` (Emacs), `Alt+F12` (Sublime Text), `⌥ F12` (Sublime Text (macOS)), `Ctrl+Alt+1` (Visual Studio), `⌘ ⌃ 1` (Visual Studio (macOS)), `Alt+F12` (NetBeans), `Alt+F12` (Eclipse), `⌥ F12` (Eclipse (macOS))。

2. 运行以下命令以在 minikube 中构建容器镜像：

```BASH
minikube image load petclinic-app
```

3. 通过运行以下命令，验证  `petclinic-app`  镜像在集群中可用：

```BASH
minikube image ls | grep petclinic-app
```

应在输出中看到  `docker.io/library/petclinic-app:latest` 。

现在镜像已在 minikube 中可用，下一步是描述 Kubernetes 将如何运行它。 让我们创建两个 Kubernetes 清单：

* 部署，有助于你在 Pod 中运行容器

* Service，用于暴露应用，使你能够从本地访问它。

Procedure: 创建部署清单

1. 在   项目   工具窗口 ( `Alt+1` (Windows), `⌘ 1` (macOS), `⌘ 1` (IntelliJ IDEA Classic (macOS)), `⌘ 1` (macOS System Shortcuts), `Alt+1` (XWin), `Alt+1` (GNOME), `Alt+1` (KDE), `Alt+1` (Emacs), `Alt+1` (Sublime Text), `⌘ 1` (Sublime Text (macOS)), `Ctrl+Alt+L` (Visual Studio), `⌘ ⌥ L` (Visual Studio (macOS)), `Ctrl+1` (NetBeans), `Alt+1` (Eclipse), `Alt+1` (Eclipse (macOS))) 中，右键点击项目名称并选择  `新建 | Kubernetes 资源` 。

2. 在   新建 Kubernetes 资源   对话框中，选择   部署   文件类型，指定  `petclinic-deployment`  作为清单名称，然后按 `Enter` (Windows), `⏎` (macOS), `⏎` (IntelliJ IDEA Classic (macOS)), `⏎` (macOS System Shortcuts), `Enter` (XWin), `Enter` (GNOME), `Enter` (KDE), `Enter` (Emacs), `Enter` (Sublime Text), `⏎` (Sublime Text (macOS)), `Enter` (Visual Studio), `⏎` (Visual Studio (macOS)), `Enter` (NetBeans), `Enter` (Eclipse), `⏎` (Eclipse (macOS))。

![创建新部署](https://resources.jetbrains.com/help/img/idea/2026.3/ij-petclinic-new-deployment.png)

如出现提示，请同意将该文件添加到 Git。

3. 将生成的  `petclinic-deployment.yaml`  文件的内容替换为以下代码：

```YAML
apiVersion: apps/v1
kind: Deployment
metadata:
    name: petclinic
spec:
    replicas: 1
    selector:
        matchLabels:
            app: petclinic
    template:
        metadata:
            labels:
                app: petclinic
        spec:
            containers:
                - name: petclinic
                  image: petclinic-app:latest
                  imagePullPolicy: IfNotPresent
                  ports:
                      - containerPort: 8080


```

4. 在 [浮动工具栏](kubernetes.html#floating-toolbar)上，选择当前集群和命名空间，然后点击 ![应用图标](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.actions.deploy.svg)   应用   以将更改交付到本地集群。

![浮动工具栏上的 Apply 按钮](https://resources.jetbrains.com/help/img/idea/2026.3/ij-apply-manifest.png)

Procedure: 创建 Service 清单

1. 在   项目   工具窗口 ( `Alt+1` (Windows), `⌘ 1` (macOS), `⌘ 1` (IntelliJ IDEA Classic (macOS)), `⌘ 1` (macOS System Shortcuts), `Alt+1` (XWin), `Alt+1` (GNOME), `Alt+1` (KDE), `Alt+1` (Emacs), `Alt+1` (Sublime Text), `⌘ 1` (Sublime Text (macOS)), `Ctrl+Alt+L` (Visual Studio), `⌘ ⌥ L` (Visual Studio (macOS)), `Ctrl+1` (NetBeans), `Alt+1` (Eclipse), `Alt+1` (Eclipse (macOS))) 中，右键点击项目名称并选择  `新建 | Kubernetes 资源` 。

2. 在   新建 Kubernetes 资源   对话框中，选择   服务   文件类型，指定  `petclinic-service`  作为清单名称，然后按 `Enter` (Windows), `⏎` (macOS), `⏎` (IntelliJ IDEA Classic (macOS)), `⏎` (macOS System Shortcuts), `Enter` (XWin), `Enter` (GNOME), `Enter` (KDE), `Enter` (Emacs), `Enter` (Sublime Text), `⏎` (Sublime Text (macOS)), `Enter` (Visual Studio), `⏎` (Visual Studio (macOS)), `Enter` (NetBeans), `Enter` (Eclipse), `⏎` (Eclipse (macOS))。

如出现提示，请同意将该文件添加到 Git。

3. 将生成的  `petclinic-service.yaml`  文件的内容替换为以下代码：

```YAML
apiVersion: v1
kind: Service
metadata:
    name: petclinic
spec:
    type: NodePort
    selector:
        app: petclinic
    ports:
        - port: 8080
          targetPort: 8080

```

4. 在 [浮动工具栏](kubernetes.html#floating-toolbar)上，选择当前集群和命名空间，然后点击 ![应用图标](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.actions.deploy.svg)   应用   以将更改交付到本地集群。

Procedure: 访问应用程序

1. 在编辑器中打开  `petclinic-deployment.yaml`  文件。

2. 点击  `- containerPort: 8080`  属性旁边的   转发端口   嵌入提示。

![端口转发嵌入提示](https://resources.jetbrains.com/help/img/idea/2026.3/port-forwarding-inlay-hint.png)

> **Tip:**
> IntelliJ IDEA 启动新的端口转发会话后，   转发端口   嵌入提示会更改为   在浏览器中打开  。

3. 在   转发端口   对话框中，保留默认值并点击   前进  。

4. 在  `petclinic-deployment.yaml`  文件中，点击   在浏览器中打开   嵌入提示。

![Services 工具窗口中新端口转发会话的启动](https://resources.jetbrains.com/help/img/idea/2026.3/ij-new-port-forwarding-session.png)

IntelliJ IDEA 会重定向到默认浏览器，可在其中检查部署在本地 minikube 集群中的 Spring Petclinic 应用程序。

已了解如何使用 minikube 和 IntelliJ IDEA 将 Spring 应用程序部署到本地 Kubernetes 集群。 这种方法可启用对 Kubernetes 的快速本地测试和试验，而无需远程集群。

## 后续步骤

通过以下主题了解如何使用 Kubernetes：

* [日志视图](kubernetes.html#view-logs)

* [管理您的集群](kubernetes.html#manage_cluster)

* [在 Kubernetes 中调试](debugging-in-kubernetes.html)

完整教程列表请参阅 [IntelliJ IDEA 教程](instance-tutorials.html)。

