Кластеры
Прежде чем перейти к управлению кластерами в платформе, авторизуйтесь в платформе.
Получить список кластеров
Команда
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
}