# Tutorial: The Basics
This guide is aimed to fast-track your Kubernetes learning by focusing on a practical hands-on overview guide.
The problem: "I want to adopt Kubernetes"
The problem: "I have some common existing infrastructure"
Our focus: Solving the problem by learning each building block
in order to port our infrastructure to Kubernetes.
## Docker installation
* Install Docker [here](https://docs.docker.com/get-docker/)
## Run Kubernetes
* Install `kubectl` to work with kubernetes
We'll head over to the [kubernetes](https://kubernetes.io/docs/tasks/tools/) site to download `kubectl`
* Install the `kind` binary
You will want to head over to the [kind](https://kind.sigs.k8s.io/) site
* Create a cluster
```
kind create cluster
```
## Namespaces
```
kubectl create namespace cms
```
## Deployments
* Deployment [documentation](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/)
cd kubernetes\tutorial
```
kubectl -n cms apply -f deploy.yaml
kubectl -n cms get pods
kubectl -n cms port-forward 80
```
[Environment Variables](https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/) for pods
## Secrets
```
kubectl -n cms create secret generic wordpress `
--from-literal WORDPRESS_DB_HOST=mysql `
--from-literal WORDPRESS_DB_USER=exampleuser `
--from-literal WORDPRESS_DB_PASSWORD=examplepassword `
--from-literal WORDPRESS_DB_NAME=exampledb
kubectl -n cms get secret
```
[How to use](https://kubernetes.io/docs/concepts/configuration/secret/) secrets in pods
Apply changes to our deployment
```
kubectl -n cms apply -f deploy.yaml
```
We can `port-forward` again, and notice an error connecting to the database because the database does not exist
# Statefulset
Statefulset [documentation](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/)
# Storage Class
StorageClass [documentation](https://kubernetes.io/docs/concepts/storage/storage-classes/)
# Services
Services [documentation](https://kubernetes.io/docs/concepts/services-networking/service/)
Let's deploy our `mysql` using what we learnt above:
```
kubectl -n cms apply -f .\statefulset.yaml
```