62 lines
2.6 KiB
Markdown
62 lines
2.6 KiB
Markdown
|
# Preparing k8s cluster for real use
|
||
|
|
||
|
After deployng a cluster and adding an admin user you may be confused what to do next. When I started learning how to use k8s I was confused, because I couln't undestand how to make anythin work.
|
||
|
|
||
|
There are several components that you may want to install in you cluster. I will tell you about my setup.
|
||
|
|
||
|
1. Monitoring
|
||
|
- Prometheus
|
||
|
- Grafana
|
||
|
2. Network
|
||
|
- Istio
|
||
|
- MetalLB
|
||
|
3. Storage Provisioner
|
||
|
- Rook
|
||
|
4. Deployment tools
|
||
|
- Keel
|
||
|
|
||
|
There are many people that will say that I shouldn't stora data inside a cluster. But I will try to explain why I'm doing it.
|
||
|
To install most of them you can use `helm` charts. But when you've got a lot of helm package inside your cluster, i suppose, you'd like to have installation configured as code. So I will show how to use `Github Actions` to deploy charts.
|
||
|
|
||
|
## Monitoring
|
||
|
|
||
|
I'm using this helm chart: https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack
|
||
|
|
||
|
It will install `Prometheus`, `grafana` and `Alert-manager`. This is gonna be the first packages that I'm gonna install.
|
||
|
As you can see in `README.md` you can simply do
|
||
|
|
||
|
```
|
||
|
$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
|
||
|
$ helm repo update
|
||
|
$ helm install prometheus prometheus-community/kube-prometheus-stack
|
||
|
```
|
||
|
|
||
|
But when you've got several clusters or if one day your kube will fall and you will be trying to install all you packages from cli in the brand-new cluster, you mau want to automate theese steps. There a many ways to do it. You can just save the list of helm packages you need, you can write a script or create an Ansible playbook or role. But I guess, that the best way to do it is to create CI/CD pipeline that will install and update packages on pushes to repo. Of course you can run Ansible playbooks or scripts in CI/CI pipes, but this time I will show how to use Githun Actions for this kind of deployment.
|
||
|
|
||
|
1. Create a fresh repo (I won't share my repo this time because there is some kind of sensitive data)
|
||
|
2. Create a `/.github/workflows/` dir
|
||
|
3. You can arrange files and folders here as you want. We beggining with one cluster so let the structure be simple. Let's create a file `prometheus.yml`
|
||
|
|
||
|
```
|
||
|
name: Prometheus
|
||
|
on: ['deployment']
|
||
|
|
||
|
jobs:
|
||
|
deployment:
|
||
|
runs-on: 'ubuntu-latest'
|
||
|
steps:
|
||
|
- uses: actions/checkout@v1
|
||
|
|
||
|
- name: 'Deploy'
|
||
|
uses: 'deliverybot/helm@v1'
|
||
|
with:
|
||
|
release: 'nginx'
|
||
|
namespace: 'default'
|
||
|
chart: 'app'
|
||
|
token: '${{ github.token }}'
|
||
|
values: |
|
||
|
name: foobar
|
||
|
value-files: values.yaml
|
||
|
env:
|
||
|
KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}'
|
||
|
```
|