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:
- Authentication methods - Learn about credential helpers, API tokens, and CFKE authentication
- Managing artifacts - Detailed guide on working with images, Helm charts, and OCI artifacts
- CI/CD integration - Automate image builds with GitHub Actions, GitLab CI, and more
- Access control - Manage who can push and pull images
← Concepts
Authentication →