部署 Easysearch Operator #
Easysearch Operator 只能在 k8s 环境下部署安装,请准备好一套 k8s 环境
部署前准备 #
- k8s 环境
要求Kubernetes 1.9
以上版本,自 1.9 版本以后,StatefulSet
成为了在Kubernetes
中管理有状态应用的标准方式。 - StorageClass
StorageClass 允许集群管理员定义多种存储方案,如快速的 SSD、标准的硬盘,或者其他的存储系统。无需手动预先创建存储资源,用户只需要在 PersistentVolumeClaim (PVC) 中指定需要的 StorageClass,存储资源就可以根据需求动态地创建。 - ServiceAccount
创建一个 ServiceAccount 用于 Easysearch Operator 获取和操作 k8s 资源apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: serviceaccount app.kubernetes.io/instance: controller-manager-sa app.kubernetes.io/component: rbac app.kubernetes.io/created-by: k8s-operator app.kubernetes.io/part-of: k8s-operator app.kubernetes.io/managed-by: kustomize name: controller-manager # ServiceAccount 的名字是 controller-manager namespace: default
- ClusterRole
创建 ClusterRole,用于定义访问 k8s 集群的角色权限 - cert-manager
部署 cert-manager 来管理 Easysearch 整个集群的证书
至此,准备工作完毕,以上的流程都是一劳永逸的,在第一次部署 Operator 的时候才需要,后续不再需要重新部署。
部署 Easysearch Operator #
下载镜像 #
Easysearch Operator 的镜像发布在 Docker 的官方仓库,地址如下:
https://hub.docker.com/r/infinilabs/operator
使用下面的命令即可获取最新的容器镜像:
docker pull infinilabs/operator:latest
验证镜像 #
将镜像下载到本地之后,可以看到 Easysearch Operator 容器镜像非常小,只有大概 60MB,所以下载的速度应该是非常快的。
➜ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
infinilabs/operator latest 5da94b93e7eb 8 minutes ago 61.2MB
部署 Operator #
在已有的 k8s 环境中部署 Operator,Operator 采用 deployment 方式部署,编辑对应的 yaml 文件,并 apply 即可。
kind: Deployment
apiVersion: apps/v1
metadata:
name: k8s-operator
namespace: default
labels:
app: k8s-operator
spec:
replicas: 1
selector:
matchLabels:
app: k8s-operator
template:
metadata:
labels:
app: k8s-operator
spec:
containers:
- name: k8s-operator
image: 'infinilabs/operator:latest'
imagePullPolicy: IfNotPresent
restartPolicy: Always
serviceAccount: controller-manager # 指定账号
查看部署情况 #
ik get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
k8s-operator 1/1 1 1 2m6s
至此,Easysearch Operator 已经部署完成。