本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

shell-operator Docker 镜像下载 - 轩辕镜像

shell-operator 镜像详细信息和使用指南

shell-operator 镜像标签列表和版本信息

shell-operator 镜像拉取命令和加速下载

shell-operator 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

shell-operator
flant/shell-operator

shell-operator 镜像详细信息

shell-operator 镜像标签列表

shell-operator 镜像使用说明

shell-operator 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

Shell-operator 是一个在 Kubernetes 集群中运行事件驱动脚本的工具,它作为 Kubernetes 集群事件与 shell 脚本之间的集成层,通过将脚本视为由事件触发的钩子,简化集群管理,支持监控 Kubernetes 对象事件并按条件触发脚本。
3 收藏0 次下载activeflant镜像

shell-operator 镜像详细说明

shell-operator 使用指南

shell-operator 配置说明

shell-operator 官方文档

Shell-operator

Shell-operator logo

docker pull flant/shell-operator Slack chat EN *** chat RU

概述

Shell-operator 是一个用于在 Kubernetes 集群中运行事件驱动脚本的工具。

该操作器不同于 prometheus-operator 或 kafka-operator 这类特定软件产品的操作器。Shell-operator 作为 Kubernetes 集群事件与 shell 脚本之间的集成层,将脚本视为由事件触发的钩子。可以将其理解为面向脚本的 operator-sdk。

Shell-operator 可用作更高级的 Addon-operator 的基础,后者支持 helm 图表和值存储。

核心功能

Shell-operator 提供:

  • 简化 Kubernetes 集群管理:使用运维人员熟悉的工具,如 bash、python、kubectl 等。
  • Kubernetes 对象事件:钩子可由添加、更新或删除事件触发。了解更多关于钩子的信息。
  • 对象选择器和属性过滤器:可仅监控特定对象并检测其属性变化。
  • 简单配置:钩子绑定定义通过标准输出的 JSON 结构实现。

快速开始

需具备 Kubernetes 集群,且 kubectl 已配置为与集群通信。

在集群中设置 Shell-operator 的步骤:

  • 构建包含钩子(脚本)的镜像
  • 创建必要的 RBAC 对象(用于 onKubernetesEvent 绑定)
  • 运行包含构建镜像的 Pod

构建包含钩子的镜像

钩子是一种脚本,当使用 --config 选项执行时,会返回 JSON 格式的配置。了解更多关于钩子的信息。

创建一个监控所有命名空间中 Pod 的小型操作器,当有新 Pod 时记录其名称。

使用 "onKubernetesEvent" 绑定告知 shell-operator 要监控的对象。创建 pods-hook.sh 文件,内容如下:

bash
#!/usr/bin/env bash

if [[ $1 == "--config" ]] ; then
  cat <<EOF
  {"onKubernetesEvent": [
    {"kind":"Pod",
     "event":["add"]
  }
  ]}
EOF
else
  podName=$(jq -r .[0].resourceName $BINDING_CONTEXT_PATH)
  echo "Pod '${podName}' added"
fi

使 pods-hook.sh 可执行:

shell
chmod +x pods-hook.sh

可使用预构建镜像 flant/shell-operator:latest(包含 bash、python、kubectl、jq 和 shell-operator 二进制文件)构建自定义镜像。只需在 Dockerfile 中将钩子添加到 /hooks 目录。

pods-hook.sh 所在目录创建以下 Dockerfile:

dockerfile
FROM flant/shell-operator:latest
ADD pods-hook.sh /hooks

构建镜像(根据 Docker 仓库修改镜像标签):

shell
docker build -t "registry.mycompany.com/shell-operator:monitor-pods" .

将镜像推送到 Kubernetes 集群可访问的 Docker 仓库:

shell
docker push registry.mycompany.com/shell-operator:monitor-pods

在集群中安装 shell-operator

需监控所有命名空间的 Pod,需为 shell-operator 创建特定 RBAC 定义:

shell
kubectl create namespace example-monitor-pods &&
kubectl create serviceaccount monitor-pods-acc \
  --namespace example-monitor-pods &&
kubectl create clusterrole monitor-pods --verb=get,watch,list --resource=pods &&
kubectl create clusterrolebinding monitor-pods \
  --clusterrole=monitor-pods \
  --serviceaccount=example-monitor-pods:monitor-pods-acc

Shell-operator 可部署为 Pod。创建 shell-operator-pod.yaml 文件,内容如下:

yaml
apiVersion: v1
kind: Pod
metadata:
  name: shell-operator
spec:
  containers:
  - name: shell-operator
    image: registry.mycompany.com/shell-operator:monitor-pods
    imagePullPolicy: Always
  serviceAccountName: monitor-pods-acc

应用 shell-operator-pod.yaml 文件启动 shell-operator:

shell
kubectl -n example-monitor-pods apply -f shell-operator-pod.yaml

例如,部署 kubernetes-dashboard 触发 onKuberneteEvent

shell
kubectl apply -f [***]

运行 kubectl -n example-monitor-pods logs po/shell-operator,可看到钩子打印 dashboard Pod 名称:

...
INFO     : QUEUE add TASK_HOOK_RUN@KUBE_EVENTS pods-hook.sh
INFO     : TASK_RUN HookRun@KUBE_EVENTS pods-hook.sh
INFO     : Running hook 'pods-hook.sh' binding 'KUBE_EVENTS' ...
Pod 'kubernetes-dashboard-769df5545f-99xsb' added
...

删除创建的对象:

shell
kubectl delete ns example-monitor-pods &&
kubectl delete clusterrole monitor-pods &&
kubectl delete clusterrolebinding monitor-pods

此示例也可在 /examples 目录中找到:monitor-pods。

钩子绑定类型

onStartup

此绑定仅包含一个参数:执行顺序。启动时加载钩子,然后按参数定义的顺序执行带有 onStartup 绑定的钩子。了解更多关于 onStartup 绑定的信息。

示例 hook --config

json
{"onStartup":10}

schedule

此绑定用于定期运行钩子。调度可精确到秒级。了解更多关于 schedule 绑定的信息。

包含 2 个调度的 hook --config 示例:

json
{
  "schedule": [
   {"name":"每 10 分钟",
    "schedule":"0 */10 * * * *",
    "allowFailure":true
   },
   {"name":"每周一 8:05",
    "schedule":"0 5 8 * * 1"
    }
  ]
}

onKubernetesEvent

此绑定定义 Shell-operator 要监控的 Kubernetes 对象子集,以及用于过滤对象属性的 jq 表达式。了解更多关于 onKubernetesEvent 绑定的信息。

注意:目前不支持自定义资源监控,参见 issue #14。

hook --config 示例:

json
{
  "onKubernetesEvent": [
  {"name":"命名空间标签变化时执行",
   "kind": "namespace",
   "event":["update"],
   "jqFilter":".metadata.labels"
  }]
}

Prometheus 指标

Shell-operator 提供 /metrics 端点。更多信息参见 METRICS 文档。

示例

更多示例可在 examples 目录中找到。

许可证

Apache License 2.0,参见 LICENSE。

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

"Docker加速体验非常流畅,大镜像也能快速完成下载。"