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>digitalOceanTokenwith the Personal Access Token to create a LoadBalancerapplications-do>domaine.g.example.comelasticsearch>volumeClaimTemplate.storageClassNamewithdo-block-storagespecific 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-mappingcontains the definitions of all the routes in form of helm chartambassador.example.comkubernetes-dashboard.example.comkube-ops-view.example.comprometheus.example.comalertmanager.example.comgrafana.example.comelasticsearch.example.comcerebro.example.comkibana.example.combot.example.com- TODO
argocd.example.com
kube-do namespace is dedicated for system wide resources tightly coupled to DigitalOcean
external-dnssynchronizes 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