Tous les produits
Search
Centre de documentation

Elastic Container Instance:Déployer une CRD DataCache

Dernière mise à jour :Aug 11, 2026

Le chargement de jeux de données volumineux dans des conteneurs ECI ralentit souvent le démarrage des pods. La CRD DataCache permet aux utilisateurs Kubernetes de précharger les données dans un cache, afin que les conteneurs démarrent avec les données déjà disponibles. Cette rubrique explique comment déployer le contrôleur de la CRD DataCache dans un cluster Kubernetes à l'aide de Helm (recommandé) ou d'un fichier YAML.

Facturation

Type de cluster Facturation
Cluster Container Service for Kubernetes (ACK) La CRD DataCache se déploie sur un nœud Elastic Compute Service (ECS) existant. Aucun frais supplémentaire n'est appliqué.
Cluster ACK Serverless Le déploiement de la CRD DataCache crée un pod doté de 0,25 vCPU et de 0,5 GiB de mémoire. Ce pod est facturé selon la formule suivante : Prix = (0,25 × prix unitaire des vCPU + 0,5 × prix unitaire de la mémoire) × durée d'exécution. Pour plus d'informations sur les tarifs, consultez la section Facturation des instances de conteneur élastiques.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un ID AccessKey et un secret AccessKey disposant des autorisations nécessaires pour appeler les API DataCache. Pour plus d'informations, consultez la section Créer une paire de clés AccessKey

    Important

    Le compte Alibaba Cloud ou l'utilisateur RAM associé à la paire de clés AccessKey doit disposer des autorisations permettant d'appeler les API liées à DataCache.

  • L'ID de région du cluster

Déploiement avec Helm (recommandé)

Helm constitue la méthode de déploiement recommandée. Elle gère les dépendances et simplifie les mises à jour.

Helm 3.7.0 ou version ultérieure

  1. Connectez-vous au cluster Kubernetes.

  2. Vérifiez la version de Helm.

    helm version
  3. Si vous utilisez Helm 3.7.x, activez la prise en charge du registre OCI.

    export HELM_EXPERIMENTAL_OCI=1
    Important

    Helm 3.7.x requiert cet indicateur pour extraire les charts depuis des registres compatibles OCI. Helm 3.8.0 et les versions ultérieures activent la prise en charge OCI par défaut ; ignorez cette étape si vous utilisez la version 3.8.0 ou supérieure.

  4. Définissez les variables d'environnement.

    export REPO="oci://eci-release-registry.cn-hangzhou.cr.aliyuncs.com/datacache/datacache-operator"
    export AK='<AccessKey ID>'
    export SK='<AccessKey secret>'
    export REGION='<Region ID>'
    Important

    La valeur REPO pointe vers le Container Registry Alibaba Cloud qui héberge le chart de l'opérateur DataCache. Ne modifiez pas l'ID de région intégré dans l'URL.

  5. Déployez la CRD DataCache.

    helm install datacache-operator $REPO --set accessKey=$AK --set secretKey=$SK --set regionId=$REGION
  6. Vérifiez le déploiement.

    kubectl get pods -n datacache-controller

    Le pod du contrôleur doit être à l'état Running :

    NAME                                          READY   STATUS    RESTARTS   AGE
    aliyun-datacache-controller-xxxxxxxxx-xxxxx   1/1     Running   0          30s

Helm antérieur à 3.7.0

  1. Connectez-vous au cluster Kubernetes.

  2. Vérifiez la version de Helm.

    helm version
  3. Installez le plug-in Container Registry pour Helm. Si vous avez accès à GitHub, exécutez la commande suivante :

    helm plugin install https://github.com/AliyunContainerService/helm-acr

    Si votre connexion réseau à GitHub est instable, utilisez plutôt le miroir Alibaba Cloud :

    git clone https://github.com/AliyunContainerService/helm-acr.git
    sed -i 's/github.com/helm-acr-releases.oss-cn-hangzhou.aliyuncs.com/g' helm-acr/scripts/install_plugin.sh
    helm plugin install helm-acr
    Important

    La commande sed remplace l'URL de téléchargement GitHub dans le script d'installation par une URL de miroir Alibaba Cloud (helm-acr-releases.oss-cn-hangzhou.aliyuncs.com), plus fiable sur les réseaux dont l'accès à GitHub est restreint.

  4. Ajoutez le dépôt Helm DataCache.

    helm repo add datacache acr://eci-release-chart.cn-hangzhou.cr.aliyuncs.com/datacache/datacache-operator
    helm repo update
  5. Définissez les variables d'environnement.

    export REPO="datacache/datacache-operator"
    export AK='<AccessKey ID>'
    export SK='<AccessKey secret>'
    export REGION='<Region ID>'
  6. Déployez la CRD DataCache.

    helm install datacache-operator $REPO --set accessKey=$AK --set secretKey=$SK --set regionId=$REGION
  7. Vérifiez le déploiement.

    kubectl get pods -n datacache-controller

    Le pod du contrôleur doit être à l'état Running :

    NAME                                          READY   STATUS    RESTARTS   AGE
    aliyun-datacache-controller-xxxxxxxxx-xxxxx   1/1     Running   0          30s

Déploiement à l'aide d'un fichier YAML

  1. Connectez-vous au cluster Kubernetes.

  2. Créez un fichier nommé aliyun-datacache-controller.yaml contenant le code ci-dessous. Remplacez les trois valeurs fictives indiquées par *** dans le modèle : l'ID AccessKey (ligne 13), le secret AccessKey (ligne 14) et l'ID de région (ligne 211).

    apiVersion: v1
    kind: Namespace
    metadata:
      name: datacache-controller
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: accesskey.eci.aliyun.com
      namespace: datacache-controller
    type: Opaque
    stringData:
      accessKey: ***            # Enter the AccessKey ID.
      secretKey: ***            # Enter the AccessKey secret.
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      name: datacaches.eci.aliyun.com
    spec:
      group: eci.aliyun.com
      scope: Cluster
      names:
        kind: DataCache
        plural: datacaches
        singular: datacache
        shortNames:
          - edc
        categories:
          - all
      versions:
        - name: v1alpha1
          served: true
          storage: true
          subresources:
            status: {}
          schema:
            openAPIV3Schema:
              type: object
              required:
                - spec
              properties:
                spec:
                  type: object
                  required:
                    - path
                    - dataSource
                  properties:
                    bucket:
                      type: string
                      default: default
                      description: the name of a bucket. The default name is default. The bucket named eci-system is reserved to store common caches of Elastic Container Instance and cannot be used as a value.
                    path:
                      type: string
                      description: the directory of the bucket.
                    dataSource:
                      type: object
                      description: the cache data source.
                      properties:
                        type:
                          type: string
                          description: the property of the cache data source. Valid values: NAS, OSS, URL, and SNAPSHOT.
                        options:
                          type: object
                          description: the options for a specific type of cache data source. For more information, see the DataCache documentation.
                          x-kubernetes-preserve-unknown-fields: true
                    size:
                      type: integer
                      default: 20
                      description: the size of the data cache. You must plan the size. Default value: 20 GiB, which is the minimum size of an elastic block storage (EBS).
                    retentionDays:
                      type: integer
                      description: the retention period of the data cache. By default, data caches never expire.
                    netConfig:
                      type: object
                      properties:
                        securityGroupId:
                          type: string
                          description: the ID of the security group.
                        vSwitchId:
                          type: string
                          description: the ID of the vSwitch.
                        eipInstanceId:
                          type: string
                          description: the ID of the elastic IP address (EIP). If no source network address translation (SNAT) entry is created for the vSwitch, you can bind an EIP to pull Internet data.
                        eipCreateParam:
                          type: object
                          description: the parameter that is used to create an EIP. You can specify EipInstanceId or EipCreateParam.
                          properties:
                            bandwidth:
                              type: integer
                              description: the public bandwidth. Unit: MB. Default value: 5.
                            commonBandwidthPackage:
                              type: string
                              description: the EIP bandwidth plan.
                            internetChargeType:
                              type: string
                              description: the billing method of the EIP.
                            publicIpAddressPoolId:
                              type: string
                              description: the IP address pool.
                            ISP:
                              type: string
                              description: the EIP line type.
                status:
                  type: object
                  properties:
                    status:
                      type: string
                    progress:
                      type: string
                    snapshotId:
                      type: string
                    dataCacheId:
                      type: string
          additionalPrinterColumns:
            - name: Age
              type: date
              jsonPath: .metadata.creationTimestamp
            - name: dataCacheId
              type: string
              jsonPath: .status.dataCacheId
            - name: Status
              type: string
              jsonPath: .status.status
            - name: Progress
              type: string
              jsonPath: .status.progress
            - name: Bucket
              type: string
              jsonPath: .spec.bucket
            - name: Path
              type: string
              jsonPath: .spec.path
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: aliyun-datacache-controller
      namespace: datacache-controller
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: aliyun-datacache-controller
      namespace: datacache-controller
    rules:
      - apiGroups:
          - "eci.aliyun.com"
        resources:
          - datacaches
          - datacaches/status
        verbs:
          - "*"
      - apiGroups:
          - ""
        resources:
          - events
        verbs:
          - create
          - patch
          - update
      - apiGroups:
          - ""
        resources:
          - configmaps
        verbs:
          - get
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: aliyun-datacache-controller
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: aliyun-datacache-controller
    subjects:
      - kind: ServiceAccount
        name: aliyun-datacache-controller
        namespace: datacache-controller
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: aliyun-datacache-controller
      namespace: datacache-controller
    spec:
      selector:
        matchLabels:
          app: aliyun-datacache-controller
      replicas: 1
      template:
        metadata:
          labels:
            app: aliyun-datacache-controller
        spec:
          serviceAccountName: aliyun-datacache-controller
          containers:
          - name: datacache-operator
            image: eci-release-registry.cn-hangzhou.cr.aliyuncs.com/datacache/datacache-operator:latest
            resources:
              limits:
                memory: "512Mi"
                cpu: "250m"
              requests:
                memory: "64Mi"
                cpu: "50m"
            env:
            - name: REGION_ID
              value: *** # Specify the actual region ID.
            - name: ACCESS_KEY
              valueFrom:
                secretKeyRef:
                  name: accesskey.eci.aliyun.com
                  key: accessKey
            - name: SECRET_KEY
              valueFrom:
                secretKeyRef:
                  name: accesskey.eci.aliyun.com
                  key: secretKey
  3. Déployez la CRD DataCache.

    kubectl apply -f aliyun-datacache-controller.yaml
  4. Vérifiez le déploiement.

    kubectl get pods -n datacache-controller

    Le pod du contrôleur doit être à l'état Running :

    NAME                                          READY   STATUS    RESTARTS   AGE
    aliyun-datacache-controller-xxxxxxxxx-xxxxx   1/1     Running   0          30s