## 实现K8S和Harbor的集成

### 概述
Kubernetes(K8S)是一个用于自动部署、扩展和管理容器化应用程序的开源系统,而Harbor是一个企业级的Docker镜像仓库,提供安全的镜像存储、管理和分发功能。将K8S与Harbor集成可以帮助我们更好地管理和运行容器化应用程序。

### 集成步骤
下面是整个集成过程的简要流程,我们将分步详细介绍每个步骤:
| 步骤 | 操作 |
|------|------------------------------|
| 1 | 安装Harbor并创建项目 |
| 2 | 在Kubernetes中配置Harbor认证 |
| 3 | 在Kubernetes中使用Harbor镜像 |

### 步骤一:安装Harbor并创建项目
1. 安装Harbor
- 在Harbor官方网站上下载最新版本的Harbor,并按照官方文档进行安装配置。
2. 创建项目
- 登录Harbor管理界面,创建一个新的项目,用于存储我们的镜像。

### 步骤二:在Kubernetes中配置Harbor认证
1. 创建Secret
```bash
$ kubectl create secret docker-registry harbor-credentials --docker-server=HARBOR_SERVER --docker-username=USERNAME --docker-password=PASSWORD --docker-email=EMAIL
```
- 创建一个名为`harbor-credentials`的Secret,用于存储Harbor的认证信息。
- 将`HARBOR_SERVER`、`USERNAME`、`PASSWORD`、`EMAIL`替换为你的Harbor相关信息。

2. 创建ServiceAccount
```yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: harbor-sa
```
- 创建一个名为`harbor-sa`的ServiceAccount,用于关联之后的Pod。

3. 创建Role和RoleBinding
```yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: harbor-role
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: harbor-rolebinding
subjects:
- kind: ServiceAccount
name: harbor-sa
roleRef:
kind: Role
name: harbor-role
apiGroup: rbac.authorization.k8s.io
```
- 创建一个名为`harbor-role`的Role,授权`harbor-sa`对Secret进行`get`和`list`操作。
- 创建一个名为`harbor-rolebinding`的RoleBinding,将Role和ServiceAccount进行绑定。

### 步骤三:在Kubernetes中使用Harbor镜像
1. 在Deployment中使用Harbor镜像
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: HARBOR_SERVER/USERNAME/IMAGE:TAG
imagePullPolicy: Always
imagePullSecrets:
- name: harbor-credentials
```
- 在Deployment中指定从Harbor拉取镜像,将`HARBOR_SERVER`、`USERNAME`、`IMAGE`、`TAG`替换为实际的镜像信息。
- 设置`imagePullSecrets`为之前创建的`harbor-credentials`。

### 总结
通过以上步骤,我们成功实现了Kubernetes与Harbor的集成,可以更方便地使用Harbor存储和管理镜像,提高容器化应用的部署和运行效率。希望这篇文章对你有所帮助!