This cluster definition is based on the common infrastructure for Continuos Deployment and Observability described in edgelevel/gitops-k8s and is customized for DigitalOcean
The bootstrap chart has two main purposes
- import the seed chart to reuse and extend the common infrastracture
- declare an Application of Applications
To setup a cluster follow these instructions
- install the required tools
- create a 3 nodes Kubernetes cluster on DigitalOcean
- configure the DNS
- buy a domain from a registrar
- point to DigitalOcean nameservers from a domain name registrar in order to manage DNS records declaratively from the cluster
- add a domain to your project from the control panel
- create a Personal Access Token
- apply the bootstrap chart
make
- port-forward ArgoCD (see step 3) and override these application parameters from the UI
applications-do
>digitalOceanToken
with the Personal Access Token to create a LoadBalancerapplications-do
>domain
e.g.example.com
elasticsearch
>volumeClaimTemplate.storageClassName
withdo-block-storage
specific for DigitalOcean- TODO fix argocd secrets issue to automate the steps above
- Sync all the applications from the UI manually
Applications in this repository are defined in the parent applications-do chart and are logically split into folders which represent Kubernetes namespaces
ambassador
namespace is dedicated for Ambassador and defines
- an application with a service annotation to allow external-dns to automatically create DNS records and internally route all the requests
ambassador-mapping
contains the definitions of all the routes in form of helm chartambassador.example.com
kubernetes-dashboard.example.com
kube-ops-view.example.com
prometheus.example.com
alertmanager.example.com
grafana.example.com
elasticsearch.example.com
cerebro.example.com
kibana.example.com
bot.example.com
- TODO
argocd.example.com
kube-do
namespace is dedicated for system wide resources tightly coupled to DigitalOcean
external-dns
synchronizes exposed Kubernetes Services and Ingresses with DNS providers
bot
namespace is dedicated for a Scala pure FP bot to scrape the balance of mobile carriers
Resources
- An Introduction to Managing DNS
- Domains and DNS
- An Introduction to the Kubernetes DNS Service
- How To Automatically Manage DNS Records From DigitalOcean Kubernetes Using ExternalDNS
- How to Manage CAA Records
- An Introduction to Let's Encrypt
- Setting Up a Domain with SSL on DigitalOcean Kubernetes using ExternalDNS and Helm
- Kubernetes Tutorial: Managing TLS Certificates with Ambassador
- Kubernetes secrets
- Using Kubernetes Secrets
- Kubernetes External Secrets
TODO
- try to automate the bootstrap steps using the API