Loading... # Kubernetes 集群公共服务配置 Harbor 在 Kubernetes 集群中,容器镜像的存储与管理至关重要。Harbor 是一个开源的企业级 Docker 镜像仓库,提供安全、可扩展的镜像管理功能。本文将详细介绍如何在 Kubernetes 中配置 Harbor 作为公共服务,实现对镜像的高效管理。 ### 1. 为什么选择 Harbor **Harbor** 作为镜像仓库,具备以下显著优点: - **安全性**:支持角色访问控制(RBAC)、镜像签名、镜像扫描,确保镜像的安全。 - **企业级功能**:包括镜像复制、镜像清理、日志审计等,适用于大规模集群环境。 - **与 Kubernetes 集成良好**:Harbor 可以轻松集成到 Kubernetes 中,提供私有镜像仓库服务。 以下是 Harbor 架构的示意图: ```mermaid graph TD A[用户请求] --> B[Harbor API] B --> C[镜像管理] C --> D[存储后端] ``` ### 2. 部署 Harbor 的准备工作 在部署 Harbor 之前,需要满足以下基本条件: - **Kubernetes 集群**:需要一个已经部署好的 Kubernetes 集群。 - **Helm**:Helm 是 Kubernetes 的包管理工具,用于简化 Harbor 的安装和管理。 - **持久化存储**:Harbor 需要持久化存储用于存放镜像数据和元数据信息。 ### 3. 使用 Helm 安装 Harbor Helm 可以简化在 Kubernetes 集群中安装应用程序的过程。以下是安装 Harbor 的步骤。 #### 3.1 安装 Helm 如果未安装 Helm,可以使用以下命令进行安装: ```bash curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash ``` **解释**: - 通过 `curl` 命令下载并安装 Helm,方便进行 Kubernetes 应用的管理。 #### 3.2 添加 Harbor 的 Helm 仓库 ```bash helm repo add harbor https://helm.goharbor.io helm repo update ``` **解释**: - **`helm repo add`**:添加 Harbor 的 Helm Chart 仓库。 - **`helm repo update`**:更新 Helm 仓库,确保获取到最新版本的 Harbor Chart。 #### 3.3 使用 Helm 安装 Harbor ```bash helm install harbor harbor/harbor --namespace harbor --create-namespace ``` **解释**: - **`helm install`**:使用 Helm 安装 Harbor。 - **`--namespace harbor`**:将 Harbor 安装到 `harbor` 命名空间。 - **`--create-namespace`**:创建 `harbor` 命名空间(如果不存在)。 ### 4. 配置 Harbor 的外部访问 Harbor 安装完成后,需要配置其外部访问,以便用户和 Kubernetes 集群可以访问 Harbor。 #### 4.1 配置 Ingress 控制器 Harbor 通过 Ingress 资源来暴露服务,使得外部可以通过域名访问。以下是一个 Ingress 配置示例: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: harbor-ingress namespace: harbor annotations: nginx.ingress.kubernetes.io/ssl-redirect: "true" nginx.ingress.kubernetes.io/proxy-body-size: "0" spec: rules: - host: harbor.example.com http: paths: - path: / pathType: Prefix backend: service: name: harbor-core port: number: 80 tls: - hosts: - harbor.example.com secretName: harbor-tls ``` **解释**: - **`host: harbor.example.com`**:定义外部访问 Harbor 的域名。 - **`service.name: harbor-core`**:指定 Ingress 需要暴露的服务。 - **`tls`**:配置 HTTPS 访问,使用 `harbor-tls` 证书。 #### 4.2 创建 TLS 证书 为了保证访问的安全性,推荐为 Harbor 配置 TLS 证书。可以使用 `cert-manager` 或其他工具来生成证书,并将其应用到 Kubernetes 中。 ### 5. 将 Harbor 配置为 Kubernetes 镜像仓库 为了在 Kubernetes 集群中使用 Harbor 存储镜像,需要将 Harbor 仓库地址添加到集群的 Docker 配置中。 #### 5.1 配置 Docker Daemon 在每个 Kubernetes 节点上,更新 Docker Daemon 的配置文件 `/etc/docker/daemon.json`,添加 Harbor 的地址: ```json { "insecure-registries": ["harbor.example.com"] } ``` **解释**: - **`insecure-registries`**:用于指定信任的镜像仓库地址(如果使用 HTTPS,需配置正确的 TLS 证书)。 更新完成后,重启 Docker 服务: ```bash systemctl restart docker ``` ### 6. 推送镜像到 Harbor 完成 Harbor 的安装和配置后,可以将镜像推送到 Harbor,以供 Kubernetes 集群使用。 #### 6.1 Docker 登录 Harbor 首先,使用 Docker 登录 Harbor: ```bash docker login harbor.example.com ``` **解释**: - 使用 Harbor 的域名进行登录,输入用户名和密码。 #### 6.2 标记并推送镜像 将镜像标记为 Harbor 仓库的格式,并推送到 Harbor: ```bash docker tag nginx:latest harbor.example.com/library/nginx:latest docker push harbor.example.com/library/nginx:latest ``` **解释**: - **`docker tag`**:为本地的 nginx 镜像添加一个新的标签,指向 Harbor 仓库。 - **`docker push`**:将镜像推送到 Harbor 的 `library` 项目下。 ### 7. 使用 Harbor 镜像部署应用 在 Kubernetes 集群中,可以直接使用推送到 Harbor 的镜像来部署应用。以下是一个简单的 Deployment 示例: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: default spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: harbor.example.com/library/nginx:latest ports: - containerPort: 80 ``` **解释**: - **`image: harbor.example.com/library/nginx:latest`**:使用存储在 Harbor 中的 nginx 镜像。 ### 8. 监控和管理 Harbor Harbor 提供了丰富的管理和监控功能,可以帮助用户更好地了解镜像的使用情况。 #### 8.1 镜像扫描 Harbor 集成了 **Clair** 和 **Trivy** 等镜像扫描工具,帮助用户检测镜像中的安全漏洞。 #### 8.2 日志审计 通过 Harbor 的日志审计功能,可以记录所有用户的操作,包括镜像的推送、拉取、删除等,确保对操作的可追溯性。 ### 9. 总结 通过在 Kubernetes 集群中配置 Harbor,可以有效地管理和保护容器镜像,提升集群的安全性和资源利用率。Harbor 的企业级功能使得它在镜像管理上具备显著优势,特别是在大规模集群和生产环境中尤为适用。通过 Helm 安装 Harbor 并配置外部访问,能够为 Kubernetes 提供一个可靠的私有镜像仓库,确保集群中所有应用的镜像来源可控、安全。 🔥 **学习建议**: 1. 在测试环境中多次尝试安装和配置 Harbor,熟悉 Helm Chart 的安装过程。 2. 结合 Ingress 和 TLS 证书,确保 Harbor 的外部访问安全可靠。 3. 充分利用 Harbor 的镜像扫描和日志审计功能,提升镜像的安全性管理。 最后修改:2024 年 10 月 21 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏