本教程提供了一个深入的快速入门指南,涵盖了使用 Minikube 部署本地 Kubernetes 集群、通过 Ansible 生成和管理私有证书、利用 Helm 部署 Harbor 容器镜像仓库,以及部署一个安全的 demo Web 服务。本教程面向具有 Kubernetes、Helm 和 Ansible 基础知识的工程师,旨在展示这些工具如何协同工作以构建一个安全的开发环境。
前提条件
在开始之前,请确保您的系统满足以下要求:
- Minikube:用于运行本地 Kubernetes 集群 (Minikube 安装)。
- Docker:用于构建和推送容器镜像 (Docker 安装)。
- kubectl:Kubernetes 命令行工具 (kubectl 安装)。
- Helm:用于部署 Harbor (Helm 安装)。
- Ansible:用于自动化证书管理 (Ansible 安装)。
- 基本的 Kubernetes、Helm 和 Ansible 知识。
- 可选:Python 的 Kubernetes 客户端(
pip install kubernetes),用于 Ansible 的k8s模块。
第 1 部分:使用 Minikube 设置 Kubernetes
Minikube 是一个轻量级工具,可在本地运行单节点 Kubernetes 集群,非常适合开发和测试。
启动 Minikube:
CodeBlock Loading...这将启动一个单节点 Kubernetes 集群。
启用 Ingress 插件: Minikube 的 Ingress 插件提供 NGINX Ingress 控制器,用于处理外部 HTTP/HTTPS 流量。
CodeBlock Loading...验证 Ingress 控制器是否运行:
CodeBlock Loading...配置 DNS: 获取 Minikube 的 IP 地址:
CodeBlock Loading...编辑
/etc/hosts文件(需要管理员权限),添加以下条目,将<minikube ip>替换为实际 IP:CodeBlock Loading...这允许通过
harbor.example.com和demo.example.com访问服务。
第 2 部分:使用 Ansible 生成私有证书
我们将使用 Ansible 自动化生成自签名证书,并将它们存储为 Kubernetes Secret,供 Harbor 和 Web 服务使用。自签名证书适合开发环境,但在生产环境中应使用受信任的 CA 证书。
安装 Ansible 集合: 安装
community.crypto和kubernetes.core集合:CodeBlock Loading...创建证书目录:
CodeBlock Loading...创建 Ansible 剧本: 创建文件
generate_certs.yaml,内容如下:
运行脚本:
CodeBlock Loading...这将为
harbor.example.com和demo.example.com生成自签名证书,并创建名为harbor-tls和demo-tls的 Kubernetes Secret。
第 3 部分:部署 Harbor
Harbor 是一个开源的容器镜像仓库,提供基于角色的访问控制、镜像漏洞扫描和镜像签名功能。我们将使用 Helm 部署 Harbor,并配置 TLS 以确保安全通信。
添加 Harbor Helm 仓库:
CodeBlock Loading...创建 Helm 配置文件: 创建文件
values.yaml,内容如下:
此配置启用 Ingress,使用 harbor-tls Secret 提供 TLS,并设置 Harbor 的管理员密码。
安装 Harbor:
CodeBlock Loading...验证部署: 检查 Harbor 组件是否运行:
CodeBlock Loading...访问
https://harbor.example.com(可能需接受自签名证书警告)并使用用户名admin和密码mysecretpassword登录。
第 4 部分:部署 Demo Web 服务
我们将创建一个简单的 Node.js Web 应用,构建 Docker 镜像,推送到 Harbor,并通过 Kubernetes 部署,使用 Ingress 提供 HTTPS 访问。
创建 Web 应用: 创建目录
demo-app并添加以下文件:app.js:
package.json:
Dockerfile:
构建并推送 Docker 镜像:
登录 Harbor:
CodeBlock Loading...构建镜像:
CodeBlock Loading...推送镜像:
CodeBlock Loading...
创建 Kubernetes 资源:
- 创建
deployment.yaml:
- 创建
- 创建
service.yaml:
创建
ingress.yaml:CodeBlock Loading...
应用 Kubernetes 资源:
CodeBlock Loading...访问 Web 服务: 打开浏览器,访问
https://demo.example.com。由于使用自签名证书,您可能需要接受安全警告。您应该看到消息:“Hello from demo app!”。