64 lines
3.9 KiB
Markdown
64 lines
3.9 KiB
Markdown
# Modern Container Application Reference Architecture
|
|
|
|
## Introduction
|
|
Modern application architecture is characterized by four key features: scalability, portability, resilience, and agility. These fundamentals underpin many different aspects of modern architecture.
|
|
|
|
### Characteristics
|
|
- **Scalability:** Capable of scaling up or down quickly and seamlessly to adapt to changing global demands.
|
|
- **Portability:** Easily deployable across a variety of devices and infrastructure, whether in public clouds or local environments.
|
|
- **Resilience:** Able to perform failover in new clusters or virtual environments across various availability zones, clouds, or data centers.
|
|
- **Agility:** Facilitates updates through automated CI/CD pipelines, enhancing code velocity and frequency of code pushes.
|
|
|
|
## Reference Architecture
|
|
This repository offers a reference architecture for modern container applications, emphasizing the following principles:
|
|
|
|

|
|
|
|
- **Platform Agnosticism:** Designed to be independent of platforms, allowing deployment on various container orchestration platforms like Kubernetes (k8s) or k3s.
|
|
- **Open Source Software Priority:** Prioritizes open-source software (OSS) for robust, widely-adopted tools and technology.
|
|
- **Everything As Code:** Utilizes Infrastructure as Code (IaC) for defining and configuring all necessary application resources.
|
|
- **CI/CD Automation:** Implements continuous integration and deployment pipelines using GitHub CI.
|
|
- **Security-Conscious Development:** Adopts security best practices at every stage, including containerized builds and secure container repositories like Harbor.
|
|
- **Distributed Storage:** Includes distributed storage solutions for high availability and scalability of application data.
|
|
|
|
## Toolchain
|
|
- **Pipeline:** GitHub CI
|
|
- **IaC Tools:** Pulumi/Terraform
|
|
- **Code Repository:** GitHub
|
|
- **Container Repository:** Harbor
|
|
- **Monitoring:**
|
|
- Logs: Loki
|
|
- Tracing: Deepflow
|
|
- Metrics: Prometheus
|
|
- Notifications: Alertmanager
|
|
- **Data Storage:** Clickhouse
|
|
- **Visualization:** Grafana
|
|
- **Cluster Management:** Kubernetes (k8s), Lightweight Kubernetes (k3s)
|
|
- **Ingress:** Nginx
|
|
- **DNS:** DNS Service SaaS
|
|
|
|
## Getting Started
|
|
Follow these steps to start using this reference architecture.
|
|
|
|
## Documentation
|
|
1. [Multi-cluster Operations (I)](https://cloud.tencent.com/developer/article/2373761): Automated delivery, building, deployment, release, and monitoring.
|
|
2. [Multi-cluster Operations (II)](https://cloud.tencent.com/developer/article/2375570): Progressive application release.
|
|
|
|
## Issues
|
|
- **APISIX and External DNS Integration**
|
|
- **Metrics Collection with FluxCD, Flagger, and APISIX Ingress**
|
|
- **Monitoring of Canary Releases**
|
|
|
|
## To Do
|
|
- Multi-cluster Operations (III) to (VI) covering progressive release, multidimensional monitoring, vulnerability testing, and AIOps.
|
|
- SSL Certificate Management
|
|
- Apply for Let's Encrypt certificates and save them to Vault
|
|
- Configure CertManager to read certificates from Vault
|
|
|
|
## Contributions
|
|
Contributions to this reference architecture are welcome. Feel free to submit pull requests for suggestions, improvements, or bug fixes.
|
|
|
|
## License
|
|
Released under the GPL V3 license.
|
|
|