Waypoint
"Clase de la hoja"
########################################################################################################################################################################################################################################################## Copiar todos los comandos
■/div titulada
Comandos completos HashiCorp Waypoint y flujos de trabajo para el despliegue de aplicaciones y la gestión de lanzamientos en plataformas.
Instalación
Command |
Description |
waypoint version |
Show Waypoint version |
waypoint server install -platform=docker |
Install server on Docker |
waypoint server install -platform=kubernetes |
Install server on Kubernetes |
waypoint context create -server-addr=localhost:9701 |
Create context |
waypoint login |
Login to Waypoint server |
Project Management
Operaciones de proyectos
Command |
Description |
waypoint init |
Initialize project |
waypoint project list |
List projects |
waypoint project inspect myapp |
Inspect project |
waypoint project destroy myapp |
Destroy project |
Aplicación Lifecycle
Build, Deploy, Release
Command |
Description |
waypoint build |
Build application |
waypoint deploy |
Deploy application |
waypoint release |
Release application |
waypoint up |
Build, deploy, and release |
Gestión de aplicaciones
Command |
Description |
waypoint status |
Show application status |
waypoint logs |
Show application logs |
waypoint logs -follow |
Follow application logs |
waypoint exec /bin/bash |
Execute command in deployment |
Gestión del espacio de trabajo
Command |
Description |
waypoint workspace list |
List workspaces |
waypoint workspace create dev |
Create workspace |
waypoint workspace use dev |
Switch workspace |
Ejemplos de configuración
Punto básico.hcl
project = "myapp"
app "web" \\\\{
labels = \\\\{
"service" = "web"
"env" = "dev"
\\\\}
build \\\\{
use "docker" \\\\{
dockerfile = "./Dockerfile"
\\\\}
registry \\\\{
use "docker" \\\\{
image = "myapp"
tag = "latest"
\\\\}
\\\\}
\\\\}
deploy \\\\{
use "docker" \\\\{
service_port = 3000
\\\\}
\\\\}
release \\\\{
use "docker" \\\\{\\\\}
\\\\}
\\\\}
Kubernetes Deployment
project = "myapp"
app "web" \\\\{
build \\\\{
use "docker" \\\\{
dockerfile = "./Dockerfile"
\\\\}
registry \\\\{
use "docker" \\\\{
image = "registry.example.com/myapp"
tag = gitrefpretty()
\\\\}
\\\\}
\\\\}
deploy \\\\{
use "kubernetes" \\\\{
probe_path = "/health"
replicas = 3
resources \\\\{
requests \\\\{
memory = "256Mi"
cpu = "250m"
\\\\}
limits \\\\{
memory = "512Mi"
cpu = "500m"
\\\\}
\\\\}
\\\\}
\\\\}
release \\\\{
use "kubernetes" \\\\{
load_balancer = true
port = 80
\\\\}
\\\\}
\\\\}
AWS ECS Deployment
project = "myapp"
app "web" \\\\{
build \\\\{
use "docker" \\\\{
dockerfile = "./Dockerfile"
\\\\}
registry \\\\{
use "aws-ecr" \\\\{
region = "us-west-2"
repository = "myapp"
tag = gitrefpretty()
\\\\}
\\\\}
\\\\}
deploy \\\\{
use "aws-ecs" \\\\{
region = "us-west-2"
cluster = "production"
memory = 512
cpu = 256
count = 3
subnets = [
"subnet-12345",
"subnet-67890"
]
security_groups = [
"sg-abcdef"
]
\\\\}
\\\\}
release \\\\{
use "aws-alb" \\\\{
listener_arn = "arn:aws:elasticloadbalancing:..."
health_check \\\\{
enabled = true
healthy_threshold = 2
interval = 30
matcher = "200"
path = "/health"
port = "traffic-port"
protocol = "HTTP"
timeout = 5
unhealthy_threshold = 2
\\\\}
\\\\}
\\\\}
\\\\}
Multi-App Project
project = "microservices"
app "api" \\\\{
labels = \\\\{
"service" = "api"
"tier" = "backend"
\\\\}
build \\\\{
use "docker" \\\\{
dockerfile = "./api/Dockerfile"
\\\\}
registry \\\\{
use "docker" \\\\{
image = "mycompany/api"
tag = gitrefpretty()
\\\\}
\\\\}
\\\\}
deploy \\\\{
use "kubernetes" \\\\{
probe_path = "/health"
replicas = 2
env = \\\\{
"DATABASE_URL" = var.database_url
"REDIS_URL" = var.redis_url
\\\\}
\\\\}
\\\\}
release \\\\{
use "kubernetes" \\\\{
port = 8080
\\\\}
\\\\}
\\\\}
app "frontend" \\\\{
labels = \\\\{
"service" = "frontend"
"tier" = "frontend"
\\\\}
build \\\\{
use "docker" \\\\{
dockerfile = "./frontend/Dockerfile"
\\\\}
registry \\\\{
use "docker" \\\\{
image = "mycompany/frontend"
tag = gitrefpretty()
\\\\}
\\\\}
\\\\}
deploy \\\\{
use "kubernetes" \\\\{
probe_path = "/"
replicas = 3
\\\\}
\\\\}
release \\\\{
use "kubernetes" \\\\{
load_balancer = true
port = 80
\\\\}
\\\\}
\\\\}
Variables y Configuración
Definiciones variables
variable "database_url" \\\\{
description = "Database connection URL"
type = string
sensitive = true
\\\\}
variable "replicas" \\\\{
description = "Number of replicas"
type = number
default = 2
\\\\}
variable "environment" \\\\{
description = "Environment name"
type = string
default = "dev"
\\\\}
Uso de variables
app "web" \\\\{
deploy \\\\{
use "kubernetes" \\\\{
replicas = var.replicas
env = \\\\{
"DATABASE_URL" = var.database_url
"ENVIRONMENT" = var.environment
\\\\}
\\\\}
\\\\}
\\\\}
Funciones y expresiones
Funciones incorporadas
app "web" \\\\{
build \\\\{
registry \\\\{
use "docker" \\\\{
image = "myapp"
tag = gitrefpretty() # Git reference
\\\\}
\\\\}
\\\\}
deploy \\\\{
use "kubernetes" \\\\{
env = \\\\{
"BUILD_TIME" = timestamp()
"GIT_SHA" = gitsha()
"VERSION" = gitrefpretty()
\\\\}
\\\\}
\\\\}
\\\\}
Plugins y Constructores
Plugin de construcción personalizado
app "web" \\\\{
build \\\\{
use "pack" \\\\{
builder = "heroku/buildpacks:20"
\\\\}
\\\\}
\\\\}
Plugin de despliegue personalizado
app "web" \\\\{
deploy \\\\{
use "nomad" \\\\{
datacenter = "dc1"
region = "global"
resources \\\\{
cpu = 500
memory = 256
\\\\}
\\\\}
\\\\}
\\\\}
Buenas prácticas
Estructura del proyecto
project/
├── waypoint.hcl
├── .waypointignore
├── apps/
│ ├── api/
│ │ ├── Dockerfile
│ │ └── src/
│ └── frontend/
│ ├── Dockerfile
│ └── src/
├── infrastructure/
│ └── terraform/
└── scripts/
└── deploy.sh
Seguridad
- Secrets Management: Use tiendas secretas externas
- RBAC: Implementar el control de acceso basado en funciones
- Seguridad de red: Use redes seguras y cortafuegos
- Escaneamiento de imágenes: Escanear imágenes de contenedores
- Audit Logging: Activar el registro de auditoría
Ejecución
- ** Limitaciones de recursos**: establecer límites de recursos adecuados
- ** Comprobaciones de salud**: Realizar controles de salud adecuados
- Scaling: Configure auto-scaling
- Monitoring: Supervisar el rendimiento de la aplicación
- Caching: Implementar estrategias de caché
Operaciones
- ** Integración CI/CD**: Integrar con los oleoductos CI/CD
- ** Estrategia de retroceso**: Procedimientos de devolución del plan
- Deplomas de color verde: Uso de implementaciones verde-azul
- Libros de canario: Implementar las liberaciones canarias
- Monitoreo: Establecer una supervisión integral