使用 Actions 部署到 Kubernetes
设置持续部署,将应用部署到 Kubernetes 集群,并直接通过 GitHub Actions 管理部署和服务
使用 Actions 部署到 Kubernetes 是 CoddyKit 上的免费 CI/CD with GitHub Actions & DevOps Pipelines 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 CI/CD with GitHub Actions & DevOps Pipelines 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 CI/CD with GitHub Actions & DevOps Pipelines 课程共包含 4 节课。
使用 GitHub Actions 入门 Kubernetes 持续部署
欢迎!在本课中,您将学习如何使用 GitHub Actions 为 Kubernetes 集群设置持续部署(CD)。
自动化部署意味着您的应用程序更改可以快速、可靠地上线,无需手动操作。
我们将介绍身份验证、应用 Kubernetes 清单以及管理更新。
Kubernetes 部署基础
在部署之前,让我们快速回顾 Kubernetes 的两个核心资源:
- 部署:部署负责管理应用程序的 Pod,确保始终有指定数量的副本在运行。它们还负责处理更新和回滚。
- 服务:服务定义了访问应用程序的方式(例如,在集群内部访问,或通过 LoadBalancer 从外部访问)。
我们的目标是通过 GitHub Actions 将定义这些资源的 YAML 文件应用到集群中。
向 Kubernetes 身份验证 GitHub Actions
要执行部署,您的 GitHub Actions 工作流需要与 Kubernetes 集群的 API 服务器通信。
这需要进行身份验证。与 Kubernetes 进行身份验证的标准方式是使用 kubeconfig 文件。
我们需要将此文件的内容安全地提供给工作流运行器。
保护 Kubernetes 配置
kubeconfig 文件包含集群端点和用户凭据等敏感信息。必须对其严格保密!
GitHub Actions 提供了机密功能。您可以将 kubeconfig 文件的内容存储为仓库机密。
如何获取您的 kubeconfig?这取决于您的 Kubernetes 提供商(例如,aws eks update-kubeconfig、gcloud container clusters get-credentials)。
设置 Kubernetes 上下文
将 kubeconfig 存储为机密后(假设名称为 KUBE_CONFIG_DATA),您的工作流就可以使用它。
常见做法是将机密的内容写入运行器上的临时文件,然后将 KUBECONFIG 环境变量设置为指向该文件。
这样可以告诉 kubectl 在哪里查找集群连接详细信息。
在工作流中使用 `kubectl`
kubectl 是用于与 Kubernetes 集群交互的官方命令行工具。GitHub Actions 运行器已预装 kubectl。
设置好 kubeconfig 后,您就可以在工作流步骤中运行任何 kubectl 命令。
让我们来看一个基本示例:
name: K8s Setup Test
on: [workflow_dispatch]
jobs:
test-kubeconfig:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Kubeconfig
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
run: |
mkdir -p ~/.kube
echo "$KUBE_CONFIG_DATA" > ~/.kube/config
chmod 600 ~/.kube/config
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name: Verify kubectl access
run: kubectl version --client简单的 Kubernetes 部署清单
下面是一个“你好世界”应用程序的基本 Kubernetes Deployment 和 Service 清单。这就是我们要让 Kubernetes 运行的内容。
此示例使用简单的 Nginx 镜像,并将其公开在 80 端口上。
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-app-deployment
spec:
replicas: 1
selector:
matchLabels:
app: hello-app
template:
metadata:
labels:
app: hello-app
spec:
containers:
- name: hello-app
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: hello-app-service
spec:
selector:
app: hello-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer完整的部署工作流
现在,让我们将部署步骤集成到工作流中。构建并推送容器镜像(在前面的课程中已介绍)后,您就可以部署它。
此工作流假设您已经设置好 kubeconfig 机密,并且仓库中存在清单文件(例如 k8s/deployment.yaml)。
name: Deploy to Kubernetes
on:
push:
branches:
- main
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Kubeconfig
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
run: |
mkdir -p ~/.kube
echo "$KUBE_CONFIG_DATA" > ~/.kube/config
chmod 600 ~/.kube/config
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name: Deploy application to K8s
run: kubectl apply -f k8s/deployment.yaml更新您的应用程序
kubectl apply 的一项重要特性是幂等性。如果 YAML 中定义的资源已经存在,kubectl apply 会更新这些资源,而不是创建新的资源。
要部署应用程序的新版本,只需更新 deployment.yaml 中的镜像标签并推送更改。随后 GitHub Actions 会触发工作流,Kubernetes 将执行滚动更新,逐步用新的 Pod 替换旧的 Pod,从而确保停机时间最短。
快速检查
您已经学会了使用 GitHub Actions 将应用程序部署到 Kubernetes 的基本步骤。
以下哪一项是 GitHub Actions 工作流部署 Kubernetes 清单的正确步骤顺序?
回顾与后续步骤
做得很好!您已经学会了如何使用 GitHub Actions 设置 Kubernetes 持续部署。
- 我们将敏感的
kubeconfig数据存储在 GitHub Secrets 中。 - 工作流使用此机密来配置
kubectl。 - 使用
kubectl apply -f部署或更新 Kubernetes 清单。 - 应用更改时,Kubernetes 会处理滚动更新。
这种强大的组合可以自动化您的部署流程,让开发过程更加顺畅、高效。继续探索更多高级 Kubernetes 功能吧!
常见问题解答
「使用 Actions 部署到 Kubernetes」课时是免费的吗?
是的 — 「使用 Actions 部署到 Kubernetes」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 CI/CD with GitHub Actions & DevOps Pipelines 课程的其余内容,请升级到 CoddyKit PRO。 CI/CD with GitHub Actions & DevOps Pipelines 课程共包含 4 节课。
「使用 Actions 部署到 Kubernetes」这节课中我会学到什么?
设置持续部署,将应用部署到 Kubernetes 集群,并直接通过 GitHub Actions 管理部署和服务 你通过在浏览器中直接运行的动手代码来练习 CI/CD with GitHub Actions & DevOps Pipelines,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 CI/CD with GitHub Actions & DevOps Pipelines 需要有经验吗?
无需任何先前经验。CoddyKit 上的 CI/CD with GitHub Actions & DevOps Pipelines 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「使用 Actions 部署到 Kubernetes」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 CI/CD with GitHub Actions & DevOps Pipelines 课中编写并运行代码吗?
能。每节 CI/CD with GitHub Actions & DevOps Pipelines 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 Actions 构建 Docker 镜像
- 将镜像推送到镜像仓库
- 使用 Actions 部署到 Kubernetes
- 持续集成与持续交付中的 Helm Chart 和 Kubernetes 清单