You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Golden Images** (also called base images or image templates) are machine images with pre-configured operating systems. They typically include specialized configurations, security patches and common libraries and tools. Once a Golden Image is created it can be used to easily and reliably create identical environments on different hardware or virtual machines.
26
26
27
-

28
-

27
+

28
+

29
29
30
30
?> If you have an M1 Mac checkout VirtualBox beta build for arm64. (Note that as of 23/02/2023 the VirtualBox beta build for arm64 did not work)
31
31
@@ -74,8 +74,8 @@ This kind of repetitive work is often referred to as toil. Reducing toil from va
@@ -33,16 +33,16 @@ An important use case for virtual machines is keeping parity between development
33
33
34
34
So far the tools we have looked at for building and running images are great for automation and managing complicated infrastructure. However, for developers that want to be able to easily create, use and share environments they are not very convenient. If only we could create and start a virtual machine with just two commands...

38
38
39
39
?> Once again if you have an M1 MacBook, default vagrant will not work. As Vagrant by default uses Virtualbox as its provider & Virtualbox does not yet work on M1 macs (as of 23/02/2023) this presents a problem.
2. Inspect the example code ch2/vagrant_docker_example
45
+
3. Inspect the example code ch3/vagrant_docker_example
46
46
47
47
3. Read the following [vagrant provider](https://developer.hashicorp.com/vagrant/docs/provisioning/docker)[vagrant ssh](https://developer.hashicorp.com/vagrant/docs/vagrantfile/ssh_settings)
An entire integrated toolchain is necessary to leverage the capabilities of an automated pipeline, orchestrated by a build server. Newly committed code that is pushed to the git server will trigger a webhook and cause the build servers to run certain tasks. General stages of a delivery pipeline include:
Containers allow you to easily package an application's code, configurations, and dependencies into easy to use building blocks. Containers can help ensure that applications deploy quickly, reliably, and consistently regardless of the deployment environment. This enables the following benefits:
32
32
@@ -40,8 +40,8 @@ Containers allow you to easily package an application's code, configurations, an
40
40
41
41
## Containers vs Virtual Machines
42
42
43
-

44
-

43
+

44
+

45
45
46
46
The picture above represents the progression that has happened over the last 15 years in the industry for deploying applications. In the beginning, apps were deployed to their own physical hosts, each with their own operating system.
47
47
@@ -61,8 +61,8 @@ Read more from [Docker: What is a Container](https://www.docker.com/resources/wh
61
61
62
62
Docker is often used synonymously with containers but is actually a platform for using containers. Similar to how Java has development and runtime environments created by different organizations, there are many [other platforms for containers](https://jfrog.com/knowledge-base/6-alternatives-to-docker-all-in-one-solutions-and-standalone-container-tools/) however Docker is by far the most widely adopted container platform.
There are many different solutions for managing containers but Kubernetes has become one of the most popular and widely used platforms. It is part of a large ecosystem of tools and projects organized by the [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/) which drives development and support for containerized applications. So what is Kubernetes?
27
27
@@ -37,43 +37,43 @@ If you are still having a difficult time understanding what Kubernetes is that i
37
37
38
38
A Kubernetes **cluster** is a set of node machines for running containerized applications. The Kubernetes Master is a collection of three processes that run on a single node in your cluster, which is designated as the master node. Those processes are: kube-apiserver, kube-controller-manager and kube-scheduler.

42
42
43
43
### Node
44
44
45
45
The **nodes** in a cluster are the machines (VMs, physical servers, etc) that run the applications and workflows. The Kubernetes master controls each node.
Kubernetes is declarative by design. When you want to change something in the cluster, you simply create/update/delete the resources from etcd via the API server. Various controllers then respond to this change by converging the system to comply with the newly declared state. To best understand, check out this drawing from [Julia Evans](https://jvns.ca/blog/2017/06/04/learning-about-kubernetes/):
53
53
54
-

54
+

55
55
56
56
?>**Declarative:** you declare what you want the system to do - a desired state - and the system will align towards that state. In Kubernetes, you create an API object to represent what you want the system to do. And all the components in the system work to drive towards that state until the object is deleted.
57
57
58
58
## Pods
59
59
60
60
A **Pod** is the basic execution unit of a Kubernetes application – the smallest and simplest unit in the Kubernetes object model that you create or deploy to run containers.
61
61
62
-

63
-

62
+

63
+

64
64
65
65
## Services
66
66
67
67
A **Service** is an abstraction that defines a logical set of Pods and a policy by which to access them. As pods are created, scaled and destroyed over an application's lifetime the node they are running on and their IP addresses will change. A Service provides a consistent way to communicate with a set of pods regardless of how many pods there are or where they are running.
68
68
69
-

70
-

69
+

70
+

71
71
72
72
## Deployments
73
73
74
74
Deployments abstract away the low-level details of managing Pods. Behind the scenes, **Deployments** rely on **Replica Sets** to manage starting, stopping, scaling, and restarting the Pods if they happen to go down for some reason. Below is an example illustration of a deployment.
Copy file name to clipboardExpand all lines: docs/3-virtual-machines-containers/3.5.3-deliverables.md
+3-3
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,10 @@
1
1
# Deliverables
2
2
3
-
- Learn how to use Docker Compose to create a containerized local development environment in the [Docker Compose](/2-virtual-machines-containers/2.5.1-docker-compose?id=exercise) exercise.
3
+
- Learn how to use Docker Compose to create a containerized local development environment in the [Docker Compose](/3-virtual-machines-containers/3.5.1-docker-compose?id=exercise) exercise.
4
4
5
-
- Familiarize yourself with the basic commands to use a Kubernetes cluster in the [Hello Minikube](/2-virtual-machines-containers/2.5.2-kubernetes?id=exercises) exercise.
5
+
- Familiarize yourself with the basic commands to use a Kubernetes cluster in the [Hello Minikube](/3-virtual-machines-containers/3.5.2-kubernetes?id=exercises) exercise.
6
6
7
-
- Learn how to create and manage Kubernetes Deployment and Service resources in the [Deployments and Services](/2-virtual-machines-containers/2.5.2-kubernetes?id=exercise-2-deployments-and-services-with-kubernetes-in-docker-kind) exercise.
7
+
- Learn how to create and manage Kubernetes Deployment and Service resources in the [Deployments and Services](/3-virtual-machines-containers/3.5.2-kubernetes?id=exercise-3-deployments-and-services-with-kubernetes-in-docker-kind) exercise.
Copy file name to clipboardExpand all lines: docs/3-virtual-machines-containers/packer.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ multiple platforms with all of the software configured at the time the image is
6
6
built. Packer defines configuration in a JSON file which can be added to
7
7
version control and increases scalability. It is worth noting Packer is lightweight and is capable of running on every major operating system today and it is very popular to use additional tools such as Chef and Ansible to further install software on the machine image.
0 commit comments