712 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			712 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Markdown
		
	
	
	
# Waypoint 集成示例
 | 
						|
 | 
						|
本文档提供了将Waypoint与现有基础设施和工具集成的具体示例。
 | 
						|
 | 
						|
## 1. 与Nomad集成
 | 
						|
 | 
						|
### 1.1 基本Nomad部署配置
 | 
						|
 | 
						|
```hcl
 | 
						|
app "api-service" {
 | 
						|
  build {
 | 
						|
    use "docker" {
 | 
						|
      dockerfile = "Dockerfile"
 | 
						|
      disable_entrypoint = true
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  deploy {
 | 
						|
    use "nomad" {
 | 
						|
      // Nomad集群地址
 | 
						|
      address = "http://nomad-server:4646"
 | 
						|
      
 | 
						|
      // 部署配置
 | 
						|
      datacenter = "dc1"
 | 
						|
      namespace = "default"
 | 
						|
      
 | 
						|
      // 资源配置
 | 
						|
      resources {
 | 
						|
        cpu    = 500
 | 
						|
        memory = 256
 | 
						|
      }
 | 
						|
      
 | 
						|
      // 服务配置
 | 
						|
      service_provider = "consul" {
 | 
						|
        service_name = "api-service"
 | 
						|
        tags         = ["api", "v1"]
 | 
						|
        
 | 
						|
        check {
 | 
						|
          type     = "http"
 | 
						|
          path     = "/health"
 | 
						|
          interval = "10s"
 | 
						|
          timeout  = "2s"
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
### 1.2 高级Nomad配置
 | 
						|
 | 
						|
```hcl
 | 
						|
app "web-app" {
 | 
						|
  deploy {
 | 
						|
    use "nomad" {
 | 
						|
      // 基本配置...
 | 
						|
      
 | 
						|
      // 存储卷配置
 | 
						|
      volume_mount {
 | 
						|
        volume      = "app-data"
 | 
						|
        destination = "/data"
 | 
						|
        read_only   = false
 | 
						|
      }
 | 
						|
      
 | 
						|
      // 网络配置
 | 
						|
      network {
 | 
						|
        mode = "bridge"
 | 
						|
        port "http" {
 | 
						|
          static = 8080
 | 
						|
          to     = 80
 | 
						|
        }
 | 
						|
      }
 | 
						|
      
 | 
						|
      // 环境变量
 | 
						|
      env {
 | 
						|
        NODE_ENV = "production"
 | 
						|
      }
 | 
						|
      
 | 
						|
      // 健康检查
 | 
						|
      health_check {
 | 
						|
        timeout = "5m"
 | 
						|
        check {
 | 
						|
          name   = "http-check"
 | 
						|
          route  = "/health"
 | 
						|
          method = "GET"
 | 
						|
          code   = 200
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
## 2. 与Vault集成
 | 
						|
 | 
						|
### 2.1 从Vault获取静态密钥
 | 
						|
 | 
						|
```hcl
 | 
						|
app "database-service" {
 | 
						|
  deploy {
 | 
						|
    use "nomad" {
 | 
						|
      // 基本配置...
 | 
						|
      
 | 
						|
      env {
 | 
						|
        // 从Vault获取数据库凭据
 | 
						|
        DB_USERNAME = dynamic("vault", {
 | 
						|
          path = "kv/data/database/creds"
 | 
						|
          key  = "username"
 | 
						|
        })
 | 
						|
        
 | 
						|
        DB_PASSWORD = dynamic("vault", {
 | 
						|
          path = "kv/data/database/creds"
 | 
						|
          key  = "password"
 | 
						|
        })
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
### 2.2 使用Vault动态密钥
 | 
						|
 | 
						|
```hcl
 | 
						|
app "api-service" {
 | 
						|
  deploy {
 | 
						|
    use "nomad" {
 | 
						|
      // 基本配置...
 | 
						|
      
 | 
						|
      template {
 | 
						|
        destination = "secrets/db-creds.txt"
 | 
						|
        data = <<EOF
 | 
						|
{{- with secret "database/creds/api-role" -}}
 | 
						|
DB_USERNAME={{ .Data.username }}
 | 
						|
DB_PASSWORD={{ .Data.password }}
 | 
						|
{{- end -}}
 | 
						|
EOF
 | 
						|
      }
 | 
						|
      
 | 
						|
      env_from_file = ["secrets/db-creds.txt"]
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
## 3. 与Consul集成
 | 
						|
 | 
						|
### 3.1 服务发现配置
 | 
						|
 | 
						|
```hcl
 | 
						|
app "frontend" {
 | 
						|
  deploy {
 | 
						|
    use "nomad" {
 | 
						|
      // 基本配置...
 | 
						|
      
 | 
						|
      service_provider = "consul" {
 | 
						|
        service_name = "frontend"
 | 
						|
        
 | 
						|
        meta {
 | 
						|
          version = "v1.2.3"
 | 
						|
          team    = "frontend"
 | 
						|
        }
 | 
						|
        
 | 
						|
        tags = ["web", "frontend"]
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
### 3.2 使用Consul KV存储配置
 | 
						|
 | 
						|
```hcl
 | 
						|
app "config-service" {
 | 
						|
  deploy {
 | 
						|
    use "nomad" {
 | 
						|
      // 基本配置...
 | 
						|
      
 | 
						|
      template {
 | 
						|
        destination = "config/app-config.json"
 | 
						|
        data = <<EOF
 | 
						|
{
 | 
						|
  "settings": {{ key "config/app-settings" | toJSON }},
 | 
						|
  "features": {{ key "config/features" | toJSON }}
 | 
						|
}
 | 
						|
EOF
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
## 4. 与Gitea Actions集成
 | 
						|
 | 
						|
### 4.1 基本CI/CD流水线
 | 
						|
 | 
						|
```yaml
 | 
						|
name: Build and Deploy
 | 
						|
 | 
						|
on:
 | 
						|
  push:
 | 
						|
    branches: [ main ]
 | 
						|
 | 
						|
jobs:
 | 
						|
  deploy:
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    steps:
 | 
						|
      - uses: actions/checkout@v2
 | 
						|
      
 | 
						|
      - name: Install Waypoint
 | 
						|
        run: |
 | 
						|
          curl -fsSL https://releases.hashicorp.com/waypoint/0.11.0/waypoint_0.11.0_linux_amd64.zip -o waypoint.zip
 | 
						|
          unzip waypoint.zip
 | 
						|
          sudo mv waypoint /usr/local/bin/          
 | 
						|
      
 | 
						|
      - name: Configure Waypoint
 | 
						|
        run: |
 | 
						|
          waypoint context create \
 | 
						|
            -server-addr=${{ secrets.WAYPOINT_SERVER_ADDR }} \
 | 
						|
            -server-auth-token=${{ secrets.WAYPOINT_AUTH_TOKEN }} \
 | 
						|
            -set-default ci-context          
 | 
						|
      
 | 
						|
      - name: Build and Deploy
 | 
						|
        run: waypoint up
 | 
						|
```
 | 
						|
 | 
						|
### 4.2 多环境部署流水线
 | 
						|
 | 
						|
```yaml
 | 
						|
name: Multi-Environment Deploy
 | 
						|
 | 
						|
on:
 | 
						|
  push:
 | 
						|
    branches: [ main, staging, production ]
 | 
						|
 | 
						|
jobs:
 | 
						|
  deploy:
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    steps:
 | 
						|
      - uses: actions/checkout@v2
 | 
						|
      
 | 
						|
      - name: Install Waypoint
 | 
						|
        run: |
 | 
						|
          curl -fsSL https://releases.hashicorp.com/waypoint/0.11.0/waypoint_0.11.0_linux_amd64.zip -o waypoint.zip
 | 
						|
          unzip waypoint.zip
 | 
						|
          sudo mv waypoint /usr/local/bin/          
 | 
						|
      
 | 
						|
      - name: Configure Waypoint
 | 
						|
        run: |
 | 
						|
          waypoint context create \
 | 
						|
            -server-addr=${{ secrets.WAYPOINT_SERVER_ADDR }} \
 | 
						|
            -server-auth-token=${{ secrets.WAYPOINT_AUTH_TOKEN }} \
 | 
						|
            -set-default ci-context          
 | 
						|
      
 | 
						|
      - name: Determine Environment
 | 
						|
        id: env
 | 
						|
        run: |
 | 
						|
          if [[ ${{ github.ref }} == 'refs/heads/main' ]]; then
 | 
						|
            echo "::set-output name=environment::development"
 | 
						|
          elif [[ ${{ github.ref }} == 'refs/heads/staging' ]]; then
 | 
						|
            echo "::set-output name=environment::staging"
 | 
						|
          elif [[ ${{ github.ref }} == 'refs/heads/production' ]]; then
 | 
						|
            echo "::set-output name=environment::production"
 | 
						|
          fi          
 | 
						|
      
 | 
						|
      - name: Build and Deploy
 | 
						|
        run: |
 | 
						|
          waypoint up -workspace=${{ steps.env.outputs.environment }}          
 | 
						|
```
 | 
						|
 | 
						|
## 5. 多云部署示例
 | 
						|
 | 
						|
### 5.1 AWS ECS部署
 | 
						|
 | 
						|
```hcl
 | 
						|
app "microservice" {
 | 
						|
  build {
 | 
						|
    use "docker" {}
 | 
						|
  }
 | 
						|
 | 
						|
  deploy {
 | 
						|
    use "aws-ecs" {
 | 
						|
      region = "us-west-2"
 | 
						|
      cluster = "production"
 | 
						|
      
 | 
						|
      service {
 | 
						|
        name = "microservice"
 | 
						|
        desired_count = 3
 | 
						|
        
 | 
						|
        load_balancer {
 | 
						|
          target_group_arn = "arn:aws:elasticloadbalancing:us-west-2:..."
 | 
						|
          container_name   = "microservice"
 | 
						|
          container_port   = 8080
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
### 5.2 Google Cloud Run部署
 | 
						|
 | 
						|
```hcl
 | 
						|
app "api" {
 | 
						|
  build {
 | 
						|
    use "docker" {}
 | 
						|
  }
 | 
						|
 | 
						|
  deploy {
 | 
						|
    use "google-cloud-run" {
 | 
						|
      project  = "my-gcp-project"
 | 
						|
      location = "us-central1"
 | 
						|
      
 | 
						|
      port = 8080
 | 
						|
      
 | 
						|
      capacity {
 | 
						|
        memory                     = 512
 | 
						|
        cpu_count                  = 1
 | 
						|
        max_requests_per_container = 10
 | 
						|
        request_timeout            = 300
 | 
						|
      }
 | 
						|
      
 | 
						|
      auto_scaling {
 | 
						|
        max_instances = 10
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
### 5.3 多云部署策略
 | 
						|
 | 
						|
```hcl
 | 
						|
// 使用变量决定部署目标
 | 
						|
variable "deploy_target" {
 | 
						|
  type    = string
 | 
						|
  default = "nomad"
 | 
						|
}
 | 
						|
 | 
						|
app "multi-cloud-app" {
 | 
						|
  build {
 | 
						|
    use "docker" {}
 | 
						|
  }
 | 
						|
 | 
						|
  deploy {
 | 
						|
    // 根据变量选择部署平台
 | 
						|
    use dynamic {
 | 
						|
      value = var.deploy_target
 | 
						|
      
 | 
						|
      // Nomad部署配置
 | 
						|
      nomad {
 | 
						|
        datacenter = "dc1"
 | 
						|
        // 其他Nomad配置...
 | 
						|
      }
 | 
						|
      
 | 
						|
      // AWS ECS部署配置
 | 
						|
      aws-ecs {
 | 
						|
        region = "us-west-2"
 | 
						|
        cluster = "production"
 | 
						|
        // 其他ECS配置...
 | 
						|
      }
 | 
						|
      
 | 
						|
      // Google Cloud Run部署配置
 | 
						|
      google-cloud-run {
 | 
						|
        project = "my-gcp-project"
 | 
						|
        location = "us-central1"
 | 
						|
        // 其他Cloud Run配置...
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
## 6. 高级发布策略
 | 
						|
 | 
						|
### 6.1 蓝绿部署
 | 
						|
 | 
						|
```hcl
 | 
						|
app "web-app" {
 | 
						|
  build {
 | 
						|
    use "docker" {}
 | 
						|
  }
 | 
						|
 | 
						|
  deploy {
 | 
						|
    use "nomad" {
 | 
						|
      // 基本部署配置...
 | 
						|
    }
 | 
						|
  }
 | 
						|
  
 | 
						|
  release {
 | 
						|
    use "nomad-bluegreen" {
 | 
						|
      service      = "web-app"
 | 
						|
      datacenter   = "dc1"
 | 
						|
      namespace    = "default"
 | 
						|
      
 | 
						|
      // 流量转移配置
 | 
						|
      traffic_step = 25  // 每次转移25%的流量
 | 
						|
      confirm_step = true  // 每步需要确认
 | 
						|
      
 | 
						|
      // 健康检查
 | 
						|
      health_check {
 | 
						|
        timeout = "2m"
 | 
						|
        check {
 | 
						|
          route  = "/health"
 | 
						|
          method = "GET"
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
### 6.2 金丝雀发布
 | 
						|
 | 
						|
```hcl
 | 
						|
app "api-service" {
 | 
						|
  build {
 | 
						|
    use "docker" {}
 | 
						|
  }
 | 
						|
 | 
						|
  deploy {
 | 
						|
    use "nomad" {
 | 
						|
      // 基本部署配置...
 | 
						|
    }
 | 
						|
  }
 | 
						|
  
 | 
						|
  release {
 | 
						|
    use "nomad-canary" {
 | 
						|
      service    = "api-service"
 | 
						|
      datacenter = "dc1"
 | 
						|
      
 | 
						|
      // 金丝雀配置
 | 
						|
      canary {
 | 
						|
        percentage = 10  // 先发布到10%的实例
 | 
						|
        duration   = "15m"  // 观察15分钟
 | 
						|
      }
 | 
						|
      
 | 
						|
      // 自动回滚配置
 | 
						|
      auto_rollback = true
 | 
						|
      
 | 
						|
      // 指标监控
 | 
						|
      metrics {
 | 
						|
        provider = "prometheus"
 | 
						|
        address  = "http://prometheus:9090"
 | 
						|
        query    = "sum(rate(http_requests_total{status=~\"5..\"}[5m])) / sum(rate(http_requests_total[5m])) > 0.01"
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
## 7. 自定义插件示例
 | 
						|
 | 
						|
### 7.1 自定义构建器插件
 | 
						|
 | 
						|
```go
 | 
						|
// custom_builder.go
 | 
						|
package main
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	sdk "github.com/hashicorp/waypoint-plugin-sdk"
 | 
						|
)
 | 
						|
 | 
						|
// CustomBuilder 实现自定义构建逻辑
 | 
						|
type CustomBuilder struct {
 | 
						|
	config BuildConfig
 | 
						|
}
 | 
						|
 | 
						|
type BuildConfig struct {
 | 
						|
	Command string `hcl:"command"`
 | 
						|
}
 | 
						|
 | 
						|
// ConfigSet 设置配置
 | 
						|
func (b *CustomBuilder) ConfigSet(config interface{}) error {
 | 
						|
	c, ok := config.(*BuildConfig)
 | 
						|
	if !ok {
 | 
						|
		return fmt.Errorf("invalid configuration")
 | 
						|
	}
 | 
						|
	b.config = *c
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
// BuildFunc 执行构建
 | 
						|
func (b *CustomBuilder) BuildFunc() interface{} {
 | 
						|
	return b.build
 | 
						|
}
 | 
						|
 | 
						|
func (b *CustomBuilder) build(ctx context.Context, ui terminal.UI) (*Binary, error) {
 | 
						|
	// 执行自定义构建命令
 | 
						|
	cmd := exec.CommandContext(ctx, "sh", "-c", b.config.Command)
 | 
						|
	cmd.Stdout = ui.Output()
 | 
						|
	cmd.Stderr = ui.Error()
 | 
						|
	
 | 
						|
	if err := cmd.Run(); err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	
 | 
						|
	return &Binary{
 | 
						|
		Source: "custom",
 | 
						|
	}, nil
 | 
						|
}
 | 
						|
 | 
						|
// 注册插件
 | 
						|
func main() {
 | 
						|
	sdk.Main(sdk.WithComponents(&CustomBuilder{}))
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
### 7.2 使用自定义插件
 | 
						|
 | 
						|
```hcl
 | 
						|
app "custom-app" {
 | 
						|
  build {
 | 
						|
    use "custom" {
 | 
						|
      command = "make build"
 | 
						|
    }
 | 
						|
  }
 | 
						|
  
 | 
						|
  deploy {
 | 
						|
    use "nomad" {
 | 
						|
      // 部署配置...
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
## 8. 监控和可观测性集成
 | 
						|
 | 
						|
### 8.1 Prometheus集成
 | 
						|
 | 
						|
```hcl
 | 
						|
app "monitored-app" {
 | 
						|
  deploy {
 | 
						|
    use "nomad" {
 | 
						|
      // 基本配置...
 | 
						|
      
 | 
						|
      // Prometheus注解
 | 
						|
      service_provider = "consul" {
 | 
						|
        service_name = "monitored-app"
 | 
						|
        
 | 
						|
        meta {
 | 
						|
          "prometheus.io/scrape" = "true"
 | 
						|
          "prometheus.io/path"   = "/metrics"
 | 
						|
          "prometheus.io/port"   = "8080"
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
### 8.2 与ELK堆栈集成
 | 
						|
 | 
						|
```hcl
 | 
						|
app "logging-app" {
 | 
						|
  deploy {
 | 
						|
    use "nomad" {
 | 
						|
      // 基本配置...
 | 
						|
      
 | 
						|
      // 日志配置
 | 
						|
      logging {
 | 
						|
        type = "fluentd"
 | 
						|
        config {
 | 
						|
          fluentd_address = "fluentd.service.consul:24224"
 | 
						|
          tag             = "app.${nomad.namespace}.${app.name}"
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
## 9. 本地开发工作流
 | 
						|
 | 
						|
### 9.1 本地开发配置
 | 
						|
 | 
						|
```hcl
 | 
						|
app "dev-app" {
 | 
						|
  build {
 | 
						|
    use "docker" {}
 | 
						|
  }
 | 
						|
 | 
						|
  deploy {
 | 
						|
    use "docker" {
 | 
						|
      service_port = 3000
 | 
						|
      
 | 
						|
      // 开发环境特定配置
 | 
						|
      env {
 | 
						|
        NODE_ENV = "development"
 | 
						|
        DEBUG    = "true"
 | 
						|
      }
 | 
						|
      
 | 
						|
      // 挂载源代码目录
 | 
						|
      binds {
 | 
						|
        source      = abspath("./src")
 | 
						|
        destination = "/app/src"
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
### 9.2 本地与远程环境切换
 | 
						|
 | 
						|
```hcl
 | 
						|
variable "environment" {
 | 
						|
  type    = string
 | 
						|
  default = "local"
 | 
						|
}
 | 
						|
 | 
						|
app "fullstack-app" {
 | 
						|
  build {
 | 
						|
    use "docker" {}
 | 
						|
  }
 | 
						|
 | 
						|
  deploy {
 | 
						|
    // 根据环境变量选择部署方式
 | 
						|
    use dynamic {
 | 
						|
      value = var.environment
 | 
						|
      
 | 
						|
      // 本地开发
 | 
						|
      local {
 | 
						|
        use "docker" {
 | 
						|
          // 本地Docker配置...
 | 
						|
        }
 | 
						|
      }
 | 
						|
      
 | 
						|
      // 开发环境
 | 
						|
      dev {
 | 
						|
        use "nomad" {
 | 
						|
          // 开发环境Nomad配置...
 | 
						|
        }
 | 
						|
      }
 | 
						|
      
 | 
						|
      // 生产环境
 | 
						|
      prod {
 | 
						|
        use "nomad" {
 | 
						|
          // 生产环境Nomad配置...
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
## 10. 多应用协调
 | 
						|
 | 
						|
### 10.1 依赖管理
 | 
						|
 | 
						|
```hcl
 | 
						|
project = "microservices"
 | 
						|
 | 
						|
app "database" {
 | 
						|
  // 数据库服务配置...
 | 
						|
}
 | 
						|
 | 
						|
app "backend" {
 | 
						|
  // 后端API配置...
 | 
						|
  
 | 
						|
  // 声明依赖关系
 | 
						|
  depends_on = ["database"]
 | 
						|
}
 | 
						|
 | 
						|
app "frontend" {
 | 
						|
  // 前端配置...
 | 
						|
  
 | 
						|
  // 声明依赖关系
 | 
						|
  depends_on = ["backend"]
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
### 10.2 共享配置
 | 
						|
 | 
						|
```hcl
 | 
						|
// 定义共享变量
 | 
						|
variable "version" {
 | 
						|
  type    = string
 | 
						|
  default = "1.0.0"
 | 
						|
}
 | 
						|
 | 
						|
variable "environment" {
 | 
						|
  type    = string
 | 
						|
  default = "development"
 | 
						|
}
 | 
						|
 | 
						|
// 共享函数
 | 
						|
function "service_name" {
 | 
						|
  params = [name]
 | 
						|
  result = "${var.environment}-${name}"
 | 
						|
}
 | 
						|
 | 
						|
// 应用配置
 | 
						|
app "api" {
 | 
						|
  build {
 | 
						|
    use "docker" {
 | 
						|
      tag = "${var.version}"
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  deploy {
 | 
						|
    use "nomad" {
 | 
						|
      service_provider = "consul" {
 | 
						|
        service_name = service_name("api")
 | 
						|
      }
 | 
						|
      
 | 
						|
      env {
 | 
						|
        APP_VERSION = var.version
 | 
						|
        ENVIRONMENT = var.environment
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
} |