Cluster Management

By leveraging Shipa, you can quickly bind existing frameworks to different clusters, abstracting Kubernetes completely away from your developer while enabling applications to be seamlessly deployed across multiple clusters.

apiVersion: shipa.crossplane.io/v1alpha1
kind: Cluster
metadata:
  name: cr-cluster-1
spec:
  forProvider:
    name: cr-cluster-1
    endpoint:
      addresses: ["https://k8s-api.url:443"]
      caCert: |
        -----BEGIN CERTIFICATE-----
        <cert conten>
        -----END CERTIFICATE-----
      token: <token content>
    resources:
      frameworks:
        name: ["crossplane-framework-dev", "crossplane-framework-prod"]
    ingressControllers:
      type: "istio"
      serviceType: "clusterip"
      ingressIp: "10.10.10.20"
      debug: false

Top-Level Attributes

ComponentTypeDescription
apiVersionstringthe version of the API.
kindstringthe kind of custom resource that will be created by Shipa.

Cluster is the kind used by Shipa for binding frameworks to different clusters.
metadatathe name of the custom resource that will be created by Shipa.
specthe specification that will be used by Shipa when binding the cluster to existing Shipa frameworks.

Metadata

ComponentTypeDescription
namestringthe name of the custom resource that will be created by Shipa.

Specification

Component path: spec > forProvider

ComponentTypeDescription
namestringthe name that will be used by Shipa as the cluster identifier when binding frameworks to it.

It does not need to match your cluster name.

Required: Yes
endpointthe Kubernetes cluster API address, token, and certificate that Shipa should use when connecting with the cluster.

Required: Yes
resourcesdefines the Shipa frameworks that should be bound to the cluster

Required: Yes
ingressControllersspecific ingress configuration that should be used by Shipa when binding frameworks to the cluster.

If not defined, Shipa will automatically select Traefik and pre-configure it

Required: No

Endpoint

Component path: spec > forProvider > endpoint

ComponentTypeDescription
addressesstringthe Kubernetes cluster API address that Shipa should use when connecting to the cluster.

you can find detailed information on how to find your cluster information here

Required: Yes
caCertstringthe CA Cert that should be used by Shipa when connecting to the cluster API.

you can find detailed information on how to find your cluster information here

Required: Yes
tokenstringthe Shipa admin account token that was previously added to your cluster so Shipa can successfully connect to it.

you can find detailed information on how to create a service account for Shipa in your cluster here

Required: Yes

Resources

Component path: spec > forProvider > resources

ComponentTypeDefinition
frameworksstringthe name of the frameworks that should be bound to the cluster.

Required: Yes

Ingress Controllers

Component path: spec > forProvider > ingressControllers

ComponentTypeDefinition
typestringthe ingress controller that should be used by Shipa when connecting frameworks to the cluster.

Options:
- istio
- traefik

Required: No

If you are binding frameworks where Istio is the selected ingress controller, make sure Istio is already installed and available in the cluster. More information available here

If not specified, Shipa will automatically use and configure Traefik.
serviceTypestringthe service type that should be used by Shipa when deploying applications through the framework to the cluster.

If not selected, Shipa will automatically assign LoadBalancer as the default option.

Options:
- loadbalancer
- clusterip
- nodeport

Required: No
debugboolthe level of logging produced when using the selected ingress controller.

Required: No
ingressIpstringthe ingress controller IP that Shipa should use when creating application endpoints.

Required: No
Condition: If Traefik is selected, Shipa can auto-configure it. If Istio is selected, then you must enter the Istio service IP. More information available here