Skip to content

Kubernetes Abstractions

cloudspells.core.abstractions.kubernetes

Cloud-neutral Kubernetes abstractions for CloudSpells multi-cloud support.

Exports

AbstractKubernetes: Interface for a managed Kubernetes cluster.

AbstractKubernetes

Bases: ABC

Interface for a managed Kubernetes cluster.

Provider implementations (OCI OkeCluster, AWS EksCluster, GCP GkeCluster) satisfy this interface.

Attributes:

Name Type Description
id Output[str]

Provider resource ID of the cluster.

Example
def export_cluster(cluster: AbstractKubernetes, label: str) -> None:
    pulumi.export(f"{label}_cluster_id", cluster.id)

export_cluster(oke_cluster, "oci_k8s")
Source code in packages/cloudspells-core/src/cloudspells/core/abstractions/kubernetes.py
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class AbstractKubernetes(ABC):
    """Interface for a managed Kubernetes cluster.

    Provider implementations (OCI `OkeCluster`,
    AWS `EksCluster`, GCP `GkeCluster`) satisfy this interface.

    Attributes:
        id: Provider resource ID of the cluster.

    Example:
        ```python
        def export_cluster(cluster: AbstractKubernetes, label: str) -> None:
            pulumi.export(f"{label}_cluster_id", cluster.id)

        export_cluster(oke_cluster, "oci_k8s")
        ```
    """

    id: pulumi.Output[str]

    @abstractmethod
    def export(self) -> None:
        """Publish standard Kubernetes cluster stack outputs."""

    @abstractmethod
    def create_kubeconfig(self, filename: str) -> None:
        """Write a kubeconfig file for this cluster.

        Args:
            filename: Absolute or relative path where the kubeconfig file
                should be written (e.g. `"/tmp/kubeconfig"`).
        """

export() -> None abstractmethod

Publish standard Kubernetes cluster stack outputs.

Source code in packages/cloudspells-core/src/cloudspells/core/abstractions/kubernetes.py
34
35
36
@abstractmethod
def export(self) -> None:
    """Publish standard Kubernetes cluster stack outputs."""

create_kubeconfig(filename: str) -> None abstractmethod

Write a kubeconfig file for this cluster.

Parameters:

Name Type Description Default
filename str

Absolute or relative path where the kubeconfig file should be written (e.g. "/tmp/kubeconfig").

required
Source code in packages/cloudspells-core/src/cloudspells/core/abstractions/kubernetes.py
38
39
40
41
42
43
44
45
@abstractmethod
def create_kubeconfig(self, filename: str) -> None:
    """Write a kubeconfig file for this cluster.

    Args:
        filename: Absolute or relative path where the kubeconfig file
            should be written (e.g. `"/tmp/kubeconfig"`).
    """