运行 skaffold dev 时从拉取镜像更改为本地构建

问题描述 投票:0回答:1

我正在尝试使用 Skaffold 和 k3d 创建本地开发环境。

我的环境由多个 Skaffold 模块组成,每个模块都声明一个开发配置文件。主要

skaffold.yaml
由多个 require 语句组成,这些语句指向多个 git 存储库(每个存储库都有自己的 skaffold 配置)。

为了准备集群,当我使用 k3d 创建集群时,我运行

skaffold run -p dev

每个 skaffold 模块都声明一个这样的配置文件:

profiles:
  - name: dev
    build:
      local:
        push: false
        useDockerCLI: false
      artifacts:
        - image: my-org/my-image
          docker: {}
          sync:
            infer:
              - '**/*.ts'

如果我想在特定模块上进行开发,那么此配置文件很有用,但是当我想设置整个集群时,skaffold 将构建所有图像,而不是从存储库中提取它们。

我想要实现的是当我想在特定模块上运行

skaffold dev
时在本地构建,但当我针对我的
skaffold run
入口点运行
skaffold.yaml
时提取图像。

可以这样做吗?

谢谢

docker kubernetes continuous-deployment skaffold k3d
1个回答
0
投票

我想要实现的是当我想在特定模块上运行

skaffold dev
时在本地构建,但当我针对我的
skaffold run
入口点运行
skaffold.yaml
时提取图像。

使用 Skaffold 配置文件,就像您在本地开发问题中所做的那样,是一个好主意,但是您也可以引入一个 additional 配置文件,专门用于在运行主

skaffold.yaml
时从存储库中提取图像。

你会:

  • 每个模块中现有的
    dev
    配置文件,配置为本地开发,允许使用
    push: false
    等特定设置进行本地构建。它非常适合处理单个模块。
  • 用于拉取图像的新配置文件(
    pull-images
    配置文件),引入用于处理您想要从存储库拉取图像而不是在本地构建图像的特定情况。该配置文件应在每个模块的
    skaffold.yaml
    中定义。

主要

skaffold.yaml
使用
requires
语句
来包含所有模块。
通过在运行
pull-images
时指定
skaffold run -p pull-images
配置文件,它会告诉 Skaffold 对每个模块使用
pull-images
配置文件。这会导致为整个集群设置拉取映像而不是构建它们。

这可以让您区分两种情况:

  • 本地开发 (
    skaffold dev
    ):在处理各个模块时,使用
    dev
    配置文件在本地构建映像。
  • 集群设置 (
    skaffold run
    ):在设置整个集群时,使用
    pull-images
    配置文件从所有模块的存储库中提取映像。
┌──────────────────────────────┐   ┌──────────────────────────────┐
│ Individual Module Development│   │        Cluster Setup         │
└──────────────────────────────┘   └──────────────────────────────┘
            │                                        │            
            │                                        │            
            ▼                                        ▼            
┌──────────────────────────────┐   ┌──────────────────────────────┐
│       skaffold dev           │   │ skaffold run -p pull-images  │
└──────────────────────────────┘   └──────────────────────────────┘
            │                                        │            
            │                                        │            
            ▼                                        ▼            
┌──────────────────────────────┐   ┌──────────────────────────────┐
│          dev profile         │   │       pull-images profile    │
│      (Build Locally)         │   │    (Pull from Repository)    │
└──────────────────────────────┘   └──────────────────────────────┘

您的模块 Skaffold 配置将是:

profiles:
  - name: dev
    # Your existing dev profile configuration
  - name: pull-images
    build:
      artifacts:
        - image: my-org/my-image
          docker:
            buildArgs:
              PULL_IMAGE: "true"

在你的主要

skaffold.yaml

requires:
  - path: ./path-to-module
    profiles: [pull-images]

将这些更改应用到示例模块的

skaffold.yaml
:

profiles:
  - name: dev
    build:
      local:
        push: false
        useDockerCLI: false
      artifacts:
        - image: my-org/my-image
          docker: {}
          sync:
            infer:
              - '**/*.ts'
  - name: pull-images
    build:
      artifacts:
        - image: my-org/my-image
          docker:
            buildArgs:
              PULL_IMAGE: "true"
© www.soinside.com 2019 - 2024. All rights reserved.