Deploying an application
Find out how to deploy a "Hello World" application on an OVHcloud Managed Kubernetes cluster
Find out how to deploy a "Hello World" application on an OVHcloud Managed Kubernetes cluster
Last updated 2nd May, 2022.
OVHcloud Managed Kubernetes service provides you Kubernetes clusters without the hassle of installing or operating them. This guide will explain how to deploy a simple Hello World application on a OVHcloud Managed Kubernetes cluster.
kubectl
(see the configuring kubectl guide for details) When a LoadBalancer Service resource is created inside a Managed Kubernetes cluster, an associated Public Cloud Load Balancer is automatically created, allowing public access to your K8S application. The Public Cloud Load Balancer service is hourly charged and will appear in your Public Cloud project. For more information, please refer to the following documentation: Network Load Balancer price
The following command will deploy a simple application (nginx image) using a Kubernetes Deployment and a Kubernetes Service.
Create a hello.yml
file for our ovhplatform/hello
Docker image:
apiVersion: v1
kind: Service
metadata:
name: hello-world
labels:
app: hello-world
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
app: hello-world
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world-deployment
labels:
app: hello-world
spec:
replicas: 1
selector:
matchLabels:
app: hello-world
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-world
image: ovhplatform/hello
ports:
- containerPort: 80
And apply the file:
kubectl apply -f hello.yml -n default
After applying the YAML file, a new hello-world
service and the corresponding hello-world-deployment
deployment are created in the default
namespace:
$ kubectl apply -f hello.yml -n default
service/hello-world created
deployment.apps/hello-world-deployment created
The application you have just deployed is a simple Nginx server with a single static Hello World page.
Basically it just deploys the Docker image ovhplatform/hello
You have just deployed a hello-world
service in a pod in your worker node. Let's verify that everything is correct by listing the pods.
kubectl get pods -n default -l app=hello-world
You should see your newly created pod:
$ kubectl get pods -n default -l app=hello-world
NAME READY STATUS RESTARTS AGE
hello-world-deployment-d98c6464b-7jqvg 1/1 Running 0 47s
default
namespace is the Kubernetes namespace by default so you don't need to specify it in your kubectl commands.
You can also verify the deployment is active:
kubectl get deploy -n default -l app=hello-world
And you will see the hello-service-deployment
:
$ kubectl get deploy -n default -l app=hello-world
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hello-world-deployment 1 1 1 1 1m
And now you're going to use kubectl
to see your service:
kubectl get services -n default -l app=hello-world
You should see your newly created service:
$ kubectl get services -n default -l app=hello-world
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-world LoadBalancer 10.3.234.211 51.178.69.47 80:31885/TCP 6m54s
If under EXTERNAL-IP
you get <pending>
, don't worry, the provisioning of the LoadBalancer can take a minute or two, please try again in a few moments.
Retrieve the URL of the hello-world
application:
$ export SERVICE_URL=$(kubectl get svc hello-world -n default -o jsonpath='{.status.loadBalancer.ingress[].ip}')
$ echo "http://$SERVICE_URL/"
http://135.125.83.30/
Copy/paste the URL in your browser to see your new running hello-world
application:
You can even test the newly created service, in command line, with curl:
curl $SERVICE_URL
You should see your newly created service:
curl $SERVICE_URL
<!doctype html>
<html>
<head>
<title>OVH K8S</title>
</head>
<style>
.title {
font-size: 3em;
padding: 2em;
text-align: center;
}
</style>
<body>
<div class="title">
<p>Hello from Kubernetes!</p>
<img src="./ovh.svg"/>
</div>
</body>
</html>
If you have an error message "Failed to connect to 135.125.83.30 port 80: Connection refused", it's normal. The service is starting, so you have to wait a few seconds in order to test it again.
At the end you can proceed to clean up by deleting the service and the deployment.
Let's begin by deleting the service:
kubectl delete service hello-world -n default
If you list the services you will see that hello-world
doesn't exist anymore:
$ kubectl delete service hello-world -n default
service "hello-world" deleted
$ kubectl get services -l app=hello-world -n default
No resources found in default namespace.
Then, you can delete the deployment:
kubectl delete deploy hello-world-deployment -n default
And now if you list you deployment you will find no resources:
$ kubectl delete deploy hello-world-deployment -n default
deployment.apps "hello-world-deployment" deleted
$ kubectl get deployments -n default -l app=hello-world
No resources found in default namespace.
If now you list the pods:
kubectl get pods -n default -l app=hello-world
you will see that the pod created for hello-world
has been deleted too:
$ kubectl get pods -n default -l app=hello-world
No resources found in default namespace.
To learn more about using your Kubernetes cluster the practical way, we invite you to look at our OVHcloud Managed Kubernetes doc site.
Join our community of users.
Zachęcamy do przesyłania sugestii, które pomogą nam ulepszyć naszą dokumentację.
Obrazy, zawartość, struktura - podziel się swoim pomysłem, my dołożymy wszelkich starań, aby wprowadzić ulepszenia.
Zgłoszenie przesłane za pomocą tego formularza nie zostanie obsłużone. Skorzystaj z formularza "Utwórz zgłoszenie" .
Dziękujemy. Twoja opinia jest dla nas bardzo cenna.
Dostęp do OVHcloud Community Przesyłaj pytania, zdobywaj informacje, publikuj treści i kontaktuj się z innymi użytkownikami OVHcloud Community.
Porozmawiaj ze społecznością OVHcloud