Fix dynamic variable
This commit is contained in:
parent
ff612d2b2a
commit
3439cb7376
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
tasko/
|
||||
tasko-chart/
|
||||
262
DEPLOYMENT.md
262
DEPLOYMENT.md
@ -1,262 +0,0 @@
|
||||
# Kubernetes Deployment Guide
|
||||
|
||||
This repository contains a shared Helm chart (`app-chart`) that can be used to deploy multiple applications with the same architecture pattern.
|
||||
|
||||
## Repository Structure
|
||||
|
||||
```
|
||||
.
|
||||
├── app-chart/ # Shared Helm chart template
|
||||
│ ├── Chart.yaml
|
||||
│ ├── values.yaml # Default values
|
||||
│ ├── README.md # Detailed documentation
|
||||
│ └── templates/ # Kubernetes manifests templates
|
||||
├── tasko/ # Tasko application overrides
|
||||
│ ├── values.yaml # Tasko-specific values
|
||||
│ └── cname.yaml # DNS configuration
|
||||
├── my-recipes/ # My-Recipes application overrides
|
||||
│ ├── values.yaml # My-Recipes-specific values
|
||||
│ └── cname.yaml # DNS configuration
|
||||
└── my-recipes-chart/ # Old my-recipes chart (deprecated)
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Deploy Tasko Application
|
||||
|
||||
```bash
|
||||
# Install
|
||||
helm install tasko ./app-chart -f tasko/values.yaml -n my-apps --create-namespace
|
||||
|
||||
# Upgrade
|
||||
helm upgrade tasko ./app-chart -f tasko/values.yaml -n my-apps
|
||||
|
||||
# Uninstall
|
||||
helm uninstall tasko -n my-apps
|
||||
```
|
||||
|
||||
### Deploy My-Recipes Application
|
||||
|
||||
```bash
|
||||
# Install
|
||||
helm install my-recipes ./app-chart -f my-recipes/values.yaml -n my-apps --create-namespace
|
||||
|
||||
# Upgrade
|
||||
helm upgrade my-recipes ./app-chart -f my-recipes/values.yaml -n my-apps
|
||||
|
||||
# Uninstall
|
||||
helm uninstall my-recipes -n my-apps
|
||||
```
|
||||
|
||||
## Application URLs
|
||||
|
||||
### Tasko
|
||||
- Frontend: https://tasko.dvirlabs.com
|
||||
- Backend API: https://api-tasko.dvirlabs.com
|
||||
|
||||
### My-Recipes
|
||||
- Frontend: https://my-recipes.dvirlabs.com
|
||||
- Backend API: https://api-my-recipes.dvirlabs.com
|
||||
|
||||
## Adding a New Application
|
||||
|
||||
1. **Create application directory**:
|
||||
```bash
|
||||
mkdir <app-name>
|
||||
```
|
||||
|
||||
2. **Create `<app-name>/values.yaml`**:
|
||||
```yaml
|
||||
global:
|
||||
namespace: my-apps
|
||||
|
||||
backend:
|
||||
image:
|
||||
repository: harbor.dvirlabs.com/my-apps/<app-name>-backend
|
||||
tag: "latest"
|
||||
service:
|
||||
port: 8000
|
||||
targetPort: 8000
|
||||
ingress:
|
||||
hosts:
|
||||
- host: api-<app-name>.dvirlabs.com
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
tls:
|
||||
- secretName: api-<app-name>-tls
|
||||
hosts:
|
||||
- api-<app-name>.dvirlabs.com
|
||||
|
||||
frontend:
|
||||
image:
|
||||
repository: harbor.dvirlabs.com/my-apps/<app-name>-frontend
|
||||
tag: "latest"
|
||||
env:
|
||||
VITE_API_URL: "https://api-<app-name>.dvirlabs.com"
|
||||
ingress:
|
||||
hosts:
|
||||
- host: <app-name>.dvirlabs.com
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
tls:
|
||||
- secretName: <app-name>-tls
|
||||
hosts:
|
||||
- <app-name>.dvirlabs.com
|
||||
|
||||
postgres:
|
||||
user: <app-name>_user
|
||||
password: <secure-password>
|
||||
database: <app-name>_db
|
||||
```
|
||||
|
||||
3. **Create `<app-name>/cname.yaml`**:
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: <app-name>-cname
|
||||
namespace: my-apps
|
||||
data:
|
||||
frontend: <app-name>.dvirlabs.com
|
||||
backend: api-<app-name>.dvirlabs.com
|
||||
```
|
||||
|
||||
4. **Deploy**:
|
||||
```bash
|
||||
helm install <app-name> ./app-chart -f <app-name>/values.yaml -n my-apps
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Each application can override the base configuration by providing custom values in their `values.yaml` file. Common overrides include:
|
||||
|
||||
- Image repository and tags
|
||||
- Resource limits and requests
|
||||
- Environment variables
|
||||
- Ingress hostnames
|
||||
- Database credentials
|
||||
- Replica counts
|
||||
|
||||
See `app-chart/README.md` for detailed configuration options.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Kubernetes cluster (1.19+)
|
||||
- Helm 3.0+
|
||||
- Traefik Ingress Controller installed
|
||||
- cert-manager installed (for automatic TLS certificates)
|
||||
- kubectl configured to access your cluster
|
||||
|
||||
## DNS Configuration
|
||||
|
||||
Configure DNS records to point to your ingress controller:
|
||||
|
||||
```
|
||||
<app-name>.dvirlabs.com CNAME/A <ingress-loadbalancer-ip>
|
||||
api-<app-name>.dvirlabs.com CNAME/A <ingress-loadbalancer-ip>
|
||||
```
|
||||
|
||||
## Monitoring Deployments
|
||||
|
||||
```bash
|
||||
# Check all deployments
|
||||
kubectl get all -n my-apps
|
||||
|
||||
# Check specific application
|
||||
kubectl get pods -n my-apps -l app.kubernetes.io/instance=tasko
|
||||
|
||||
# View logs
|
||||
kubectl logs -n my-apps -l component=backend --tail=100 -f
|
||||
kubectl logs -n my-apps -l component=frontend --tail=100 -f
|
||||
|
||||
# Check ingress
|
||||
kubectl get ingress -n my-apps
|
||||
```
|
||||
|
||||
## Database Management
|
||||
|
||||
### Access PostgreSQL
|
||||
|
||||
```bash
|
||||
# Port forward to access database locally
|
||||
kubectl port-forward -n my-apps svc/tasko-db 5432:5432
|
||||
|
||||
# Connect using psql
|
||||
psql postgresql://tasko_user:tasko_password@localhost:5432/tasko_db
|
||||
```
|
||||
|
||||
### Backup Database
|
||||
|
||||
```bash
|
||||
# Backup
|
||||
kubectl exec -n my-apps tasko-db-0 -- pg_dump -U tasko_user tasko_db > backup.sql
|
||||
|
||||
# Restore
|
||||
kubectl exec -i -n my-apps tasko-db-0 -- psql -U tasko_user tasko_db < backup.sql
|
||||
```
|
||||
|
||||
## CI/CD Integration
|
||||
|
||||
The chart works seamlessly with CI/CD pipelines. Example with Woodpecker CI:
|
||||
|
||||
```yaml
|
||||
steps:
|
||||
deploy:
|
||||
image: alpine/helm:3.12.0
|
||||
commands:
|
||||
- helm upgrade --install tasko ./app-chart
|
||||
-f tasko/values.yaml
|
||||
--set backend.image.tag=${CI_COMMIT_SHA}
|
||||
--set frontend.image.tag=${CI_COMMIT_SHA}
|
||||
-n my-apps
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Pod not starting
|
||||
```bash
|
||||
kubectl describe pod -n my-apps <pod-name>
|
||||
kubectl logs -n my-apps <pod-name>
|
||||
```
|
||||
|
||||
### Database connection issues
|
||||
```bash
|
||||
# Check if database is running
|
||||
kubectl get pods -n my-apps -l component=database
|
||||
|
||||
# Test connection from backend pod
|
||||
kubectl exec -n my-apps <backend-pod> -- env | grep DB_
|
||||
```
|
||||
|
||||
### Ingress not working
|
||||
```bash
|
||||
# Check ingress configuration
|
||||
kubectl describe ingress -n my-apps <app-name>-backend
|
||||
kubectl describe ingress -n my-apps <app-name>-frontend
|
||||
|
||||
# Check cert-manager certificates
|
||||
kubectl get certificate -n my-apps
|
||||
kubectl describe certificate -n my-apps <app-name>-tls
|
||||
```
|
||||
|
||||
## Migration from Old Chart
|
||||
|
||||
If migrating from the old `my-recipes-chart`:
|
||||
|
||||
1. **Backup your data**
|
||||
2. **Update DNS** if hostnames changed
|
||||
3. **Deploy with new chart**:
|
||||
```bash
|
||||
helm uninstall my-recipes # Old release
|
||||
helm install my-recipes ./app-chart -f my-recipes/values.yaml -n my-apps
|
||||
```
|
||||
|
||||
## Support
|
||||
|
||||
For detailed documentation, see:
|
||||
- `app-chart/README.md` - Complete chart documentation
|
||||
- `helm/README.md` - Docker image building and deployment
|
||||
|
||||
For issues and questions, please open an issue in the repository.
|
||||
@ -12,6 +12,10 @@ RUN npm ci
|
||||
# Copy source code
|
||||
COPY . .
|
||||
|
||||
# Accept build argument for API URL
|
||||
ARG VITE_API_URL=https://api-tasko.dvirlabs.com
|
||||
ENV VITE_API_URL=$VITE_API_URL
|
||||
|
||||
# Build the application
|
||||
RUN npm run build
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user