Skip to main content
The Triton Provider for Managed Kubernetes allows you to deploy worker nodes on a private cloud infrastructure. Since native load balancers are not supported, you must configure one manually when creating the cluster. Logs are captured via Syslog.

Requirements

  • A Triton account with API access
  • An SSH key saved as an Control Plane opaque secret
  • A private network configured in your datacenter
  • Available machine images and instance packages
  • triton-moirai images available in your datacenter

Supported Add-ons

  • Dashboard: Provides a Kubernetes dashboard UI for the cluster.
  • Headlamp: The recommended dashboard for the cluster
  • Local Path Storage: Create PVCs backed by local volumes.
  • Logs: Enable logging for pods and cluster auditing.
  • Metrics: Enable metrics collections.

Load Balancing

Triton does not include a native load balancer. To expose cluster endpoints, you must configure a manual load balancer at cluster creation time. Control Plane deploys and configures triton-moirai instances in your datacenter.
triton-moirai images must already be built and available in your Triton datacenter before creating the cluster.

Logging

When using a load balancer, logs are written to syslog. Choose one of the following options
  • externalSyslog — Forward the log sink to a syslog server outside the cluster, specified as host:port.
  • nodePort — If you run a syslog service inside the cluster and expose it via a Kubernetes NodePort, point the log sink to that port number (valid range: 3000065535).

Step 1 — Prepare Your Triton Environment

Your Triton environment must include:
  • A valid datacenter location
  • Available machine images
  • A private network
  • Available instance packages
The Triton datacenter must already have the proper triton-moirai images built and available before creating the cluster.

Step 2 — Create a Managed Kubernetes Cluster Using a Manifest File

  1. Update the manifest below: Modify the following triton-mk8s-template.yaml YAML manifest with actual values. Replace the $ values in the YAML below with your actual values before applying.
YAML
kind: mk8s
name: ${NAME}
spec:
  provider:
    triton:
      connection:
        user: '${USER}'
        account: ${ACCOUNT}
        privateKeySecretLink: //secret/${SECRET}
        url: ${URL}
      imageId: ${IMAGE_ID}
      loadBalancer:
        manual:
          tags:
            my-key-sample: my-value-sample
          cnsInternalDomain: ${CNS_INTERNAL_DOMAIN}
          cnsPublicDomain: ${CNS_PUBLIC_DOMAIN}
          count: 1
          imageId: ${LB_IMAGE_ID}
          logging: {}
          metadata:
            my-meta-key: my-meta-value
          packageId: ${LB_PACKAGE_ID}
          privateNetworkIds:
            - ${PRIVATE_NETWORK_ID}
          publicNetworkId: ${PUBLIC_NETWORK_ID}
      location: ${LOCATION}
      networking:
        podNetwork: ${POD_NETWORK_CIDR}
        serviceNetwork: ${SERVICE_NETWORK_CIDR}
      privateNetworkId: ${PRIVATE_NETWORK_ID} 
    nodePools: # At least one node pool is required.
      - name: private
        labels:
          cpln.io/nodeType: core
          internet: false
        maxSize: 4
        minSize: 1
        packageId: ${PRIVATE_PACKAGE_ID}
        tritonTags:
          my-key-sample: my-value-sample
      - name: public
        labels:
          cpln.io/nodeType: core
          internet: true
        maxSize: 4
        minSize: 1
        packageId: ${PUBLIC_PACKAGE_ID}
        publicNetworkId: ${PublIC_NETWORK_ID}
        tritonTags:
          my-key-sample: my-value-sample
  addOns:
    headlamp: {}
  firewall:
    - description: public for testing purposes
      sourceCIDR: 0.0.0.0/0
  version: 1.34.2
  1. Create the Cluster: Deploy the cluster by applying the manifest.
    • Console: Apply the triton-mk8s-template.yaml file using the cpln apply >_ option in the upper right corner.
    • CLI: Execute cpln apply -f triton-mk8s-template.yaml --org YOUR_ORG_HERE.
    Wait until the cluster is initialized.

Step 3 — Accessing the Cluster

1. Using the Terminal

  1. Obtain the Cluster’s Kubeconfig File: Execute the command cpln mk8s kubeconfig ${NAME} -f /tmp/triton-mk8s-conf.
  2. Access the Cluster with kubectl: Use the obtained kubeconfig file by running export KUBECONFIG=/tmp/triton-mk8s-conf for the current shell session.

2. Using Headlamp

  1. Navigate to Control Plane Console: Visit the Control Plane Console.
  2. Access Headlamp: In the Control Plane Console, navigate to Kubernetes in the left sidebar panel and click on Open under Headlamp for the cluster.

Advanced Configuration Options

Instance Rotation/Refresh

Sometimes an explicit rotation (or refresh) of the instances is needed, for example to get the latest image or a new boot disk size. To do this per node pool, add a label cpln.io/refreshToken with an arbitrary valid value. Every time the value of this label changes, a conservative instance replacement will start (1 instance at a time). Removing that label is the same as having an empty value and will trigger a refresh too.