Présentation de l'API Backup

Kubernetes a été conçu pour être extensible. Vous pouvez ajouter de nouvelles API, telles que les API Backup et GKE Backup Agent, à un cluster Kubernetes. Ces API sont conformes à un modèle d'API uniforme, le modèle de ressources Kubernetes (KRM).

Ces API utilisent des ressources personnalisées Kubernetes et s'appuient sur le KRM. Les API permettent de gérer le cycle de vie des sauvegardes, et de créer des dépôts, des règles et des plans de sauvegarde.

Points de terminaison d'un service

L'URL suivante est le point de terminaison de l'API Backup KRM :

https://MANAGEMENT_API_SERVER_ENDPOINT/apis/backup.gdc.goog/v1

L'URL suivante est le point de terminaison de l'API GKE Backup Agent :

https://MANAGEMENT_API_SERVER_ENDPOINT/apis/gkebackup.gke.io/v1

Remplacez MANAGEMENT_API_SERVER_ENDPOINT par le point de terminaison du serveur de l'API Management.

Document de découverte

Utilisez la commande kubectl proxy --port=8001 pour ouvrir un proxy vers le serveur d'API sur votre ordinateur local. Vous pouvez ensuite accéder au document de découverte à l'une des URL suivantes :

  • http://127.0.0.1:8001/apis/backup.gdc.goog/v1
  • http://127.0.0.1:8001/apis/gkebackup.gke.io/v1

Exemple de ressource ClusterBackupPlan

Voici un exemple de ressource ClusterBackupPlan :

apiVersion: backup.gdc.goog/v1
kind: ClusterBackupPlan
metadata:
  name: backup-plan
  namespace: project-namespace
spec:
  targetCluster:
    targetClusterType: UserCluster
    targetClusterName:
      kind: "Cluster"
      name: "cluster-sample"
  backupSchedule:
    cronSchedule: "*/30 * * * *"
    paused: false
  clusterBackupConfig:
    backupScope:
      selectedNamespaces:
        namespaces: ["nginx"]
    clusterBackupRepositoryName: backup-repository
  retentionPolicy:
    backupDeleteLockDays: 10
    backupRetainDays: 10

Exemple de ressource ProtectedApplication

Voici un exemple de ressource ProtectedApplication :

apiVersion: gkebackup.gke.io/v1
kind: ProtectedApplication
metadata:
  name: protected-application-test
  namespace: applications
spec:
  applicationName: protectedApplication
  resourceSelection:
    type: Selector
    selector:
      matchLabels:
        app: protected
  components:
    - name: protect-application-deployment
      resourceKind: Deployment
      resourceNames:
        - protected-application-deployment
      strategy:
        type: BackupAllRestoreAll

Exemple de ressource ClusterBackupRepository

Voici un exemple de ressource ClusterBackupRepository :

apiVersion: backup.gdc.goog/v1
kind: ClusterBackupRepository
metadata:
  name: user-1-user
  namespace: user-1-user-cluster
spec:
    secretReference:
        namespace: "object-storage-secret-ns"
        name: "object-storage-secret"
    endpoint: "https://objectstorage.google.gdch.test"
    type: "S3"
    s3Options:
      bucket: "fully-qualified-bucket-name"
      region: "us-east-1"
      forcePathStyle: true
    importPolicy: "ReadWrite"