Getting Started on Okteto Cloud with PHP

Okteto Cloud gives instant access to secure Kubernetes namespaces to enable developers to code, build, and run Kubernetes applications entirely in the cloud.

This tutorial will show you how to create an account in Okteto Cloud and how to develop a PHP sample application.

Prerequisites

Step 1: Deploy the PHP Sample App

Get a local version of the PHP Sample App by executing the following commands:

$ git clone https://github.com/okteto/php-getting-started
$ cd php-getting-started

The k8s.yml file contains the Kubernetes manifests of the PHP Sample App. Deploy a dev version of the application by executing:

$ kubectl apply -f k8s.yml
deployment.apps "hello-world" created
service "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: Activate your development container

With the PHP Sample Application deployed, run the following command:

$ okteto up
โœ“ Development container activated
โœ“ Files synchronized
Namespace: cindy
Name: hello-world
Name: hello-world
Forward: 8080 -> 8080
58536 -> 22
Reverse: 9000 <- 9000
[Tue Jan 7 01:54:59 2020] PHP 7.4.1 Development Server (http://0.0.0.0:8080) started

The okteto up command starts a development container, which means:

  • The PHP Sample App container is updated with the docker image okteto/hello-world:php-dev. This image contains the required dev tools to build, test and run the PHP 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 development container.
  • Container ports 8080 (the application) is forwarded to localhost.
  • Container ports 9000 (the debugger) is reverse forwarded from the development container to localhost.

All of this (and more) can be customized via the okteto.yml manifest file. You can also use the file .stignore to skip files from file synchronization. This is useful to avoid synchronizing binaries, build artifacts, git metadata or the vendor folder.

Step 3: Develop directly in Okteto Cloud

Open the index.php file in your favorite local IDE and modify the response message on line 2 to be Hello world from the cluster!. Save your changes.

<?php
$message = "Hello World from the cluster!";
echo($message);

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 with PHPStorm, one of the most popular IDEs for PHP development.

If you haven't already, fire up PHP Storm and load this project there. Once the project is loaded, open index.php and set a breakpoint in line 2. click on the Start Listen PHP Debug Connections button on the PhpStorm toolbar.

Go back to your browser and reload the page. The execution will automatically halt at the breakpoint.

If this is the first time you debug this application, the IDE will ask you to confirm the source mapping configuration. Verify the values and click ok to continue.

At this point, you are able to inspect the request object, the current values of everything, the contents of $_SERVER variable, 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 PHP Sample App

Once you are happy with your changes, exit your development container 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 'hello-world'

okteto push automatically builds a new image tag using the Okteto Build Service, pushes it to the Okteto Registry and redeploys your application with the new image tag ๐Ÿ’ฅ!

Alternatively, you can also rollback the PHP Sample App to its original state (the one before running okteto up) by executing:

$ okteto down
โœ“ Development container deactivated

Next steps

Congratulations, you just developed your first application in Okteto Cloud ๐Ÿš€.

Okteto lets you develop your applications directly in Kubernetes. This way you can:

  • Eliminate integration issues by developing in a realistic environment
  • Test your application end to end as fast as you type code
  • No more CPU cycles wasted in your machine. Develop at the speed of the cloud!

Okteto uses the okteto.yml file to determine the name of your development container, the docker image to use and where to upload your code. Check the Okteto manifest docs to customize your development containers with your own dev tools, images, and dependencies to adapt Okteto to your own application.

Ready to develop your application on Okteto Cloud? Read our step by step tutorial on how to configure an Okteto Pipeline to deploy realistic environments for your application in just one click.

Find more advanced samples with Okteto in this repository or join our #okteto channel in the Kubernetes community Slack to make questions or share your feedback.