• Operator SDK开发ansible operator


     这里我们仅介绍ansible operator的开发

    准备:

    - 首先安装operator-sdk

    - 有一个k8 cluster并且有cluster-admin的权限

    - 一个image resigry, 如 hub.docker.com, quay.io

    开始:

    我们将创建一个简单的project, 来学习相关的流程

    1. 创建一个project
     

    1. mkdir memcached-operator
    2. cd memcached-operator
    3. operator-sdk init --plugins=ansible --domain docker.hub.com

    查看生成的本地目录为

     2.创建memcached api
     

    operator-sdk create api --group cache --version v1alpha1 --kind Memcached --generate-role

    执行完成后,我们看到project, watches, roles, config 等文件更新了


    3.编辑manager

    vi roles/memcached/tasks/main.yml

    使其内容为

    1. ---
    2. # tasks file for Memcached
    3. - name: start memcached
    4. kubernetes.core.k8s:
    5. definition:
    6. kind: Deployment
    7. apiVersion: apps/v1
    8. metadata:
    9. name: '{{ ansible_operator_meta.name }}-memcached'
    10. namespace: '{{ ansible_operator_meta.namespace }}'
    11. spec:
    12. replicas: "{{size}}"
    13. selector:
    14. matchLabels:
    15. app: memcached
    16. template:
    17. metadata:
    18. labels:
    19. app: memcached
    20. spec:
    21. containers:
    22. - name: memcached
    23. command:
    24. - memcached
    25. - -m=64
    26. - -o
    27. - modern
    28. - -v
    29. image: "docker.io/memcached:1.4.36-alpine"
    30. ports:
    31. - containerPort: 11211

    可以看到,这个task的作用是定义个dc并定义了replicas。
    实际上,这个task就是定义culster资源和状态的文件。

    4. 为manager变量设置值
    默认值

    vi roles/memcached/defaults/main.yml

    使其内容为

    1. ---
    2. # defaults file for Memcached
    3. size: 1


    配置值

    vi config/samples/cache_v1alpha1_memcached.yaml


    使其内容为

    1. apiVersion: cache.hub.docker.com/v1alpha1
    2. kind: Memcached
    3. metadata:
    4. name: memcached-sample
    5. spec:
    6. # TODO(user): Add fields here
    7. size: 3

    5. 更改makefile中的image tag

    1. 将 IMG ?= controller:latest
    2. 改为 IMG ?= $(IMAGE_TAG_BASE):$(VERSION)


    6.编包并push

    make docker-build docker-push IMG="cara/memcached-operator:v0.0.1"

    7.运行bundle

     operator-sdk run bundle docker.io/cara/memcached-operator:v0.0.1

  • 相关阅读:
    Java项目:JSP民宿预订网站信息管理平台
    Chrome中如何导出和导入书签
    仿QQ音乐(HTML+CSS)
    Layui快速入门之第十二节 图标
    智能优化算法:孔雀优化算法-附代码
    Java集合详解
    2022年固定资产管理系统的概况
    【C++ 操作符重载:定制自己的运算符行为】
    RTC实验
    excel 点击单元格的内容 跳转到其他sheet设置
  • 原文地址:https://blog.csdn.net/solinger/article/details/125483758