Skip to main content

Get Started with Kubernetes API

Once you create a CloudFlow Project you can deploy your first container using the Kubernetes API.

Use kubectl config to create a context​

Let's configure kubectl to communicate with your environment.

  • If you haven't already, obtain your API token.
  • Use the CloudFlow Console to navigate to the Projects page where you will see your Kubernetes API URL on your Prokect.

Define CloudFlow as a cluster using your Kubernetes API URL:​

  • Ubuntu

    KUBERNETES_API="https://0123456789.kube.api.section.io/" # Retrieve from https://console.section.io environment page
    kubectl config set-cluster section \
    --certificate-authority=/etc/ssl/certs/ca-certificates.crt \
    --server=$KUBERNETES_API_URL/
  • MacOS

     KUBERNETES_API="https://0123456789.kube.api.section.io/" # Retrieve from https://console.section.io environment page
    kubectl config set-cluster section \
    --certificate-authority=/usr/local/etc/ca-certificates/cert.pem \
    --server=$KUBERNETES_API_URL/

If you don't have the file /etc/ssl/certs/ca-certificates.crt because you're on non-WSL-Windows, you can obtain an equivalent file here: CA certificates

Save your API token​

kubectl config set-credentials section-user \
--token=$CLOUDFLOW_API_TOKEN

Create the execution context​

kubectl config set-context my-section-application \
--cluster=section \
--user=section-user \
--namespace=default

Switch to the new context​

kubectl config use-context my-section-application

Validate your setup​

kubectl version

More information about cluster, credential, and context information can be found in the Kubernetes documentation

Deploy a web server to the CloudFlow Edge for HTTP workload​

Next we'll place an nginx webserver at the edge using a Kubernetes Deployment object. The nginx webserver container used in this example comes from the official nginx images on the DockerHub registry.

Create a Deployment object​

Create a yaml file, such as my-first-edge-application.yaml

my-first-edge-application.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21.6
imagePullPolicy: Always
resources:
requests:
memory: ".5Gi"
cpu: "500m"
limits:
memory: ".5Gi"
cpu: "500m"
ports:
- containerPort: 80
note

You can also use an image from a private registry as a part of your deployment. You can achieve this by creating a secret object containing the image pull credentials and specifying the same in your deployment object. You can read more about how to do this here.

Use kubectl to apply your Deployment​

Deploy your application​

kubectl apply -f my-first-edge-application.yaml

See your deployment running on CloudFlow​

kubectl get deployment nginx-deployment

See the pods running on CloudFlow's network​

kubectl get pods -o wide

The -o wide switch shows where the pod is running according to the default AEE location optimization strategy. Ultimately you will have NxM pods running in the CloudFlow Composable Edge Cloud, where N is the number of replicas, and M is the number of edge locations where your workload is present.