Getting started

This guide walks you through pushing your first container image to Cloudfleet Container Registry (CFCR) and deploying it to a CFKE cluster. There is no registry to create or configure. You push an image, and CFCR stores it.

Prerequisites

Before you begin, ensure you have:

  • A Cloudfleet account with an organization
  • The Cloudfleet CLI installed
  • Docker installed on your local machine
  • A CFKE cluster (optional, for deployment)

Step 1: Find your organization ID

Your registry URL includes your organization ID. Find it in the Cloudfleet console or via the CLI:

cloudfleet organizations list

The output displays your organization ID:

ID                                    Name           Role
12345678-6651-4e5d-9c04-079f6532989b  My Company     Administrator

Your registry URL is:

12345678-6651-4e5d-9c04-079f6532989b.europe.registry.cloudfleet.dev

Step 2: Authenticate Docker

Configure the Cloudfleet CLI as a Docker credential helper. This enables Docker to authenticate automatically when pushing or pulling images.

First, authenticate the CLI with your user account:

cloudfleet auth add-profile user default YOUR_ORGANIZATION_ID

A browser window opens for authentication. After signing in, the CLI stores your credentials securely.

Next, configure Docker to use the Cloudfleet credential helper:

cloudfleet auth configure-docker

This command updates your Docker configuration (~/.docker/config.json) to use the Cloudfleet CLI for authentication.

Step 3: Build a container image

Create a simple application to test the registry. Create a file named Dockerfile:

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html

Create a file named index.html:

<!DOCTYPE html>
<html>
<head><title>Hello from Cloudfleet</title></head>
<body><h1>Hello from Cloudfleet Container Registry!</h1></body>
</html>

Build the image:

docker build -t my-app:v1 .

Step 4: Tag and push the image

Tag the image for your registry:

docker tag my-app:v1 YOUR_ORG_ID.europe.registry.cloudfleet.dev/my-app:v1

Push the image:

docker push YOUR_ORG_ID.europe.registry.cloudfleet.dev/my-app:v1

Docker authenticates automatically using the credential helper. The image uploads to your registry.

Step 5: Deploy to CFKE

Create a deployment that uses your image. CFKE clusters authenticate to your registry automatically - no image pull secrets required.

Create a file named deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: YOUR_ORG_ID.europe.registry.cloudfleet.dev/my-app:v1
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: my-app
spec:
  type: LoadBalancer
  selector:
    app: my-app
  ports:
  - port: 80
    targetPort: 80

Apply the deployment:

kubectl apply -f deployment.yaml

The pods start and pull the image directly from your registry. No additional configuration required.

Check the deployment status:

kubectl get pods -l app=my-app
NAME                      READY   STATUS    RESTARTS   AGE
my-app-5d8f9b7c4d-abc12   1/1     Running   0          30s
my-app-5d8f9b7c4d-def34   1/1     Running   0          30s

Verify the deployment

Get the external IP of the service:

kubectl get service my-app
NAME     TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
my-app   LoadBalancer   10.0.123.45    203.0.113.100    80:31234/TCP   1m

Open the external IP in a browser to see your application.

What’s next

You have successfully pushed an image to Cloudfleet Container Registry and deployed it to a CFKE cluster. Explore these topics to learn more: