# K8S 安装 Harbor

在本文中,我们将介绍如何使用Kubernetes(K8S)安装和部署Harbor,一个开源的容器镜像仓库。Harbor为开发者提供了一个集中的地方来存储和管理容器镜像,方便在Kubernetes集群上使用。

## Harbor 简介

Harbor是一个CNCF(Cloud Native Computing Foundation)孵化项目,提供了一个企业级的容器镜像注册表。它具有安全性、稳定性和可扩展性等特点,可以作为Kubernetes集群的一部分进行部署。Harbor还提供了访问控制、镜像复制、镜像签名、触发器等功能,使得容器镜像的管理更加便捷。

## 安装流程

下面是安装Harbor的整个流程,我们将逐步进行说明。

| 步骤 | 操作 |
| --- | --- |
| 1 | 准备工作 |
| 2 | 配置DNS |
| 3 | 配置证书 |
| 4 | 部署Harbor |
| 5 | 配置Ingress |

现在,我们将详细介绍每个步骤要做的事情,并提供相应的代码示例。

### 步骤 1:准备工作

在开始安装之前,您需要准备以下工作:

- 一台具有Kubernetes环境的服务器。
- Docker已经正确安装在服务器上。
- Helm已经正确安装在服务器上。

### 步骤 2:配置DNS

在安装Harbor之前,您需要配置一个域名解析到您的服务器IP地址。

### 步骤 3:配置证书

通过以下步骤配置TLS证书:

1. 在服务器上创建一个目录来存储证书。

```bash
mkdir /path/to/certificates
cd /path/to/certificates
```

2. 创建一个自签名的证书。

```bash
openssl req -newkey rsa:2048 -nodes -sha256 -keyout harbor.key -x509 -days 365 -out harbor.crt
```

3. 创建一个Kubernetes Secret来存储证书。

```bash
kubectl create secret tls harbor-cert --cert=harbor.crt --key=harbor.key -n
```

### 步骤 4:部署Harbor

通过以下步骤部署Harbor:

1. 添加Harbor Helm仓库。

```bash
helm repo add harbor https://helm.goharbor.io
helm repo update
```

2. 创建一个新的命名空间来部署Harbor。

```bash
kubectl create namespace
```

3. 安装Harbor Chart。

```bash
helm install harbor harbor/harbor -n --set expose.ingress.hosts.core= --set expose.ingress.hosts.notary= --set tls.secretName=harbor-cert
```

### 步骤 5:配置Ingress

通过以下步骤配置Ingress来访问Harbor:

1. 创建一个Ingress资源。

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

2. 部署Ingress。

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

现在,您可以使用您配置的域名来访问Harbor了。

## 结论

通过按照上述步骤,您可以在Kubernetes集群上成功安装和部署Harbor。Harbor提供了一个方便、安全的容器镜像仓库,可以帮助您更好地管理和分享容器镜像。希望本文对您理解K8S安装Harbor过程有所帮助。