教程:将应用程序部署到 minikube 集群
在本教程中,将学习如何通过 minikube 直接在 GoLand 启动本地 Kubernetes 集群,并部署一个示例 Go 应用程序。 在此过程中,您将构建应用程序、创建 Docker 镜像并将其部署到 minikube。
在本地运行 Kubernetes 非常适合原型开发、部署测试和学习 Kubernetes 工作流。 利用 GoLand 中提供的 Docker 和 Kubernetes 支持,无需离开 IDE 就可以启动集群、部署资源以及检查应用程序。
在开始之前
在开始之前,请确保已安装并配置如下内容:
启用必需插件
本教程中用到的功能依赖于以下插件:
该插件默认在 GoLand 中捆绑并启用。 如果相关功能不可用,请确保未禁用该插件。
按下 Ctrl+Alt+S 打开设置,然后选择 。
打开 已安装 选项卡,找到所需插件,并勾选插件名称旁的复选框以启用。
首先,创建一个示例 Go 项目,或在 GoLand 打开现有的 Go 项目。
让我们以一个简单的 Node.js Express 应用程序为例开始。 该应用程序由一个 hello_express.js 文件组成,返回 Hello World! ,并在控制台输出 Example app listening on port 3000!。
创建一个示例 Go 应用程序
创建一个新 Go 项目。
创建一个 main.go 文件并添加如下代码:
package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello from GoLand and minikube!") }) http.ListenAndServe(":8080", nil) }
使用 Node.js 创建一个空项目
请点击 新项目 在 欢迎屏幕或从主菜单中选择 。
在打开的对话框左侧窗格中选择 Node.js。
指定应用程序的位置及其名称,例如
hello_world_docker。指定要使用的本地 Node.js 运行时。 接受建议的安装,或从列表中选择其他运行时,或者如未安装 Node.js,还可以点击 下载。 了解详情请参见 创建新的 Node.js 应用程序。

点击 创建。
填充应用程序
让我们为应用程序创建一个单独的文件夹,这将有助于后续将本地文件夹映射到容器内的文件夹。
为此,请打开 项目 工具窗口 Alt+1 ,右键点击项目文件夹,从上下文菜单选择 ,然后再选择 。 在弹出的对话框中,指定文件夹名称,例如 app 。

现在需要创建一个 JavaScript 文件,用于放置应用程序代码。

在弹出的对话框中,指定文件的名称,例如 hello_express.js 。

在编辑器中打开新建的 hello_express.js 文件并输入以下代码:
const express = require('express'); const app = express(); app.get('/', function(req, res) { res.send('Hello World!') }); app.listen(3000,function() { console.log('Example app listening on port 3000!') });如你所料,
express引用未被解析,并高亮显示为错误。 不过,将鼠标悬停到该引用时,GoLand 会建议快速修复:
点击 安装 'express' 链接后,
express会被添加到 package.json 文件并完成安装。
本地运行应用程序
现在我们可以本地运行应用程序,确保其按预期工作。
打开 hello_express.js 文件,在编辑器标签页任意位置右键点击,从上下文菜单选择 。

运行 工具窗口打开,并显示
Example app listening on port 3000!。如在
http://localhost:3000地址中打开浏览器,可看到页面显示 Hello World! ,结果与预期一致。
构建应用程序
在将应用程序部署到 Kubernetes 之前,需要先构建,并软件包为容器镜像。 本教程中, go build 命令用于编译应用程序源代码并生成可执行文件。
在 终端 工具窗口中:前往 或按 Alt+F12。
运行以下命令以构建应用程序:
go build -o app .确保 app 可执行文件出现在项目根目录下。
容器化应用程序
在此步进中,将已构建的应用程序软件包为 Docker 镜像。 Kubernetes 后续会以 pod 形式使用该镜像运行容器。
创建 Dockerfile
在 项目 工具窗口 Alt+1 中,右键点击项目根目录,指向 新建 ,并点击 文件。
在 新建文件… 对话框中,输入 Dockerfile 并按下 Enter。
如有提示,确认将文件添加到 Git。
请将以下代码粘贴到新的 Dockerfile 中:
FROM golang:1.26-alpine AS builder WORKDIR /app COPY go.mod ./ RUN go mod download COPY . . RUN go build -o server . FROM alpine:latest WORKDIR /app COPY --from=builder /app/server . EXPOSE 8080 ENTRYPOINT ["./server"]
所创建的 Dockerfile 包含用于分两暂存构建 Docker 镜像的指令。 第一暂存会编译 Go 应用程序。 第二暂存会将已编译的可执行文件复制到轻量级的 Alpine Linux 镜像。
当你从该镜像启动容器时,Docker 会运行 ./server 命令,从而启动 Go 应用程序。
创建 Dockerfile
在项目文件夹的上下文菜单中选择 ,然后再选择 。

在新建的 Dockerfile 中输入如下代码:
FROM node:22-alpine WORKDIR /tmp COPY package*.json . RUN npm ci --omit=dev COPY ./app/ ./app/ CMD ["node","./app/hello_express.js"]此 Dockerfile 包含基于
node:22镜像从 Docker Hub 构建镜像的操作指令。当你从此镜像运行容器时,Docker 会将 /app/ 目录的内容复制到容器内的 /tmp/app/ 目录下(在本例中, /app/ 目录包含 hello_express.js 文件)。 package.json 文件会被复制到 /tmp/ 。
然后 Docker 将当前工作目录设置为 /tmp 并运行
node ./app/hello_express.js。 最终,容器日志会显示Example app listening on port 3000!。
构建 Docker 镜像
在 项目 视图中,在编辑器里打开 Dockerfile 。
编辑文件:
更改
ENV RAILS_ENV="production" \ BUNDLE_DEPLOYMENT="1" \ BUNDLE_PATH="/usr/local/bundle" \ BUNDLE_WITHOUT="development"to
ENV RAILS_ENV="development" \ BUNDLE_PATH="/usr/local/bundle"更改
EXPOSE 80 CMD ["./bin/thrust", "./bin/rails", "server"]to
EXPOSE 3000 CMD ["./bin/rails", "server", "-b", "0.0.0.0", "-p", "3000"]
在 Dockerfile 内侧边栏中,点击
并选择 新建运行配置。

在 编辑运行配置 对话框中,在 镜像标记 字段中输入
go-minikube-app,在 容器名称 字段中输入go-minikube。 然后,点击 运行。
GoLand 创建一个 Dockerfile 运行配置 ,该配置从 Dockerfile 构建一个镜像,然后基于该镜像运行一个容器。 要查看整个过程,请在 日志 选项卡中打开 服务 工具窗口。

连接到 minikube
现在你已有包含应用程序的 Docker 镜像,需要启动本地 Kubernetes 集群用于部署。 我们将使用 minikube 从 GoLand 直接运行一个本地单节点 Kubernetes 集群。
使用 Docker 驱动启动 minikube
在 终端 工具窗口中:前往 或按 Alt+F12。
运行以下命令以启动本地 Kubernetes 集群,并让 minikube 使用 Docker 作为虚拟化驱动:
minikube start --driver=docker通过运行如下命令确认集群已启动且可用:
minikube status
使用 Docker 驱动会在 Docker 容器中运行 minikube 集群,为本地开发提供了轻量环境。
将 minikube 集群添加到 GoLand
打开 Services工具窗口:转到 或按 Alt+8。
选择 Kubernetes 节点,点击 添加集群 按钮,再从上下文菜单选择 来自默认目录。

在 添加集群 对话框中,选择 minikube},{ 并点击 添加集群。
添加的集群将在 服务 工具窗口中可用。
在 服务 工具窗口内,右键点击 minikube 集群后,选择 连接集群。

此时,GoLand 已连接到正在运行的 minikube 集群,可以显示其 Kubernetes 资源。 可以在 服务 工具窗口直接查看命名空间、节点等集群对象。
部署应用程序
在教程前面,你已经 本地构建了应用程序镜像。 但 minikube 集群无法自动访问本地 Docker daemon 的镜像。 需要将该镜像加载到 minikube,才可使用。
将 Docker 镜像加载到 minikube
在 终端 工具窗口中:前往 或按 Alt+F12。
在 minikube 中运行以下命令来构建容器镜像:
minikube image load go-minikube-app通过运行以下命令,验证
go-minikube-app镜像是否在您的集群中可用:minikube image ls | grep go-minikube-app您应当在输出中看到
docker.io/library/go-minikube-app:latest。
现在镜像已在 minikube 可用,下一步是描述 Kubernetes 将如何运行它。 让我们创建两个 Kubernetes 清单:
部署,它可以帮助您在 pod 中运行容器
Service,用于 Exposed 应用,从你的计算机访问
创建部署清单
在 项目 工具窗口(Alt+1 )中,右键点击项目名称并选择 。
在 新建 Kubernetes 资源 对话框中,选择 部署 文件类型,将
go-minikube-deployment设为清单名称,然后按 Enter。
如有提示,确认将文件添加到 Git。
将生成的 go-minikube-deployment.yaml 文件内容替换为以下代码:
apiVersion: apps/v1 kind: Deployment metadata: name: go-minikube spec: replicas: 1 selector: matchLabels: app: go-minikube template: metadata: labels: app: go-minikube spec: containers: - name: go-minikube image: go-minikube-app:latest imagePullPolicy: IfNotPresent ports: - containerPort: 8080在 浮动工具栏中,选择当前集群和命名空间,然后点击
Apply 以将更改部署到本地集群。

创建服务清单
在 项目 工具窗口(Alt+1 )中,右键点击项目名称并选择 。
在 新建 Kubernetes 资源 对话框中,选择 Service 文件类型,将
go-minikube-service设为清单名称,然后按 Enter。如有提示,确认将文件添加到 Git。
将生成的 go-minikube-service.yaml 文件内容替换为以下代码:
apiVersion: v1 kind: Service metadata: name: go-minikube spec: type: NodePort selector: app: go-minikube ports: - port: 8080 targetPort: 8080在 浮动工具栏中,选择当前集群和命名空间,然后点击
Apply 以将更改部署到本地集群。
访问应用程序
在编辑器中打开 go-minikube-deployment.yaml 文件。
点击 端口转发 属性旁边的嵌入提示,位于
- containerPort: 8080属性旁。在 端口转发 对话框中,保留默认值并点击 前进。
在 go-minikube-deployment.yaml 文件中,点击 在浏览器中打开 嵌入提示。

GoLand 会将您重定向到默认浏览器,在那里可以检查部署在本地 minikube 集群中的 Go 应用程序。
您已经学会如何使用 minikube 和 GoLand 将 Go 应用程序部署到本地 Kubernetes 集群。 这种方法可启用本地对 Kubernetes 的快速测试和实验,而无需远程集群。
后续步骤
您可以通过以下主题了解如何使用 Kubernetes: