Aide-mémoire CKAD
exemple YAML CRD k8s
Un CRD est le type. La ressource custom est une instance. Le même nom court peut exister dans deux groupes.
kubectl get crd
kubectl api-resources -o name | grep example.io
kubectl get backups.example.io -A
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: backups.example.io
spec:
group: example.io
scope: Namespaced
names:
plural: backups
singular: backup
kind: Backup
shortNames: ["bak"]
versions:
- name: v1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
keep:
type: integer
apiVersion: example.io/v1
kind: Backup
metadata:
name: nightly
namespace: app
spec:
keep: 7
Champs
- name
- metadata.name doit être <plural>.<group>. backups.example.io.
- group
- Le groupe API. Distingue deux CRD qui partagent un kind.
- scope
- Namespaced ou Cluster. Même idée que Role vs ClusterRole.
- storage
- Exactement une version a storage: true. Les autres peuvent être served.
- kubectl api-resources
- kubectl api-resources -o name | grep example.io. Le nom complet si les noms courts se marchent dessus.
Pièges
- metadata.name = plural.group — backups.example.io. Faux et le CRD ne s’établit jamais.
- Deux CRD peuvent partager le kind Backup. Trancher avec le nom complet : backups.mycompany.io.
- kubectl get backup utilise le nom court. Si deux groupes le servent, passer le nom complet.
Doc officielle Custom Resources