LOADING

Kubernetes集群公共服务配置Harbor

运维2个月前发布 杨帆舵手
16 0 0
广告也精彩
欢迎指数:
参与人数:

在 Kubernetes 集群中,容器镜像的存储与管理至关重要。Harbor 是一个开源的企业级 Docker 镜像仓库,提供安全、可扩展的镜像管理功能。本文将详细介绍如何在 Kubernetes 中配置 Harbor 作为公共服务,实现对镜像的高效管理。

1. 为什么选择 Harbor

Harbor 作为镜像仓库,具备以下显著优点:

  • 安全性:支持角色访问控制(RBAC)、镜像签名、镜像扫描,确保镜像的安全。
  • 企业级功能:包括镜像复制、镜像清理、日志审计等,适用于大规模集群环境。
  • 与 Kubernetes 集成良好:Harbor 可以轻松集成到 Kubernetes 中,提供私有镜像仓库服务。
    以下是 Harbor 架构的示意图:

    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,可以使用以下命令进行安装:

    curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

    解释

  • 通过 curl 命令下载并安装 Helm,方便进行 Kubernetes 应用的管理。

    3.2 添加 Harbor 的 Helm 仓库

    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

    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 配置示例:

    
    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 的地址:

    {
    "insecure-registries": ["harbor.example.com"]
    }

    解释

  • insecure-registries:用于指定信任的镜像仓库地址(如果使用 HTTPS,需配置正确的 TLS 证书)。
    更新完成后,重启 Docker 服务:

    systemctl restart docker

    6. 推送镜像到 Harbor

    完成 Harbor 的安装和配置后,可以将镜像推送到 Harbor,以供 Kubernetes 集群使用。

    6.1 Docker 登录 Harbor

    首先,使用 Docker 登录 Harbor:

    docker login harbor.example.com

    解释

  • 使用 Harbor 的域名进行登录,输入用户名和密码。

    6.2 标记并推送镜像

    将镜像标记为 Harbor 仓库的格式,并推送到 Harbor:

    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 示例:

    
    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 集成了 ClairTrivy 等镜像扫描工具,帮助用户检测镜像中的安全漏洞。

    8.2 日志审计

    通过 Harbor 的日志审计功能,可以记录所有用户的操作,包括镜像的推送、拉取、删除等,确保对操作的可追溯性。

    9. 总结

    通过在 Kubernetes 集群中配置 Harbor,可以有效地管理和保护容器镜像,提升集群的安全性和资源利用率。Harbor 的企业级功能使得它在镜像管理上具备显著优势,特别是在大规模集群和生产环境中尤为适用。通过 Helm 安装 Harbor 并配置外部访问,能够为 Kubernetes 提供一个可靠的私有镜像仓库,确保集群中所有应用的镜像来源可控、安全。
    ? 学习建议

    1. 在测试环境中多次尝试安装和配置 Harbor,熟悉 Helm Chart 的安装过程。
    2. 结合 Ingress 和 TLS 证书,确保 Harbor 的外部访问安全可靠。
    3. 充分利用 Harbor 的镜像扫描和日志审计功能,提升镜像的安全性管理。

此站内容质量评分请点击星号为它评分!

您的每一个评价对我们都很重要

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

© 版权声明
广告也精彩

相关文章

广告也精彩

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...