Кластеры
На этой странице
Подготовка переменных для авторизации
export CLUSTERNAME=my-cluster
export SH_USERNAME=admin
export SH_PASS="my-password"
export INGRESS="apps.ip-x-x-x-x.shturval.link"
export AUTHENDPOINT="https://auth.$INGRESS"
export BACKENDPOINT="https://back.$INGRESS"
export KUBECONFIG_PATH=/tmp/$CLUSTERNAME.kubeconfig
export COOKIE_PATH=/tmp/cookie
curl -k -v --silent $AUTHENDPOINT/login -c $COOKIE_PATH --data-urlencode "username=$SH_USERNAME" \
--data-urlencode "password=$SH_PASS" &>/dev/null
echo "Got cookie"
code=$(curl -k -b $COOKIE_PATH -v "$AUTHENDPOINT/oauth/authorize?response_type=code&client_id=backend&redirect_uri=localhost/cb" -v 2>&1 | grep -E -o "\<code=[A-Z0-9]+")
echo "Got code"
token=$(curl -k --silent "$AUTHENDPOINT/oauth/token" \
--header 'Content-Type: application/x-www-form-urlencoded' \
-b $COOKIE_PATH \
--data-urlencode 'client_id=backend' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode "$code" \
--data-urlencode "redirect_uri=localhost/cb" | jq -r '.access_token')
echo "Got token"
curl -k --silent "$BACKENDPOINT/api/v1/clusters/$CLUSTERNAME/kubeconfig" -H "Authorization: Bearer $token" -H 'accept: application/json, text/plain, */*' > $KUBECONFIG_PATH
echo "Kubeconfig is ready"
echo "export KUBECONFIG=$KUBECONFIG_PATH"
Получить список кластеров
curl --silent --location --request GET $BACKENDPOINT/api/v1/clusters --header "Authorization: Bearer $TOKEN" | jq -r
В ответе ожидается json такого формата:
{
"items": [
{
"id": "capov",
"clusterName": "capov",
"ingress": "*.apps.ip-10-31-145-222.shturval.link",
"providerType": "capov",
"haType": "ha",
"status": "Provisioned",
"workerCount": 3,
"apiEndpoint": "10.31.145.221:6443",
"networks": [
{
"type": "Service CIDR",
"network": "10.96.0.0/12",
"netmask": ""
},
{
"type": "Pod CIDR",
"network": "172.16.0.0/16",
"netmask": ""
}
]
}
],
"count": 1
}
Создание кластера с провайдером vSphere
export CLUSTERNAME="capvs-new-cluster"
export PROVIDERTEMPLATENAME="capvs-template-name"
curl --silent --location --request POST $BACKENDPOINT/api/v1/platform/providers/clusters/capvs
--header "Authorization: Bearer $TOKEN" | jq -r
--data @<(cat <<EOF
{
"cluster": {
"apiEndpoint": "10.20.30.40",
"clusterName": "$CLUSTERNAME",
"disabledServices": ["shturval-ceph-cephfs", "shturval-rollouts", "shturval-nfs-csi", "shturval-rollouts-crds", "shturval-descheduler", "shturval-ceph-rbd", "shturval-dashboards"],
"enabledServices": ["shturval-policy-manager-crds", "shturval-policy-manager", "shturval-networking", "shturval-local-csi", "shturval-node-config", "shturval-backup-crds", "shturval-scanner-crds", "shturval-vip-provider", "shturval-services-crds", "shturval-update", "shturval-node-config-crds", "shturval-update-crds", "shturval-backup", "shturval-cert-expiration", "shturval-services", "shturval-scanner", "shturval-vip", "shturval-cd-crds", "shturval-cert-manager", "shturval-cert-manager-crds", "shturval-caching-dns", "shturval-cluster-roles", "shturval-policies", "shturval-log-operator-crds", "shturval-ingress-controller", "shturval-cd", "shturval-metrics", "shturval-monitoring-crds", "shturval-log-operator"],
"externalKubeAPILB": false,
"externalingresslb": false,
"haType": "ha",
"ingress": "",
"ingressvip": "10.20.30.41",
"kubernetesVersion": "",
"podSubnet": "172.16.0.0/16",
"secure": false,
"serviceSubnet": "10.96.0.0/12",
"shturvalVersion": "2.6.0"
},
"provider": {
"controlplaneNodeConfig": {
"diskGiB": 50,
"memoryMiB": 8192,
"numCPUs": 4
},
"enableCSI": false,
"identityName": "$PROVIDERTEMPLATENAME",
"workerNodeConfig": {
"diskGiB": 50,
"memoryMiB": 8192,
"numCPUs": 4
},
"workersCount": 3,
"workersScale": null
}
}
При успешном создании кластера с провайдером vSphere, в ответе ожидается json такого формата:
{
"id": "capvs-new-cluster",
"clusterName": "capvs-new-cluster",
"ingress": "",
"providerType": "capvs",
"providerConfigID": "",
"haType": "ha",
"phase": "",
"conditions": null,
"workerCount": 3,
"apiEndpoint": ":6443",
"networks": [{
"type": "PodSubnet",
"network": "172.16.0.0/16",
"netmask": ""
}, {
"type": "ServiceSubnet",
"network": "10.96.0.0/12",
"netmask": ""
}
],
"secure": false,
"annotations": null
}
Удаление кластера
export CLUSTERNAME=“capvs-new-cluster”
curl –location –request DELETE $BACKENDPOINT/api/v1/clusters/$CLUSTERNAME –header “Authorization: Bearer $TOKEN”
Создание кластера с провайдером oVirt
export CLUSTERNAME="capov-new-cluster"
export PROVIDERTEMPLATENAME="capov-template-name"
curl --silent --location --request POST $BACKENDPOINT/api/v1/platform/providers/clusters/capov
--header "Authorization: Bearer $TOKEN" | jq -r
--data @<(cat <<EOF
{
"cluster": {
"apiEndpoint": "10.20.30.40",
"clusterName": "$CLUSTERNAME",
"disabledServices": ["shturval-rollouts-crds", "shturval-ceph-rbd", "shturval-descheduler", "shturval-rollouts", "shturval-ceph-cephfs", "shturval-nfs-csi", "shturval-dashboards"],
"enabledServices": ["shturval-cert-manager-crds", "shturval-vip-provider", "shturval-node-config-crds", "shturval-services", "shturval-log-operator", "shturval-log-operator-crds", "shturval-update", "shturval-scanner-crds", "shturval-cert-manager", "shturval-cert-expiration", "shturval-caching-dns", "shturval-monitoring-crds", "shturval-update-crds", "shturval-cd", "shturval-policy-manager", "shturval-metrics", "shturval-cluster-roles", "shturval-cd-crds", "shturval-networking", "shturval-backup", "shturval-backup-crds", "shturval-policies", "shturval-local-csi", "shturval-services-crds", "shturval-policy-manager-crds", "shturval-vip", "shturval-ingress-controller", "shturval-node-config", "shturval-scanner"],
"externalKubeAPILB": false,
"externalingresslb": false,
"haType": "ha",
"ingress": "",
"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": {
"cpu": {
"cores": 4,
"sockets": 1,
"threads": 1
},
"memory": {
"guaranteedMB": null,
"sizeMB": 8192
},
"osDiskSizeGB": 50
},
"enableCSI": false,
"providerName": "$PROVIDERTEMPLATENAME",
"workerNodeConfig": {
"cpu": {
"cores": 4,
"sockets": 1,
"threads": 1
},
"memory": {
"sizeMB": 8192
},
"osDiskSizeGB": 50
},
"workersCount": 3,
"workersScale": null
}
}
При успешном создании кластера с провайдером oVirt, в ответе ожидается json такого формата:
{
"info": {
"id": "capov-new-cluster",
"clusterName": "capov-new-cluster",
"ingress": "*.apps.ip-10-20-30-31.shturval.link",
"providerType": "capov",
"providerConfigID": "capov-template-name",
"haType": "single",
"phase": "Provisioned",
"workerCount": 2,
"apiEndpoint": "10.20.30.40:6443",
"secure": false,
"createdBy": "admin",
"createdDate": "timestapmptz"
}
Создание кластера с провайдером 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" | jq -r
--data @<(cat <<EOF
{
"cluster": {
"apiEndpoint": "10.20.30.40",
"clusterName": "$CLUSTERNAME",
"disabledServices": ["shturval-rollouts", "shturval-descheduler", "shturval-dashboards", "shturval-ceph-cephfs", "shturval-rollouts-crds", "shturval-nfs-csi", "shturval-ceph-rbd"],
"enabledServices": ["shturval-log-operator-crds", "shturval-monitoring-crds", "shturval-policy-manager-crds", "shturval-services-crds", "shturval-networking", "shturval-local-csi", "shturval-ingress-controller", "shturval-update-crds", "shturval-scanner-crds", "shturval-cert-manager-crds", "shturval-log-operator", "shturval-metrics", "shturval-update", "shturval-backup", "shturval-cd", "shturval-caching-dns", "shturval-node-config", "shturval-scanner", "shturval-cert-manager", "shturval-policies", "shturval-cd-crds", "shturval-node-config-crds", "shturval-services", "shturval-policy-manager", "shturval-vip", "shturval-vip-provider", "shturval-cluster-roles", "shturval-backup-crds", "shturval-cert-expiration"],
"externalKubeAPILB": false,
"externalingresslb": false,
"haType": "ha",
"ingress": "",
"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": {
"controlPlaneSelector": {
"matchLabels": {},
"matchExpressions": []
},
"workerSelector": {
"matchLabels": {},
"matchExpressions": []
},
"name": "$PROVIDERTEMPLATENAME",
"workersCount": 3,
"workersScale": null
}
}
При успешном создании кластера с провайдером Shturval v2, в ответе ожидается json такого формата:
{
"id": "capsmv2-new-cluster",
"clusterName": "capsmv2-new-cluster",
"ingress": "",
"providerType": "shturvalv2",
"providerConfigID": "capsmv2-template-name",
"haType": "ha",
"phase": "",
"conditions": null,
"workerCount": 3,
"apiEndpoint": ":6443",
"networks": [{
"type": "PodSubnet",
"network": "172.16.0.0/16",
"netmask": ""
}, {
"type": "ServiceSubnet",
"network": "10.96.0.0/12",
"netmask": ""
}
],
"secure": false,
"annotations": null
}
Создание кластера с провайдером OpenStack
export CLUSTERNAME="capos-new-cluster"
export PROVIDERTEMPLATENAME="capos-template-name"
export OPENSTACKFLAVOURNAME = "os-flavour-name"
curl --silent --location --request POST $BACKENDPOINT/api/v1/platform/providers/clusters/capos
--header "Authorization: Bearer $TOKEN" | jq -r
--data @<(cat <<EOF
{
"cluster": {
"apiEndpoint": "10.20.30.40",
"clusterName": "$CLUSTERNAME",
"disabledServices": ["shturval-rollouts-crds", "shturval-ceph-cephfs", "shturval-descheduler", "shturval-nfs-csi", "shturval-ceph-rbd", "shturval-rollouts", "shturval-dashboards"],
"enabledServices": ["shturval-caching-dns", "shturval-monitoring-crds", "shturval-services", "shturval-vip", "shturval-node-config-crds", "shturval-cd-crds", "shturval-cert-manager-crds", "shturval-node-config", "shturval-cd", "shturval-metrics", "shturval-services-crds", "shturval-update-crds", "shturval-cert-expiration", "shturval-scanner", "shturval-policy-manager", "shturval-cluster-roles", "shturval-networking", "shturval-log-operator-crds", "shturval-ingress-controller", "shturval-backup-crds", "shturval-local-csi", "shturval-update", "shturval-policy-manager-crds", "shturval-vip-provider", "shturval-log-operator", "shturval-scanner-crds", "shturval-backup", "shturval-policies", "shturval-cert-manager"],
"externalKubeAPILB": false,
"externalingresslb": false,
"haType": "ha",
"ingress": "",
"ingressvip": "10.20.30.41",
"kubernetesVersion": "",
"podSubnet": "172.16.0.0/16",
"secure": false,
"serviceSubnet": "10.96.0.0/12",
"shturvalVersion": "2.6.0"
},
"provider": {
"controlplaneNodeConfig": {
"openstackFlavorName": "STD3-6-12",
"volumeSize": 50,
"volumeType": "ssd"
},
"providerName": "$PROVIDERTEMPLATENAME",
"workerNodeConfig": {
"openstackFlavorName": "$OPENSTACKFLAVOURNAME",
"volumeSize": 50,
"volumeType": "ssd"
},
"workersCount": 3,
"workersScale": null
}
}
При успешном создании кластера с провайдером OpenStack, в ответе ожидается json такого формата:
{
"id":"capos-new-cluster",
"clusterName":"capos-new-cluster",
"ingress":"*.apps.ip-10-20-30-41.shturval.link",
"providerType":"capos",
"providerConfigID":"capos-template-name",
"haType":"ha",
"phase":"Pending",
"conditions":null,
"workerCount":3,
"apiEndpoint":"10.20.30.40",
"networks": [{
"type": "PodSubnet",
"network": "172.16.0.0/16",
"netmask": ""
}, {
"type": "ServiceSubnet",
"network": "10.96.0.0/12",
"netmask": ""
}
],
"secure": false,
"annotations": null
}
Создание кластера с провайдером Basis Dynamix
export CLUSTERNAME="capbd-new-cluster"
export PROVIDERTEMPLATENAME="capbd-template-name"
export NETTYPE = "net-type"
export METWORKNAME = "networkname"
curl --silent --location --request POST $BACKENDPOINT/api/v1/platform/providers/clusters/capbd
--header "Authorization: Bearer $TOKEN" | jq -r
--data @<(cat <<EOF
{
"cluster": {
"apiEndpoint": "10.20.30.40",
"clusterName": "$CLUSTERNAME",
"disabledServices": ["shturval-ceph-rbd", "shturval-descheduler", "shturval-rollouts-crds", "shturval-rollouts", "shturval-ceph-cephfs", "shturval-nfs-csi", "shturval-dashboards"],
"enabledServices": ["shturval-caching-dns", "shturval-monitoring-crds", "shturval-services", "shturval-vip", "shturval-node-config-crds", "shturval-cd-crds", "shturval-cert-manager-crds", "shturval-node-config", "shturval-cd", "shturval-metrics", "shturval-services-crds", "shturval-update-crds", "shturval-cert-expiration", "shturval-scanner", "shturval-policy-manager", "shturval-cluster-roles", "shturval-networking", "shturval-log-operator-crds", "shturval-ingress-controller", "shturval-backup-crds", "shturval-local-csi", "shturval-update", "shturval-policy-manager-crds", "shturval-vip-provider", "shturval-log-operator", "shturval-scanner-crds", "shturval-backup", "shturval-policies", "shturval-cert-manager"],
"externalingresslb": false,
"externalKubeAPILB": false,
"haType": "ha",
"ingress": "",
"ingressvip": "10.20.30.41",
"kubernetesVersion": "",
"podSubnet": "172.16.0.0/16",
"secure": false,
"serviceSubnet": "10.96.0.0/12",
"shturvalVersion": "2.6.0"
},
"provider": {
"controlplaneNodeConfig": {
"cpu": 4,
"memory": 8192,
"networkInterfaces": [
{
"netType": "$NETTYPE",
"networkName": "$METWORKNAME"
}
],
"osDiskSizeGB": 25
},
"providerName": "$PROVIDERTEMPLATENAME",
"workerNodeConfig": {
"cpu": 4,
"memory": 8192,
"networkInterfaces": [
{
"netType": "$NETTYPE",
"networkName": "$METWORKNAME"
}
],
"osDiskSizeGB": 25
},
"workersCount": 3,
"workersScale": null
}
}
При успешном создании кластера с провайдером Basis Dynamix, в ответе ожидается json такого формата:
{
"annotations": null,
"apiEndpoint": "10.20.30.40",
"clusterName": "capbd-new-cluster",
"conditions": null,
"haType": "ha",
"id": "capbd-new-cluster",
"ingress": "*.apps.ip-10-20-30-41.shturval.link",
"networks": [
{
"netmask": "",
"network": "172.16.0.0/16",
"type": "PodSubnet"
},
{
"netmask": "",
"network": "10.96.0.0/12",
"type": "ServiceSubnet"
}
],
"phase": "Pending",
"providerConfigID": "capbd-template-name",
"providerType": "capbd",
"secure": false,
"workerCount": 3
}