中文文档

Deploy Operator With Kustomize

概述

Kustomize 是一种基于 YAML 的模板工具,可让您以声明式和可重复的方式定义 Kubernetes 资源. 自定义功能包括 kubectl 命令行工具.

default MinIO Operator Kustomize template 提供了为本地环境定制配置的起点.

您可以修改默认的自定义文件,也可以应用自己的自定义文件 patches 为您的 Kubernetes 集群定制操作员部署.

先决条件

使用 Kustomize 安装操作员需要以下先决条件:

  • 现有的 Kubernetes 集群,v1.21 或更高版本.

  • 与群集版本相同的本地 kubectl 安装.

  • 从本地主机在群集上运行 kubectl 命令的权限.

有关操作员安装要求(包括 TLS 证书)的更多信息, 参见 Operator deployment prerequisites.

本程序假定您熟悉参考的 Kubernetes 概念和实用程序. 本文档可为尽力配置或部署 Kubernetes 相关资源提供指导,但不能取代官方的 Kubernetes Documentation 文档.

使用 Kustomize 安装 MinIO 操作器

以下程序使用 kubectl -k 从 MinIO Operator GitHub 代码库安装操作器. kubectl -kkubectl --kustomize 是执行相同命令的别名.

重要

如果使用 Kustomize 安装操作员,则必须使用 Kustomize 管理或更新该安装. 请勿使用 kubectl krew , 管理或更新 MinIO 操作器安装的舵手图或类似方法.

  1. 安装最新版本的操作员

    kubectl apply -k "github.com/minio/operator?ref=v7.1.1"
    

    输出结果如下:

    namespace/minio-operator created
    customresourcedefinition.apiextensions.k8s.io/miniojobs.job.min.io created
    customresourcedefinition.apiextensions.k8s.io/policybindings.sts.min.io created
    customresourcedefinition.apiextensions.k8s.io/tenants.minio.min.io created
    serviceaccount/console-sa created
    serviceaccount/minio-operator created
    clusterrole.rbac.authorization.k8s.io/console-sa-role created
    clusterrole.rbac.authorization.k8s.io/minio-operator-role created
    clusterrolebinding.rbac.authorization.k8s.io/console-sa-binding created
    clusterrolebinding.rbac.authorization.k8s.io/minio-operator-binding created
    configmap/console-env created
    secret/console-sa-secret created
    service/console created
    service/operator created
    service/sts created
    deployment.apps/console created
    deployment.apps/minio-operator created
    
  2. 验证操作员 pod 是否正在运行:

    kubectl get pods -n minio-operator
    

    输出结果如下:

    NAME                              READY   STATUS    RESTARTS   AGE
    console-6b6cf8946c-9cj25          1/1     Running   0          99s
    minio-operator-69fd675557-lsrqg   1/1     Running   0          99s
    

    在这个例子中, minio-operator pod 是 MinIO 操作员, console pod 是操作员控制面板.

    您可以通过应用 kubectl 补丁来修改操作员配置. 常见配置的示例 Operator GitHub repository.

  3. (Optional) 配置操作员控制面板服务的访问权限

    操作员控制面板服务不会自动绑定或暴露自己以便在 Kubernetes 集群上进行外部访问. 您必须配置网络控制平面组件, 如负载平衡器或入口,以授予外部访问权限.

    用于测试或短期访问, 使用以下补丁通过 NodePort 公开操作员控制面板服务:

    kubectl patch service -n minio-operator console -p '
    {
        "spec": {
            "ports": [
                {
                    "name": "http",
                    "port": 9090,
                    "protocol": "TCP",
                    "targetPort": 9090,
                    "nodePort": 30090
                },
                {
                    "name": "https",
                    "port": 9443,
                    "protocol": "TCP",
                    "targetPort": 9443,
                    "nodePort": 30433
                }
            ],
            "type": "NodePort"
        }
    }'
    

    现在,您可以通过任何 Kubernetes 工作节点上的 30433 端口访问该服务了.

  4. 验证操作器的安装

    检查指定命名空间( minio-operator )的内容,确保所有 pod 和服务都已成功启动.

    kubectl get all -n minio-operator
    

    答复应类似于以下内容:

    NAME                                  READY   STATUS    RESTARTS   AGE
    pod/console-68d955874d-vxlzm          1/1     Running   0          25h
    pod/minio-operator-699f797b8b-th5bk   1/1     Running   0          25h
    pod/minio-operator-699f797b8b-nkrn9   1/1     Running   0          25h
    
    NAME               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
    service/console    ClusterIP   10.43.195.224   <none>        9090/TCP,9443/TCP   25h
    service/operator   ClusterIP   10.43.44.204    <none>        4221/TCP            25h
    service/sts        ClusterIP   10.43.70.4      <none>        4223/TCP            25h
    
    NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/console          1/1     1            1           25h
    deployment.apps/minio-operator   2/2     2            2           25h
    
    NAME                                        DESIRED   CURRENT   READY   AGE
    replicaset.apps/console-68d955874d          1         1         1       25h
    replicaset.apps/minio-operator-699f797b8b   2         2         2       25h
    
  5. 读取操作员控制面板 JWT 以登录

    kubectl apply -f - <<EOF
    apiVersion: v1
    kind: Secret
    metadata:
      name: console-sa-secret
      namespace: minio-operator
      annotations:
        kubernetes.io/service-account.name: console-sa
    type: kubernetes.io/service-account-token
    EOF
    SA_TOKEN=$(kubectl -n minio-operator  get secret console-sa-secret -o jsonpath="{.data.token}" | base64 --decode)
    echo $SA_TOKEN
    
  6. 登录 MinIO 操作员控制面板

    如果您配置了通过 NodePort 访问的服务, 指定群集中任何工作节点的主机,并将该端口设为 HOSTNAME:NODEPORT ,以访问控制台.

    例如, 配置了 NodePort 为 30090 和以下 InternalIP 地址的部署可通过以下地址访问 http://172.18.0.5:30090 .

    $ kubectl get nodes -o custom-columns=IP:.status.addresses[:]
    IP
    map[address:172.18.0.5 type:InternalIP],map[address:k3d-MINIO-agent-3 type:Hostname]
    map[address:172.18.0.6 type:InternalIP],map[address:k3d-MINIO-agent-2 type:Hostname]
    map[address:172.18.0.2 type:InternalIP],map[address:k3d-MINIO-server-0 type:Hostname]
    map[address:172.18.0.4 type:InternalIP],map[address:k3d-MINIO-agent-1 type:Hostname]
    map[address:172.18.0.3 type:InternalIP],map[address:k3d-MINIO-agent-0 type:Hostname]
    

    如果您配置了 svc/console 服务,以便通过入口或群集负载平衡器进行访问, 您可以使用配置的主机名和端口访问控制台.

    您可以使用 kubectl port forward 为控制台临时转发端口:

    kubectl port-forward svc/console -n minio-operator 9090:9090
    

    然后,您可以使用 http://localhost:9090 访问 MinIO 操作员控制面板.

访问控制台后,使用控制台 JWT 登录. 您现在可以 deploy and manage MinIO Tenants using the Operator Console.

Join Slack 商业支持购买咨询