Cliquez sur Managed Kubernetes Service dans le menu de gauche, puis sur Créer un cluster.

Sélectionnez une localisation pour votre nouveau cluster.

Choisissez la version mineure de Kubernetes.

Info
Nous recommandons d'utiliser toujours la dernière version stable. Consultez notre page Fin de vie / fin de support pour comprendre notre politique de versions.
Vous pouvez intégrer votre cluster Kubernetes à un réseau privé via le vRack OVHcloud. Pour plus d'informations, consultez notre guide Utiliser le vRack.

Configurez le node pool par défaut. Un node pool est un groupe de nœuds partageant la même configuration. Consultez le guide Gérer les node pools pour plus d'informations.

Définissez la taille du node pool par défaut.

Activez optionnellement l'Autoscaling et définissez la taille minimale et maximale du pool.

Choisissez le mode de facturation (mensuel ou horaire) et activez optionnellement le mode anti-affinité.

Info
L'anti-affinité répartit les nœuds sur différents hyperviseurs pour une meilleure tolérance aux pannes. Les node pools en anti-affinité sont limités à 5 nœuds. La facturation mensuelle ne peut pas être convertie en facturation horaire par la suite.
Saisissez un nom pour votre cluster et cliquez sur Envoyer.

Le cluster sera disponible dans quelques minutes.
Warning
Une fois un cluster créé, la région et l'identifiant du réseau privé ne peuvent plus être modifiés.
Connectez-vous à l'explorateur d'API OVHcloud.
Créer le cluster :
Appelez l'endpoint suivant avec ce corps :
{
"name": "my-cluster",
"region": "GRA7",
"version": "1.34"
}
Info
Nous recommandons d'utiliser toujours la dernière version stable. Consultez notre page Fin de vie / fin de support pour comprendre notre politique de versions.
Notez l'id retourné dans la réponse — il sera nécessaire pour créer le node pool.
Créer un node pool :
Appelez l'endpoint suivant avec ce corps :
{
"name": "my-pool",
"flavorName": "b2-7",
"desiredNodes": 3,
"minNodes": 3,
"maxNodes": 3
}
Warning
Les noms de node pool n'acceptent que les caractères minuscules, les chiffres et le tiret -. Les underscores et les points ne sont pas supportés.
Warning
Une fois un cluster créé, la région et l'identifiant du réseau privé ne peuvent plus être modifiés.
Info
Installez la CLI OVHcloud et configurez vos identifiants avant de commencer.
Créer le cluster :
ovhcloud cloud kube create \
--cloud-project <serviceName> \
--name my-cluster \
--region GRA7 \
--version 1.34
Info
Nous recommandons d'utiliser toujours la dernière version stable. Consultez notre page Fin de vie / fin de support pour comprendre notre politique de versions.
Notez l'id dans la sortie — il sera nécessaire pour créer le node pool.
Créer un node pool :
ovhcloud cloud kube nodepool create <kubeId> \
--cloud-project <serviceName> \
--name my-pool \
--flavor-name b2-7 \
--desired-nodes 3 \
--min-nodes 3 \
--max-nodes 3
Warning
Les noms de node pool n'acceptent que les caractères minuscules, les chiffres et le tiret -. Les underscores et les points ne sont pas supportés.
Warning
Une fois un cluster créé, la région et l'identifiant du réseau privé ne peuvent plus être modifiés.
Info
Installez Terraform CLI (version 0.12.x minimum) avant de commencer.
OVHcloud fournit un provider Terraform disponible dans le registre officiel Terraform.
L'identifiant de votre projet Public Cloud correspond au service_name. Récupérez-le via le bouton Copier dans le presse-papier dans la section Public Cloud.

provider.tf :
terraform {
required_providers {
ovh = {
source = "ovh/ovh"
}
}
}
provider "ovh" {
endpoint = "ovh-eu"
application_key = "<your_access_key>"
application_secret = "<your_application_secret>"
consumer_key = "<your_consumer_key>"
}
Utilisez des variables d'environnement pour éviter de stocker des secrets dans votre code source : OVH_ENDPOINT, OVH_APPLICATION_KEY, OVH_APPLICATION_SECRET, OVH_CONSUMER_KEY.
variables.tf :
variable service_name {
type = string
default = "<your_service_name>"
}
ovh_kube_cluster.tf :
resource "ovh_cloud_project_kube" "my_kube_cluster" {
service_name = "${var.service_name}"
name = "my_kube_cluster"
region = "GRA7"
version = "1.34"
}
resource "ovh_cloud_project_kube_nodepool" "node_pool" {
service_name = "${var.service_name}"
kube_id = ovh_cloud_project_kube.my_kube_cluster.id
name = "my-pool"
flavor_name = "b2-7"
desired_nodes = 3
max_nodes = 3
min_nodes = 3
}
output.tf :
output "kubeconfig" {
value = ovh_cloud_project_kube.my_kube_cluster.kubeconfig
sensitive = true
}
Warning
Les noms de node pool n'acceptent que les caractères minuscules, les chiffres et le tiret -. Les underscores et les points génèrent une erreur gzip: invalid header.
Déployez :
terraform init && terraform apply

CDKTF traduit le code Go en HCL Terraform et utilise le provider Terraform OVHcloud. Définissez les identifiants nécessaires sous forme de variables d'environnement :
export OVH_ENDPOINT="ovh-eu"
export OVH_APPLICATION_KEY="xxx"
export OVH_APPLICATION_SECRET="xxx"
export OVH_CONSUMER_KEY="xxx"
export OVH_CLOUD_PROJECT_SERVICE="xxx"
Initialisez le projet :
mkdir ovhcloud-kube && cd ovhcloud-kube
cdktf init --template=go --providers="ovh/ovh@~>0.37.0" "hashicorp/local" --providers-force-local --local --project-name=ovhcloud-kube
Éditez main.go :
package main
import (
"os"
"path"
"cdk.tf/go/stack/generated/hashicorp/local/file"
local "cdk.tf/go/stack/generated/hashicorp/local/provider"
"cdk.tf/go/stack/generated/ovh/ovh/cloudprojectkube"
"cdk.tf/go/stack/generated/ovh/ovh/cloudprojectkubenodepool"
ovh "cdk.tf/go/stack/generated/ovh/ovh/provider"
"github.com/aws/constructs-go/constructs/v10"
"github.com/aws/jsii-runtime-go"
"github.com/hashicorp/terraform-cdk-go/cdktf"
)
func NewMyStack(scope constructs.Construct, id string) cdktf.TerraformStack {
stack := cdktf.NewTerraformStack(scope, &id)
ovh.NewOvhProvider(stack, jsii.String("ovh"), &ovh.OvhProviderConfig{
Endpoint: jsii.String("ovh-eu"),
})
local.NewLocalProvider(stack, jsii.String("local"), &local.LocalProviderConfig{})
serviceName := os.Getenv("OVH_CLOUD_PROJECT_SERVICE")
kube := cloudprojectkube.NewCloudProjectKube(stack, jsii.String("my_desired_cluster"), &cloudprojectkube.CloudProjectKubeConfig{
ServiceName: jsii.String(serviceName),
Name: jsii.String("my_desired_cluster"),
Region: jsii.String("GRA5"),
})
cdktf.NewTerraformOutput(stack, jsii.String("cluster_version"), &cdktf.TerraformOutputConfig{
Value: kube.Version(),
})
pwd, _ := os.Getwd()
file.NewFile(stack, jsii.String("kubeconfig"), &file.FileConfig{
Filename: jsii.String(path.Join(pwd, "kubeconfig.yaml")),
Content: kube.Kubeconfig(),
FilePermission: jsii.String("0644"),
})
nodePool := cloudprojectkubenodepool.NewCloudProjectKubeNodepool(stack, jsii.String("my-pool"), &cloudprojectkubenodepool.CloudProjectKubeNodepoolConfig{
ServiceName: kube.ServiceName(),
KubeId: kube.Id(),
Name: jsii.String("my-pool"),
DesiredNodes: jsii.Number(1),
MaxNodes: jsii.Number(3),
MinNodes: jsii.Number(1),
FlavorName: jsii.String("b2-7"),
})
cdktf.NewTerraformOutput(stack, jsii.String("nodePoolID"), &cdktf.TerraformOutputConfig{
Value: nodePool.Id(),
})
return stack
}
func main() {
app := cdktf.NewApp(nil)
NewMyStack(app, "ovhcloud")
app.Synth()
}
Déployez :

Le provider Pulumi OVH supporte Go, Python, Node.js/TypeScript, C# et Java. Consultez les exemples.
Définissez les identifiants sous forme de variables d'environnement :
export OVH_ENDPOINT="ovh-eu"
export OVH_APPLICATION_KEY="xxx"
export OVH_APPLICATION_SECRET="xxx"
export OVH_CONSUMER_KEY="xxx"
Créez et initialisez le projet :
mkdir pulumi_ovh_kube && cd pulumi_ovh_kube
pulumi new go -y
go get github.com/ovh/pulumi-ovh/sdk/go/...
Éditez Pulumi.yaml pour ajouter le service name :
config:
serviceName: <your-service-name>
Éditez main.go :
package main
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
"github.com/ovh/pulumi-ovh/sdk/go/ovh/cloudproject"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
serviceName := config.Require(ctx, "serviceName")
myKube, err := cloudproject.NewKube(ctx, "my_desired_cluster", &cloudproject.KubeArgs{
ServiceName: pulumi.String(serviceName),
Name: pulumi.String("my_desired_cluster"),
Region: pulumi.String("GRA5"),
})
if err != nil {
return err
}
ctx.Export("kubeconfig", pulumi.ToSecret(myKube.Kubeconfig))
nodePool, err := cloudproject.NewKubeNodePool(ctx, "my-desired-pool", &cloudproject.KubeNodePoolArgs{
ServiceName: pulumi.String(serviceName),
KubeId: myKube.ID(),
Name: pulumi.String("my-desired-pool"),
DesiredNodes: pulumi.Int(1),
MaxNodes: pulumi.Int(3),
MinNodes: pulumi.Int(1),
FlavorName: pulumi.String("b2-7"),
})
if err != nil {
return err
}
ctx.Export("nodePoolID", nodePool.ID())
return nil
})
}
Exécutez go mod tidy puis déployez :