在这里插入图片描述
每种 Operator 类型都有一组不同的功能。在选择用于项目的类型时,了解每种项目类型的特性和限制以及Operator的用例非常重要。
SDK 提供了在 Go、Ansible 或 Helm 中开发operators的工作流程。
Go Operator 类型的工作流程:
Ansible Operator 类型的工作流程:
Helm Operator 类型的工作流程:
所有初始化的项目operator-sdk init都有一个共同的基础结构,它建立在kubebuilder 的项目布局上。每个项目类型都使用该类型语言的代码进一步定制。
文件/目录 | 描述 |
Dockerfile | Operator项目的 Dockerfile,用于使用make docker-build 构建镜像。 |
Makefile | 使用帮助目标构建文件以帮助您处理项目。 |
PROJECT | 该文件代表项目的配置,用于跟踪 CLI 和插件的有用信息。 |
bin/ | 该目录包含有用的二进制文件,例如manager用于在本地运行项目的二进制文件和kustomize用于项目配置的实用程序。对于其他语言类型,它可能具有其他对开发Operator 有用的二进制文件。 |
bundle/ | 此目录包含用于将您的项目与OLM以捆绑格式集成的所有文件。它是从 Makefile 目标构建的make bundle。 |
bundle/manifests/ | 此目录包含您的bundle的OLM 清单。 |
bundle/metadata/ | 此目录包含您的捆绑包的OLM 元数据,例如索引图像注释。 |
bundle/tests/ | 此目录包含随您的Operator 包一起提供的记分卡测试。 |
config/ | 包含用于在集群上启动项目的配置文件。插件可能会使用它来提供功能。例如,为了让 CLI 帮助创建您的Operator 包,它将查找在此目录中搭建的 CRD 和 CR。您还将找到所有Kustomize YAML 定义。 |
config/crd/ | 包含自定义资源定义。 |
config/default/ | 包含一个Kustomize 基础配置,用于在标准配置中启动控制器。 |
config/manager/ | 包含清单以将您的操作员项目作为集群上的 pod 启动。 |
config/manifests/ | 包含在捆绑目录中生成 OLM 清单的基础。 |
config/prometheus/ | 包含使项目能够向Prometheus提供指标(例如ServiceMonitor资源)所需的清单。 |
config/scorecard/ | 包含允许您使用记分卡测试项目所需的清单。 |
config/rbac/ | 包含运行项目所需的RBAC权限。 |
config/samples/ | 包含自定义资源。 |
bundle.Dockerfile | 用于构建捆绑镜像的 Dockerfile。用于使用 make bundle-build。 |
文件/目录 | 描述 |
config/testing/ | 清单文件可帮助您测试项目。例如,更改Molecule 测试的映像策略或在 Ansible 日志中启用调试级别。 |
molecule/ | 包含分子测试的清单。 |
molecule/default | 包含默认分子任务。 |
molecule/kind | 包含要在集群上执行的Molecule任务。 |
playbooks/ | 包含 Ansible 剧本。 |
roles/ | 包含每个 Kind 脚手架的 Ansible 角色文件。 |
requirements.yml | 此文件指定需要安装的 Ansible 依赖项,您的Operator 才能正常工作。 |
watches.yaml | 包含组、版本、种类以及剧本和规则位置。用于配置Ansible Watches。 |
文件/目录 | 描述 |
api/ | 包含 api 定义 |
config/certmanager | 包含通过 Webhook 配置证书管理器的 Kustomize 清单。 |
config/webhook | 包含用于配置 Webhook 的 Kustomize 清单。 |
controllers | 包含控制器。 |
main.go | 实现项目初始化。 |
hack/ | 包含实用程序文件,例如用于为项目文件构建许可证头的文件。 |
文件/目录 | 描述 |
helm-charts | 包含可以使用operator-sdk init --plugins=helm [options]或初始化的每个 Kind 脚手架的 Helm 图表operator-sdk create api [options]。 |
watches.yaml | 包含组、版本、种类和 Helm 图表位置。用于配置Helm Watches 。 |
下载地址:https://github.com/operator-framework/operator-sdk/releases
operator sdk 官方文档:https://sdk.operatorframework.io/docs/installation/
【温馨提示】根据k8s版本下载版本版本的Operator SDK CLI
wget https://github.com/operator-framework/operator-sdk/releases/download/v1.22.1/operator-sdk_linux_amd64
# 添加可执行权限
chmod +x operator-sdk_linux_amd64
# 添加软链
ln -s /opt/k8s/crd/Operator/operator-sdk_linux_amd64 /usr/local/bin/operator-sdk
operator-sdk version
kubectl version --output=json
kubelet --version
wget https://github.com/operator-framework/operator-sdk/releases/download/v1.22.2/ansible-operator_linux_amd64
# 添加可执行权限
chmod +x ansible-operator_linux_amd64
# 添加软链
ln -s /opt/k8s/crd/Operator/ansible-operator_linux_amd64 /usr/local/bin/ansible-operator
ansible-operator version
kubectl version --output=json
kubelet --version
wget https://github.com/operator-framework/operator-sdk/releases/download/v1.22.2/helm-operator_linux_amd64
# 添加可执行权限
chmod +x helm-operator_linux_amd64
# 添加软链
ln -s /opt/k8s/crd/Operator/helm-operator_linux_amd64 /usr/local/bin/helm-operator
helm-operator version
kubectl version --output=json
kubelet --version
安装包下载地址为:https://golang.org/dl/
如果打不开可以使用这个地址:https://golang.google.cn/dl/
wget https://golang.google.cn/dl/go1.19.1.linux-386.tar.gz
tar -xzf go1.19.1.linux-386.tar.gz -C /usr/local/
export PATH=$PATH:/usr/local/go/bin
# ~/.bash_profile 或者 /etc/profile,并将以下命令添加该文件的末尾,这样就永久生效了:
export PATH=$PATH:/usr/local/go/bin
source ~/.bash_profile
# 或
source /etc/profile
# go get更换国内镜像源
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn
go help
go version
mkdir memcached-operator ; cd memcached-operator
# 注意当前目录必须是空目录
operator-sdk init --domain example.com --repo github.com/example/memcached-operator
目录结构
operator-sdk create api --group cache --version v1alpha1 --kind Memcached --resource --controller
# 如果需要push镜像,加上docker-push参数
make docker-build IMG="example.com/memcached-operator:v0.0.1"
准备镜像:
docker save example.com/memcached-operator:v0.0.1 > memcached.tar
ctr -n k8s.io image import memcached.tar
docker pull kubesphere/kube-rbac-proxy:v0.11.0
docker tag kubesphere/kube-rbac-proxy:v0.11.0 gcr.io/kubebuilder/kube-rbac-proxy:v0.11.0
docker save gcr.io/kubebuilder/kube-rbac-proxy:v0.11.0 > kube-rabc-proxy.tar
ctr -n k8s.io image import kube-rabc-proxy.tar
运行:
make deploy IMG=example.com/memcached-operator:v0.0.1
kubectl apply -f config/samples/cache_v1_memcached.yaml
kubectl delete -f config/samples/cache_v1_memcached.yaml
make undeploy
mkdir nginx-operator
cd nginx-operator
operator-sdk init --domain example.com --plugins helm
operator-sdk create api --group demo --version v1alpha1 --kind Nginx
make docker-build IMG="example.com/nginx-operator:v0.0.1"
准备镜像:
docker save example.com/nginx-operator:v0.0.1 > nginx.tar
ctr -n k8s.io image import nginx.tar
docker pull kubesphere/kube-rbac-proxy:v0.11.0
docker tag kubesphere/kube-rbac-proxy:v0.11.0 gcr.io/kubebuilder/kube-rbac-proxy:v0.11.0
docker save gcr.io/kubebuilder/kube-rbac-proxy:v0.11.0 > kube-rabc-proxy.tar
ctr -n k8s.io image import kube-rabc-proxy.tar
运行:
make deploy IMG="example.com/nginx-operator:v0.0.1"
kubectl apply -f config/samples/demo_v1alpha1_nginx.yaml
kubectl delete -f config/samples/demo_v1alpha1_nginx.yaml
make undeploy
关于 Kubernetes 有状态应用程序控制器 Operator 介绍和简单使用 就先到这里了,这里只是简单的演示了官方文档(Overview | Operator SDK)里的示例,后面会有企业实战案例,请小伙伴耐心等待哦,有疑问的小伙伴欢迎给我留言哦,会持续更新【云原生和大数据】相关的文章~
留言与评论(共有 0 条评论) “” |