Kubernetes (K8S) 是一个开源平台,用于自动化部署、扩展和管理容器化应用程序,而 Harbor 是一个用于存储和分发 Docker 镜像的企业级私有 Docker Registry。在K8S集群中使用私有镜像Harbor可以提高安全性和可靠性,同时还能加快部署速度。

在下面的文章中,我将向你展示如何在K8S集群中使用Harbor私有镜像。首先,让我们来看一下整个过程的步骤:

| 步骤 | 操作 |
|------|-----------------------|
| 1 | 部署Harbor |
| 2 | 创建K8S的密钥以访问Harbor |
| 3 | 创建Secret以访问Harbor镜像 |
| 4 | 部署应用程序使用Harbor私有镜像 |

接下来,让我们逐步介绍每个步骤需要做什么以及具体的代码示例:

### 步骤 1: 部署Harbor

首先,你需要在你的环境中部署Harbor私有镜像仓库。你可以按照Harbor的官方文档进行部署,或者使用Docker Compose进行部署。以下是Docker Compose部署Harbor的示例:

```yaml
version: '3'
services:
harbor:
image: goharbor/harbor-offline-installer:v2.1.1
hostname: harbor.example.com
ports:
- 80:80
- 443:443
- 4443:4443
...
```

### 步骤 2: 创建K8S的密钥以访问Harbor

在K8S中,你需要创建一个secret来存储访问Harbor的用户名和密码。以下是创建K8S密钥的示例:

```bash
kubectl create secret docker-registry harbor-secret --docker-server=harbor.example.com --docker-username=admin --docker-password=password
```

### 步骤 3: 创建Secret以访问Harbor镜像

接下来,你需要创建一个secret来让K8S能够拉取Harbor中的私有镜像。以下是创建K8S secret的示例:

```yaml
apiVersion: v1
kind: Secret
metadata:
name: harbor-pull-secret
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","data":{},"kind":"Secret","metadata":{"annotations":{},"name":"harbor-pull-secret","namespace":"default"}}
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: BASE64ENCODED_DATA
```

### 步骤 4: 部署应用程序使用Harbor私有镜像

最后,你可以在K8S集群中部署应用程序,并在Deployment中指定使用Harbor中的私有镜像。以下是在Deployment中指定私有镜像的示例:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: harbor.example.com/my-image:latest
imagePullPolicy: Always
imagePullSecrets:
- name: harbor-pull-secret
```

通过以上步骤,你已经成功地在K8S集群中使用Harbor私有镜像。希望这篇文章能帮助你快速学会如何实现K8S私有镜像Harbor。如果你有任何问题或疑问,请随时在下方留言,我将尽力帮助解决。祝你学习进步!