教程:将应用程序部署到 minikube 集群
在本教程中,将学习如何通过 minikube 直接在 GoLand 启动本地 Kubernetes 集群,并部署一个示例 Go 应用程序。 在此过程中,您将构建应用程序、创建 Docker 镜像并将其部署到 minikube。
在本地运行 Kubernetes 非常适合原型开发、部署测试和学习 Kubernetes 工作流。 利用 GoLand 中提供的 Docker 和 Kubernetes 支持,无需离开 IDE 就可以启动集群、部署资源以及检查应用程序。
在开始之前
在开始之前,请确保已安装并配置如下内容:
启用必需插件
本教程中用到的功能依赖于以下插件:
该插件默认在 GoLand 中捆绑并启用。 如果相关功能不可用,请确保未禁用该插件。
按下 Ctrl+Alt+S 打开设置,然后选择 。
找到所需的插件并将其开启。
首先,创建一个示例 Go 项目,或在 GoLand 打开现有的 Go 项目。
创建一个示例 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) }
构建应用程序
在将应用程序部署到 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 应用程序。
构建 Docker 镜像
在 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 资源 对话框中,选择 服务 文件类型,将
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: