kubectl

Get started
kubectl is a command line tool for communicating with a Kubernetes cluster’s control plane, using the Kubernetes API.
Before exploring the container’s possibilities, let’s start by deploying the default configuration:
docker run \
--interactive \
--tty \
--rm \
--name <container-name> \
dp.apps.rancher.io/containers/kubectl:1.34.1
Check our authentication guide if you need to configure Application Collection OCI credentials in your Docker client.
Container overview
Since there is no official upstream container for kubectl, our container is built from scratch using a SUSE Linux BCI Micro base image and includes our best practices.
Apply a template from a file
To run the kubectl container, execute the following command:
docker run \
--interactive \
--tty \
--rm \
--name <container-name> \
--network host \
--entrypoint "/bin/bash" \
--volume ~/.kube/config:/.kube/config:ro \
--env KUBECONFIG=/.kube/config \
dp.apps.rancher.io/containers/kubectl:1.34.1
We shared the host’s kubeconfig file and set the
KUBECONFIGenvironment variable as required by the Helm CLI to authenticate and reach your Kubernetes clusters. We also shared the host’s network to ensure the Helm container can communicate with the cluster’s API server.
Then, we’ll create an NGINX deployment template file to test the container’s ability to create resources in the Kubernetes cluster.
# nginx-deployment.yaml
apiVersion: v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
imagePullSecrets:
- name: application-collection
containers:
- name: nginx
image: dp.apps.rancher.io/containers/nginx:1.29.3
ports:
- containerPort: 80
Use the following commands to copy the template inside the kubectl container and apply it from there.
docker cp nginx-deployment.yaml kubectl-pod:/tmp/nginx-deployment.yaml
kubectl apply -f /tmp/nginx-deployment.yaml
Run the command below to check that the Deployment was created and its Pod is running with:
$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 1/1 1 1 5s
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-69b67d89cc-279c7 1/1 Running 0 5s
Scale up the deployment
We deployed NGINX with one Pod. Now, we will scale up the deployment to three Pods with:
kubectl scale deployments/nginx --replicas 3
Then, we can check the diff of the modified Deployment against its original template by executing:
kubectl diff -f /tmp/nginx-deployment.yaml
Delete the deployment
Once we are done testing the NGINX Deployment, it can be removed with the following command:
kubectl delete -f /tmp/nginx-deployment.yaml