# 从零开始学习如何在Kubernetes(K8s)中部署和管理容器镜像仓库Harbor

在本文中,将引导你如何在Kubernetes集群中部署和管理容器镜像仓库Harbor。Harbor是一个开源的企业级Docker Registry,提供了安全的存储、访问控制和镜像复制等功能,使得容器镜像的管理更加便捷和安全。

## 整体流程

以下是将在本教程中涵盖的步骤概要:

| 步骤 | 描述 |
|------|--------------------------------------------------|
| 1 | 在Kubernetes集群中创建一个Namespace |
| 2 | 部署Harbor的数据库和Redis服务到Kubernetes集群 |
| 3 | 部署Harbor的核心服务到Kubernetes集群 |
| 4 | 配置Ingress用于访问Harbor的Web界面 |
| 5 | 配置Harbor并添加第一个项目和镜像 |

现在,让我们逐步实施这些步骤。

## 步骤 1:创建一个Namespace

首先,我们需要在Kubernetes集群中创建一个Namespace,用于部署Harbor。

```yaml
apiVersion: v1
kind: Namespace
metadata:
name: harbor
```

将上述内容保存为 `harbor-namespace.yaml` 文件,并执行以下命令来创建Namespace:

```bash
kubectl apply -f harbor-namespace.yaml
```

## 步骤 2:部署Harbor的数据库和Redis服务

接下来,我们将部署Harbor所需的数据库和Redis服务。

```bash
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install harbor-database bitnami/postgresql --namespace harbor
helm install harbor-redis bitnami/redis --namespace harbor
```

## 步骤 3:部署Harbor核心服务

现在,我们可以部署Harbor的核心服务了。

```bash
helm install harbor bitnami/harbor --namespace harbor
```

## 步骤 4:配置Ingress

要访问Harbor的Web界面,我们需要配置Ingress。下面是一个示例Ingress配置的文件:

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: harbor-ingress
namespace: harbor
spec:
rules:
- host: harbor.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: harbor-core
port:
number: 80
```

将上述内容保存为 `harbor-ingress.yaml` 文件,并执行以下命令来创建Ingress:

```bash
kubectl apply -f harbor-ingress.yaml
```

## 步骤 5:配置Harbor

最后一步是配置Harbor并添加第一个项目和镜像。可以通过访问 `http://harbor.example.com` 进入Harbor的Web界面进行进一步配置。

至此,我们已经成功在Kubernetes集群中部署和管理了Harbor容器镜像仓库。希望这篇文章对你有所帮助!如果有任何疑问或问题,请随时留言。感谢阅读!