Machine API Operator#
Machine API Operator (MAO) - оператор, который обеспечивает управление физическими серверами и виртуальными машинамии, автоматизацию развертывания виртуальных машин в кластере DropApp Plus. Путем использования машинного API оператор позволяет управлять жизненным циклом виртуальных машин, их масштабированием, мониторингом и управлением ресурсами.
Machine API Operator поддерживает автоматическое назначение IP-адресов при создании новых виртуальных машин.
Machine API Operator управляет жизненным циклом CRD - пользовательского определения ресурса, контроллеров и объектов RBAC определенного назначения, которые расширяют Kubernetes API. Это позволяет декларативно передавать желаемое состояние машин в кластере.
Контроллеры:
MachineSet Controller - контроллер машинного набора;
Убедитесь в наличии ожидаемого количества реплик и заданной конфигурации провайдера для набора машин.
Machine Controller - контроллер машины;
Убедитесь, что экземпляр
providerсоздан для объектаMachineв данном поставщике.machine-api-provider-aws;
machine-api-provider-gcp;
machine-api-provider-azure;
cluster-api-provider-libvirt;
cluster-api-provider-openstack;
cluster-api-provider-baremetal;
cluster-api-provider-ovirt;
cluster-api-provider-ibmcloud;
Nodelink Controller - контроллер Nodelink;
Убедитесь, что у машин есть nodeRef на основе IP-адресов или соответствия
providerId. Пометьте узлы меткой, содержащей имя машины.MachineHealthCheck Controller - контроллер проверки работоспособности машины.
Убедитесь, что машины, на которые нацелены объекты
MachineHealthCheck, удовлетворяют критериям работоспособности или исправлены иным образом.
Последовательность выполнения#
Создайте новую машину, применив манифест, представляющий экземпляр CRD-машины:
Пример манифеста
apiVersion: machine.openshift.io/v1beta1
kind: Machine
metadata:
labels:
machine.openshift.io/cluster-api-cluster: clusterID
machine.openshift.io/cluster-api-machine-role: role
machine.openshift.io/cluster-api-machine-type: role
name: machineName
namespace: openshift-machine-api
spec:
providerSpec:
value:
kind: AWSMachineProviderConfig
ami:
id: ami-0df3f99538fbef10f
apiVersion: awsproviderconfig.openshift.io/v1beta1
blockDevices:
- ebs:
iops: 0
volumeSize: 120
volumeType: gp2
credentialsSecret:
name: aws-cloud-credentials
deviceIndex: 0
iamInstanceProfile:
id: clusterID-worker-profile
instanceType: m5.large
placement:
availabilityZone: us-east-1a
region: us-east-1
securityGroups:
- filters:
- name: tag:Name
values:
- clusterID-worker-sg
subnet:
filters:
- name: tag:Name
values:
- clusterID-private-us-east-1a
tags:
- name: kubernetes.io/cluster/clusterID
value: owned
userDataSecret:
name: worker-user-data
Метка machine.openshift.io/cluster-api-cluster будет использоваться контроллерами для поиска нужного экземпляра облака.
Установите другие метки для предоставления пользователям удобного способа получения групп машин:
machine.openshift.io/cluster-api-machine-role: worker
machine.openshift.io/cluster-api-machine-type: worker
Разработка#
Сгенерируйте код:
make generateСоздайте сборку:
make buildИзвлеките
images.jsonв файл изinstall/0000_30_machine-api-operator_01_images.configmap.yamlи запустите:./bin/machine-api-operator start --kubeconfig ${HOME}/.kube/config --images-json=path/to/images.jsonСоздайте образ:
make image
Machine API Operator предназначен для работы совместно с Cluster Version Operator.
Развертывание Machine API Operator с Kubemark#
Разверните MAO через DropApp Plus:
kustomize build | oc apply -f -Предварительные требования для развертывания Kubemark actuator:
kustomize build config | oc apply -f -Создайте
clusterinfrastructure.config.openshift.io, чтобы сообщить MAO о развертывании поставщикаkubemark:apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: infrastructures.config.openshift.io spec: group: config.openshift.io names: kind: Infrastructure listKind: InfrastructureList plural: infrastructures singular: infrastructure scope: Cluster versions: - name: v1 served: true storage: true --- apiVersion: config.openshift.io/v1 kind: Infrastructure metadata: name: cluster status: platform: kubemarkЗапустите файл конфигурации
config/kubemark-config-infra.yaml:oc apply -f config/kubemark-config-infra.yaml
Результат#
Machine API Operator доступен для настройки.