Кластеры

Прежде чем перейти к управлению кластерами в платформе, авторизуйтесь в платформе.

Получить список кластеров

Команда
curl -k --silent --location --request GET $BACKENDPOINT/api/v1/clusters --header "Authorization: Bearer $token" | jq -r
Пример ответа в формате json
   {
    "items": [
        {
            "id": "shturval-new-cluster",
            "clusterName": "shturval-new-cluster",
            "annotations": [
                {
                    "key": "argocd-project",
                    "value": "https://argocd.apps.link"
                }
            ],
            "providerType": "capov",
            "providerConfigID": "capov-test",
            "apiEndpoint": "10.20.10.20:5555",
            "networks": [
                {
                    "type": "Service CIDR",
                    "network": " 10.96.0.0/12",
                    "netmask": ""
                },
                {
                    "type": "Pod CIDR",
                    "network": "172.16.0.0/16",
                    "netmask": ""
                }
            ],
            "ingress": "*.apps.ip-10-20-300-400.shturval.link",
            "secure": false,
            "phase": "Provisioned",
            "conditions": [
                {
                    "type": "Ready",
                    "status": "True",
                    "lastTransitionTime": "2024-05-27T07:44:37Z"
                },
                {
                    "type": "ControlPlaneInitialized",
                    "status": "True",
                    "lastTransitionTime": "2024-05-27T07:44:37Z"
                },
                {
                    "type": "ControlPlaneReady",
                    "status": "True",
                    "lastTransitionTime": "2024-05-27T07:44:37Z"
                },
                {
                    "type": "InfrastructureReady",
                    "status": "True",
                    "lastTransitionTime": "2024-05-27T07:41:26Z"
                }
            ],
            "controlplaneNodesCount": 1,
            "workersGroups": [
                {
                    "groupName": "default",
                    "workersScale": null,
                    "workersCount": 3
                },
                {
                    "groupName": "infra",
                    "workersScale": null,
                    "workersCount": 3
                }
            ]
        }
    ],
    "count": 1
}

Создание кластера с провайдером vSphere

Команда
export CLUSTERNAME="capvs-new-cluster"
export PROVIDERTEMPLATENAME="capvs-template-name"

curl -k --silent --location --request POST $BACKENDPOINT/api/v1/platform/providers/clusters/capvs
--header "Authorization: Bearer $token"
--data @<(cat <<EOF
{
  "cluster": {
    "apiEndpoint": "10.20.30.40",
    "clusterName": "$CLUSTERNAME",
    "controlPlaneNodesCount": 1,
    "enabledServices": ["shturval-cert-manager-crds","shturval-vip-provider","shturval-update-crds","shturval-monitoring-crds","shturval-local-csi","shturval-policy-manager-crds","shturval-vip","shturval-node-config-crds","shturval-services","shturval-services-crds","shturval-caching-dns","shturval-cert-manager","shturval-update","shturval-networking","shturval-node-config"
    ],
    "externalKubeAPILB": false,
    "externalingresslb": false,
    "ingress": "",
    "ingressvip": "10.20.30.42",
    "kubernetesVersion": null,
    "podSubnet": "172.16.0.0/16",
    "secure": false,
    "serviceSubnet": " 10.96.0.0/12",
    "shturvalVersion": "2.6.0"
  },
  "provider": {
    "controlplaneNodeConfig": {
      "capvsNodeConfig": {
        "diskGiB": 60,
        "memoryMiB": 1200,
        "numCPUs": 2
      },
      "nodeConfig": {
        "groupName": "control-plane",
        "roles": [
          {
            "name": "node-role.kubernetes.io/control-plane"
          }
        ]
      }
    },
    "enableCSI": false,
    "identityName": "$PROVIDERTEMPLATENAME",
    "workerNodeConfigs": [
              {
        "capvsNodeConfig": {
          "diskGiB": 60,
          "memoryMiB": 1200,
          "numCPUs": 2
        },
        "nodeConfig": {
          "groupName": "default",
          "roles": [
            {
              "name": "node-role.kubernetes.io/workers"
            }
          ]
        },
        "workersCount": 3
              },
      {
        "capvsNodeConfig": {
          "diskGiB": 60,
          "memoryMiB": 1200,
          "numCPUs": 2
        },
        "nodeConfig": {
          "groupName": "infra",
          "roles": [
            {
              "name": "node-role.kubernetes.io/infra"
            }
          ]
        },
        "workersCount": 3
      }
    ]
  }
}
EOF
) | jq -r
Пример ответа в формате json при успешном создании кластера с провайдером vSphere
    {
    "id": "capvs-new-cluster",
    "clusterName": "capvs-new-cluster",
    "annotations": null,
    "providerType": "capvs",
    "providerConfigID": "",
    "apiEndpoint": "10.20.30.40:5555",
    "networks": [
        {
            "type": "PodSubnet",
            "network": "172.16.0.0/16",
            "netmask": ""
        },
        {
            "type": "ServiceSubnet",
            "network": " 10.96.0.0/12",
            "netmask": ""
        }
    ],
    "ingress": "",
    "secure": false,
    "phase": "",
    "conditions": null,
    "workersGroups": null
}

Удаление кластера

Команда
export CLUSTERNAME="capvs-new-cluster"

curl -k --location --request DELETE $BACKENDPOINT/api/v1/clusters/$CLUSTERNAME --header "Authorization: Bearer $token"

Создание кластера с провайдером oVirt

Команда
export CLUSTERNAME="capov-new-cluster"
export PROVIDERTEMPLATENAME="capov-template-name"

curl -k --silent --location --request POST $BACKENDPOINT/api/v1/platform/providers/clusters/capov
--header "Authorization: Bearer $token"
--data @<(cat <<EOF
{
  "cluster": {
    "apiEndpoint": "10.20.30.40",
    "clusterName": "$CLUSTERNAME",
    "controlPlaneNodesCount": 1,
    "enabledServices": ["shturval-cert-manager-crds","shturval-vip-provider","shturval-update-crds","shturval-monitoring-crds","shturval-local-csi","shturval-policy-manager-crds","shturval-vip","shturval-node-config-crds","shturval-services","shturval-services-crds","shturval-caching-dns","shturval-cert-manager","shturval-update","shturval-networking","shturval-node-config"
    ],
    "externalKubeAPILB": false,
    "externalingresslb": false,
    "ingress": "",
    "ingressvip": "10.20.30.42",
    "podSubnet": "172.16.0.0/16",
    "secure": false,
    "serviceSubnet": " 10.96.0.0/12",
    "shturvalVersion": "2.6.0"
  },
  "provider": {
    "controlplaneNodeConfig": {
      "capvsNodeConfig": {
        "cpu": {
          "cores": 4,
          "sockets": 1,
          "threads": 1
        },
        "memory": {
          "guaranteedMB": 1200,
          "sizeMB": 1200
        },
        "osDiskSizeGB": 50
      },
      "nodeConfig": {
        "groupName": "control-plane",
        "roles": [
          {
            "name": "node-role.kubernetes.io/control-plane"
          }
        ]
      }
    },
    "enableCSI": false,
    "providerName": "$PROVIDERTEMPLATENAME",
    "workerNodeConfigs": [
      {
        "capovNodeConfig": {
         "cpu": {
            "cores": 4,
            "sockets": 1,
            "threads": 1
          },
          "memory": {
            "sizeMB": 1200
          },
          "osDiskSizeGB": 60
        },
        "nodeConfig": {
          "groupName": "default",
          "roles": [
            {
              "name": "node-role.kubernetes.io/workers"
            }
          ]
        },
        "workersCount": 3
      },
           {
        "capovNodeConfig": {
         "cpu": {
            "cores": 4,
            "sockets": 1,
            "threads": 1
          },
          "memory": {
            "sizeMB": 1200
          },
          "osDiskSizeGB": 60
        },
        "nodeConfig": {
          "groupName": "infra",
          "roles": [
            {
              "name": "node-role.kubernetes.io/infra"
            }
          ]
        },
        "workersCount": 3
      }
    ]
  }
}
EOF
) | jq -r
Пример ответа в формате json при успешном создании кластера с провайдером oVirt
    {
    "id": "capov-new-cluster",
    "clusterName": "capov-new-cluster",
    "annotations": null,
    "providerType": "capov",
    "providerConfigID": "capov-template-name",
    "apiEndpoint": "10.20.30.40:5555",
    "networks": [
        {
            "type": "PodSubnet",
            "network": "172.16.0.0/16",
            "netmask": ""
        },
        {
            "type": "ServiceSubnet",
            "network": " 10.96.0.0/12",
            "netmask": ""
        }
    ],
    "ingress": "",
    "secure": false,
    "phase": "Provisioned",
    "conditions": null,
    "controlplaneNodesCount": 1,
    "workersGroups": null
}

Создание кластера с провайдером Shturvalv2

Команда
export CLUSTERNAME="capsmv2-new-cluster"
export PROVIDERTEMPLATENAME="capsmv2-template-name"

curl --silent --location --request POST $BACKENDPOINT/api/v1/platform/providers/clusters/capsmv2
--header "Authorization: Bearer $token"
--data @<(cat <<EOF
{
  "cluster": {
    "apiEndpoint": "10.20.30.40",
    "clusterName": "$CLUSTERNAME",
    "enabledServices": ["shturval-local-csi","shturval-services","shturval-update","shturval-vip","shturval-monitoring-crds","shturval-caching-dns","shturval-node-config","shturval-services-crds","shturval-cert-manager-crds","shturval-cert-manager","shturval-node-config-crds","shturval-policy-manager-crds","shturval-networking","shturval-vip-provider","shturval-update-crds"
    ],
    "externalKubeAPILB": false,
    "externalingresslb": false,
    "ingress": "",
    "controlPlaneNodesCount": 1,
    "ingressvip": "10.20.30.42",
    "kubernetesVersion": null,
    "podSubnet": "172.16.0.0/16",
    "secure": false,
    "serviceSubnet": " 10.96.0.0/12",
    "shturvalVersion": ""
  },
  "provider": {
    "controlPlaneNodeConfig": {
      "controlPlaneSelector": {
        "matchExpressions": [],
        "matchLabels": {}
      },
      "nodeConfig": {
        "groupName": "control-plane",
        "roles": [
          {
            "name": "node-role.kubernetes.io/control-plane"
          }
        ]
      }
    },
    "name": "$PROVIDERTEMPLATENAME",
    "workerNodeConfigs": [
      {
        "nodeConfig": {
          "groupName": "default",
          "roles": [
            {
              "name": "node-role.kubernetes.io/workers"
            }
          ]
        },
        "workersCount": 3,
        "workerSelector": {
          "matchExpressions": [],
          "matchLabels": {}
        }
      },
      {
        "nodeConfig": {
          "groupName": "infra",
          "roles": [
            {
              "name": "node-role.kubernetes.io/infra"
            }
          ]
        },
        "workersCount": 3,
        "workerSelector": {
          "matchExpressions": [],
          "matchLabels": {}
        }
      }
    ]
  }
}
EOF
) | jq -r
Пример ответа в формате json при успешном создании кластера с провайдером Shturval v2
{
    "id": "capsmv2-new-cluster",
    "clusterName": "capsmv2-new-cluster",
    "annotations": null,
    "providerType": "shturvalv2",
    "providerConfigID": "capsmv2-template-name",
    "apiEndpoint": "10.20.30.40:5555",
    "networks": [
        {
            "type": "PodSubnet",
            "network": "172.16.0.0/16",
            "netmask": ""
        },
        {
            "type": "ServiceSubnet",
            "network": " 10.96.0.0/12",
            "netmask": ""
        }
    ],
    "ingress": "",
    "secure": false,
    "phase": "",
    "conditions": null,
    "workersGroups": null
}

Создание кластера с провайдером OpenStack

Команда
export CLUSTERNAME="capos-new-cluster"
export PROVIDERTEMPLATENAME="capos-template-name"
export OPENSTACKFLAVORNAME="os-flavor-name"

curl -k --silent --location --request POST $BACKENDPOINT/api/v1/platform/providers/clusters/capos
--header "Authorization: Bearer $token"
--data @<(cat <<EOF
{
  "cluster": {
    "clusterName": "$CLUSTERNAME",
    "enabledServices": [
      "shturval-monitoring-crds","shturval-vip","shturval-services-crds","shturval-caching-dns","shturval-cert-manager","shturval-update-crds","shturval-services","shturval-update","shturval-networking","shturval-node-config-crds","shturval-node-config","shturval-cert-manager-crds","shturval-vip-provider","shturval-local-csi","shturval-policy-manager-crds"
    ],
    "externalKubeAPILB": false,
    "externalingresslb": true,
    "ingress": "",
    "controlPlaneNodesCount": 1,
    "ingressvip": "ip-10-20-30-41",
    "kubernetesVersion": null,
    "podSubnet": "172.16.0.0/16",
    "secure": false,
    "serviceSubnet": " 10.96.0.0/12",
    "shturvalVersion": "2.5.2"
  },
  "provider": {
    "controlplaneNodeConfig": {
      "caposNodeConfig": {
        "openstackFlavorName": "STD3-4-8",
        "volumeType": "ceph-hdd",
        "volumeSize": 2
      },
      "nodeConfig": {
        "groupName": "control-plane",
        "roles": [
          {
            "name": "node-role.kubernetes.io/control-plane"
          }
        ]
      }
    },
    "providerName": "$PROVIDERTEMPLATENAME",
    "workerNodeConfigs": [
      {
        "nodeConfig": {
          "groupName": "default",
          "roles": [
            {
              "name": "node-role.kubernetes.io/workers"
            }
          ]
        },
        "workersCount": 3,
        "caposNodeConfig": {
          "openstackFlavorName": "$OPENSTACKFLAVORNAME",
          "volumeSize": 2,
          "volumeType": "ceph-hdd"
        }
      },
      {
        "nodeConfig": {
          "groupName": "infra",
          "roles": [
            {
              "name": "node-role.kubernetes.io/infra"
            }
          ]
        },
        "workersCount": 3,
        "caposNodeConfig": {
          "openstackFlavorName": "$OPENSTACKFLAVORNAME",
          "volumeSize": 2,
          "volumeType": "ceph-hdd"
        }
      }
    ]
  }
}
EOF
) | jq -r
Пример ответа в формате json при успешном создании кластера с провайдером OpenStack
{
    "id": "capos-new-cluster",
    "clusterName": "capos-new-cluster",
    "annotations": null,
    "providerType": "capos",
    "providerConfigID": "",
    "apiEndpoint": "",
    "networks": [
        {
            "type": "PodSubnet",
            "network": "172.16.0.0/16",
            "netmask": ""
        },
        {
            "type": "ServiceSubnet",
            "network": " 10.96.0.0/12",
            "netmask": ""
        }
    ],
    "ingress": "*.cluster.ip-10-20-30-41.shturval.link",
    "secure": false,
    "phase": "Pending",
    "conditions": null,
    "workersGroups": null
}

Создание кластера с провайдером Basis Dynamix

Команда
export CLUSTERNAME="capbd-new-cluster"
export PROVIDERTEMPLATENAME="capbd-template-name"
export NETTYPE="net-type"
export NETWORKNAME="networkname"

curl -k --silent --location --request POST $BACKENDPOINT/api/v1/platform/providers/clusters/capbd
--header "Authorization: Bearer $token"
--data @<(cat <<EOF
{
  "cluster": {
    "apiEndpoint": "10.20.30.40",
    "clusterName": "$CLUSTERNAME",
    "enabledServices": ["shturval-node-config-crds","shturval-backup","shturval-services-crds","shturval-services","shturval-rollouts-crds","shturval-descheduler","shturval-vip-provider","shturval-ingress-controller","shturval-policy-manager-crds","shturval-networking","shturval-metrics-collector","shturval-monitoring-crds","shturval-scanner","shturval-caching-dns","shturval-vip","shturval-node-config","shturval-cert-expiration","shturval-update-crds","shturval-backup-crds","shturval-cd-crds","shturval-cert-manager-crds","shturval-cert-manager","shturval-local-csi","shturval-update","shturval-scanner-crds","shturval-policy-manager"
    ],
    "externalKubeAPILB": false,
    "externalingresslb": true,
    "ingress": "",
    "controlPlaneNodesCount": 1,
    "ingressvip": "10.20.30.41",
    "kubernetesVersion": null,
    "podSubnet": "172.16.0.0/16",
    "secure": false,
    "serviceSubnet": " 10.96.0.0/12",
    "shturvalVersion": "2.6.0"
  },
  "provider": {
    "controlplaneNodeConfig": {
      "capbdNodeConfig": {
        "cpu": 4,
        "memory": 12000,
        "networkInterfaces": [{
            "netType": "$NETTYPE",
            "networkName": "$NETWORKNAME"
          }],
        "osDiskSizeGB": 60
      },
      "nodeConfig": {
        "groupName": "control-plane",
        "roles": [
          {
            "name": "node-role.kubernetes.io/control-plane"
          }
        ]
      }
    },
    "providerName": "$PROVIDERTEMPLATENAME",
    "workerNodeConfigs": [
      {
        "nodeConfig": {
          "groupName": "default",
          "roles": [
            {
              "name": "node-role.kubernetes.io/workers"
            }
          ]
        },
        "workersCount": 3,
        "capbdNodeConfig": {
          "cpu": 4,
          "memory": 12000,
          "osDiskSizeGB": 60
        }
      },
      {
        "nodeConfig": {
          "groupName": "infra",
          "roles": [
            {
              "name": "node-role.kubernetes.io/infra"
            }
          ]
        },
        "workersCount": 3,
        "capbdNodeConfig": {
          "cpu": 4,
          "memory": 12000,
          "osDiskSizeGB": 60
        }
      }
    ]
  }
}
EOF
) | jq -r
Пример ответа в формате json при успешном создании кластера с провайдером Basis Dynamix
{
    "id": "capbd-new-cluster",
    "clusterName": "capbd-new-cluster",
    "annotations": null,
    "providerType": "capbd",
    "providerConfigID": "capbd-template-name",
    "apiEndpoint": "10.20.30.40",
    "networks": [
        {
            "type": "PodSubnet",
            "network": "172.16.0.0/16",
            "netmask": ""
        },
        {
            "type": "ServiceSubnet",
            "network": " 10.96.0.0/12",
            "netmask": ""
        }
    ],
    "ingress": "*.apps.ip-10-20-30-41.shturval.link",
    "secure": false,
    "phase": "Pending",
    "conditions": null,
    "workersGroups": null
}
×