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"