Aké mechanizmy umožňujú prístup k vlastným zdrojom?
sobes.tech AI
Odpoveď od AI
Prístup k vlastným zdrojom (Custom Resources, CR) v Kubernetes sa vykonáva prostredníctvom tých istých mechanizmov ako k vstavaným zdrojom, ale s prihliadnutím na ich špecifiká.
Hlavné mechanizmy:
-
Kubernetes API Server: Základný spôsob interakcie. API Server poskytuje RESTful API na správu všetkých zdrojov v klastre, vrátane CR.
- Prostredníctvom API Servera je možné vytvárať, čítať, aktualizovať a odstraňovať CR (CRUD operácie).
- Prístup k API Serveru je riadený prostredníctvom autentifikácie, autorizácie a kontroly prístupu (Admission Controllers).
-
kubectl: Nástroj príkazového riadku na interakciu s Kubernetes klastrom.
- Používa Kubernetes API Server na vykonávanie príkazov.
- Podporuje operácie s CR podobne ako s bežnými zdrojmi, napríklad:
# Získať zoznam typov 'myresource' kubectl get myresources # Opísať konkrétny vlastný zdroj kubectl describe myresource my-instance-name # Vytvoriť vlastný zdroj zo súboru YAML kubectl create -f my-resource.yaml - Vyžaduje existenciu definície vlastného zdroja (CustomResourceDefinition, CRD) v klastre.
-
Clients (SDKs): Knihovny na prácu s Kubernetes API v rôznych jazykoch (Go, Python, Java, Ruby a pod.).
- Umožňujú programovo manipulovať s CR.
- Často sa používajú controllery (Operators) na správu životného cyklu CR.
// Príklad v Go s client-go config, err := rest.InClusterConfig() // alebo clientcmd.BuildConfigFromFlags ak err != nil { // ... spracovanie chyby ... } // Vytvorenie dynamického klienta na prácu s akýmikoľvek zdrojmi dynamicClient, err := dynamic.NewForConfig(config) ak err != nil { // ... spracovanie chyby ... } gvr := schema.GroupVersionResource{Group: "stable.example.com", Version: "v1", Resource: "myresources"} // Získanie zoznamu vlastných zdrojov unstructuredList, err := dynamicClient.Resource(gvr).Namespace("default").List(context.TODO(), metav1.ListOptions{}) ak err != nil { // ... spracovanie chyby ... } // Spracovanie zoznamu... -
Operátori (Operators): Vzor automatizácie využívajúci CR a controllery na správu zložitých aplikácií.
- Operátori obsahujú logiku na reakciu na zmeny v CR a vykonávanie potrebných akcií (napríklad vytvorenie Pod, Service a pod.).
- Používajú knižnice klientov (Clients) na interakciu s CR a ďalšími zdrojmi.
-
RBAC (Role-Based Access Control): Systém na riadenie prístupu v Kubernetes.
- Prístup k CR je riadený prostredníctvom rolí a väzieb rolí.
- Je potrebné explicitne udeliť oprávnenia (verbs: get, list, create, update, delete, watch) pre určené skupiny a zdroje (CRD alebo konkrétny CR).
# Príklad Role, ktorá poskytuje prístup k 'myresources' apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: myresource-reader namespace: default rules: - apiGroups: ["stable.example.com"] # Skupina API vlastného zdroja resources: ["myresources"] # Názov vlastného zdroja v množnom čísle verbs: ["get", "list", "watch"] # Povolené operácie
Prístup k vlastným zdrojom nie je odlišný od prístupu k vstavaným zdrojom na úrovni API, ale vyžaduje existenciu príslušného CRD a správne RBAC pravidlá, ktoré výslovne zahŕňajú API skupinu a názov vlastného zdroja.