在Kubernetes (K8S) 环境中搭建私有镜像仓库是非常常见的任务,特别是在需要进行容器镜像开发和部署的情况下。为了帮助刚入行的小白了解如何实现这一目标,下面我将详细介绍整个过程,并提供相应的代码示例。

### 搭建私有镜像仓库的流程

首先,让我们通过以下步骤来搭建私有镜像仓库:

| 步骤 | 操作 |
| ---- | ---- |
| 1 | 在K8S集群中创建持久化存储卷 |
| 2 | 部署Harbor镜像仓库 |
| 3 | 配置Harbor镜像仓库 |
| 4 | 部署Ingress控制器 |
| 5 | 配置Ingress路由规则 |

### 每一步的操作及相应代码示例

#### 步骤 1: 创建持久化存储卷

在K8S集群中创建一个持久化Volume,用来存储Harbor镜像仓库的数据。

```yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: harbor-pv
spec:
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/harbor
```

#### 步骤 2: 部署Harbor镜像仓库

使用Helm部署Harbor镜像仓库至K8S集群。

```bash
helm install stable/harbor --name my-harbor \
--namespace my-harbor \
--set harborAdminPassword=admin_password \
--set expose.ingress.enabled=true
```

#### 步骤 3: 配置Harbor镜像仓库

访问Harbor镜像仓库的Web界面,配置用户、项目等内容。

#### 步骤 4: 部署Ingress控制器

部署Ingress控制器来负责将外部请求路由到Harbor镜像仓库。

```bash
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
```

#### 步骤 5: 配置Ingress路由规则

配置Ingress路由规则,将外部请求路由到Harbor镜像仓库的服务。

```yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-harbor-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: my-harbor.com
http:
paths:
- path: /
backend:
serviceName: my-harbor-core
servicePort: http
```

通过以上步骤和代码示例,你可以成功在K8S环境中搭建私有镜像仓库。希望这篇文章能帮助你更好地理解这一过程,并顺利完成搭建私有镜像仓库的操作。如果有任何疑问或困惑,请随时留言。祝你顺利完成任务!