Okteto Cloud gives you free access to secure Kubernetes namespaces, fully integrated with remote development capabilities. Develop your Kubernetes applications in Okteto Cloud and forget about slow and tedious local development forever.
This tutorial will show you how to create an account in Okteto Cloud and how to develop a Python sample application.
- Install the Okteto CLI. Follow this guide if you haven't done it yet.
- Configure Access to your Okteto Cloud Namespace using the Okteto CLI or using the Okteto Cloud UI.
Step 1: Deploy the Python Sample App
Get a local version of the Python Sample App by executing the following commands:
$ git clone https://github.com/okteto/python-getting-started$ cd python-getting-started
k8s.yml file contains the Kubernetes manifests of the Python Sample App. Deploy a dev version of the application by executing:
$ kubectl apply -f k8s.yml
deployment.apps "hello-world" createdservice "hello-world" created
Open your browser and go to the URL of the application. You can get the URL by logging into Okteto Cloud and clicking on the application's endpoint:
Did you notice that you are accessing your application through an HTTPs endpoint? This is because Okteto Cloud will automatically create them for you when you deploy your application. Cool no 😎?
Step 2: Start your remote development environment
We are going to use the dev version of the Python Sample App we just deployed as our remote development environment. To do that, run the following command:
$ okteto up
✓ Development environment activated✓ Files synchronizedNamespace: cindyName: hello-worldForward: 8080 -> 80805678 -> 22Reverse: 3500 <- 3500Starting hello-world server...* Serving Flask app "app" (lazy loading)* Environment: development* Debug mode: on* Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)* Restarting with statStarting hello-world server...* Debugger is active!* Debugger PIN: 204-462-922
okteto up command starts a remote development environment, which means:
- The Python Sample App container is updated with the docker image
okteto/hello-world:python-dev. This image contains the required dev tools to build, test, debug and run the Python Sample App. Check the Dockerfile to see how it is generated.
- A file synchronization service is created to keep your changes up-to-date between your local filesystem and your application pods.
- Container port 8080 (the application) is forward to localhost.
- Container post 3500 (the debugger) is reverse forwarded to localhost.
All of this (and more) can be customized via the
okteto.ymlmanifest file. You can also use the file
.stignoreto skip files from file synchronization. This is useful to avoid synchronizing virtual environments or git metadata.
Step 3: Develop directly in Okteto Cloud
app.py file in your favorite local IDE and modify the response message on line 7 to be Hello world from the cluster!. Save your changes.
@app.route('/')def hello_world():return 'Hello World from the cluster!'}
Okteto will synchronize your changes to your development environment in Kubernetes. Flask's auto-reloader will detect the changes automatically and restart the application with the new code.
* Detected change in '/okteto/app.py', reloading* Restarting with statStarting hello-world server...* Debugger is active!* Debugger PIN: 281-298-026
Go back to the browser and reload the page. Your code changes were instantly applied. No commit, build or push required 😎!
Step 4: Debug directly in Okteto Cloud
Okteto enables you to debug your applications directly from your favorite IDE. Let's take a look at how that works in one of python's most popular IDE's, PyCharm.
First, open the project in PyCharm, remove the comments on
if __name__ == '__main__':print('Starting hello-world server...')# comment out to use Pycharm's remote debuggerattach()app.run(host='0.0.0.0', port=8080)
Second, launch the Remote Debug Server by clicking on the Debug button on the top right. Ensure that the Debug Tool Window shows the
Waiting for process connection.. message. This message will be shown until you launch your app on the remote shell and it connects to the Debug Server.
Starting hello-world server...* Serving Flask app "app" (lazy loading)* Environment: development* Debug mode: on* Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)* Restarting with statStarting hello-world server...Connecting to debugger...
On your local machine, switch to the Debug Tool Window. Once the app connects it will show the connection to the pydev debugger. Press the
resume button to let the execution continue.
Add a breakpoint on
app.py, line 10. Go back to the browser, and reload the page.
The execution will halt at your breakpoint. You can then inspect the request, the available variables, etc.
Your code is executing in Okteto Cloud, but you can debug it from your local machine without any extra services or tools. Pretty cool no? 😉
Step 5: Redeploy the Python Sample App
Once you are happy with your changes, exit your development environment with
ctrl + c.
If you want to keep your changes running, execute the following command in your local shell:
$ okteto push
i Running your build in Okteto Cloud[+] Building 16.0s (16/16)...✓ Source code pushed to the development environment 'hello-world'
Alternatively, you can also rollback the Python Sample App to its original state (the one before running
okteto up) by executing:
$ okteto down
✓ Development environment deactivated
Congratulations, you just developed your first Kubernetes application in Okteto Cloud 🚀.
Okteto lets you develop your applications directly in Kubernetes. This way you can:
- Reduce local setup and eliminate integration issues by developing the same way your application runs in production
- Test your application as fast as you type code, without typing either
kubectlin your inner loop cycle
- No more CPU cycles wasted in your machine. Hardware and network just limited by the power of the cloud
Okteto uses the
okteto.yml file to determine the name of your development environment, the docker image to use and where to upload your code. Check the Okteto manifest docs to customize your development environments with your own dev tools, images, and dependencies to adapt Okteto to your own application.