3.1. Development Environment#

Development environments for the cloud are complex because Docker and Kubernetes work differently on the major OS platforms and because of the need to install tools from cloud vendors. In this lab you will choose a development environment for yourself based on your machine and level of setup effort. There are tradeoffs that I will discuss so that you can make the best choice. You are not locked in. You can change your mind at any time.

There are three fully supported development environments:

  1. Google Cloud Shell Editor requires no setup and easy to use. It’s web based so you need a solid Internet connection. Choose this option if you’re unsure or you’re going to be developing on multiple computers (e.g. at home and in the classroom).

  2. A Dev Container is a way to develop on Linux container applications on Mac and Windows. If your machine has 8G+ of memory and plenty of disk space this is a faster and more flexible option. Choose this option if you want a more professional environment on Mac or Windows.

  3. GitHub’s Codespaces is similar to Google Cloud Shell Editor but it uses Development Containers to guide the setup process making it easy to customize. Codespaces is a great alternative, whether or not you use it to develop we will all use them for peer reviews.

Other development environments will also work, but may have differences that can affect labs and milestones. These two options are excellent alternatives if you are willing to solve your own setup problems:

  1. A Debian 10+ VM hosted on Google Cloud like you used in CIS-91. A devbox is a good and compatible option but might need to be scaled up when runing Docker builds or Minikube, costing money.

  2. Ubuntu 22.04 Desktop. This is the fastest and most flexible option, even if you have an older computer.

These other unsupported options are available for expert users:

  1. Native development on Mac and Windows. All of the tools in this class run natively on Mac and Windows platforms, with the exception of Docker. Docker uses a lightweight VM on non-Linux platforms but you can still use native git, gcloud. kubectl and helm. If you have an important reason to develop in a native shell and you’re able to debug your own problems this is a good way to go.