The Kubernetes applications can be configured declaratively using YAML files. These files allow us to control the Kubernetes applications with ease. All of the files in Kubernetes are often written in declarative languages like JSON or YAML. No matter what syntax you choose, the API will transform the file you provide it to at the end into JSON format, however you will typically find files written in YAML because it is simple for people to read and write.
The Kubernetes YAML files include these data structures: key-value pair, lists, maps, list of maps and map of lists.
The four fields that must be present are
spec (specification). Let's go over each of these and understand them.
From this field, it is clear that it is related to the API, and indeed it is. It is the API used to create the Kubernetes object. The value of
apiVersion is usually v1, which contains many core objects. It can also be app/v1, which has objects with some other functionality. Let's see the example with the value v1.
NOTE: For the syntax in the YAML file to be proper, a space must be added after the colon.
Here we define the type of object we aim to create. The objects that we specify here are linked to the
apiVersion that we specified above, and this
apiVersion gives us access to use the different objects. The types of objects can be Pod, Deployment, Service, Job, or DemonSets.
The object that we specified, metadata, provides unique properties of that object. This may contain name, namespace, and label fields. So, through this, we get information about the object. Here is an example.
metadata: name: nginx
As we are building an object, we expect the object to do something, so here we define the operation of the object. The specification of the object also depends upon the
apiVersion specified above. This includes the containers, memory requirements, storage volumes, network or other details that Kubernetes needs to know about. Here we can also specify more complex properties and give deeper information.
spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
NOTE: To ensure that lists and maps are recognised, make sure to properly indent.
An example of a complete and simple kubernetes YAML file.
apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
Thank you for reading :)