ko Easy Go 容器构建

ko 是一个适用于 Go 应用程序的简单、快速的容器镜像构建器

官方网站

  1. 镜像包含单个go应用程序,且对os基础镜像没有太多的依赖
  2. ko 通过本地机器上执行go build来构建镜像,因此无需安装docker。非常适合轻量级CI/CD用例

安装

安装

示例

环境变量

  1. KO_DOCKER_REPO: 镜像发布地址,必须配置。(KO_DOCKER_REPO='ko.local' 镜像保存到本地,不发布)
  2. KO_DEFAULTBASEIMAGE: 构建基础镜像地址,默认为cgr.dev/chainguard/static:latest
  3. KO_CONFIG_PATH: ko 配置文件的路径
  4. KO_DEFAULTPLATFORMS: 设置默认平台,默认为:linux/amd64,支持:linux/arm64linux/amd64

ko build

  1. 编写go见需要的脚本,必须是package main定义的func main()
timenow.go
package main

import (
	"fmt"
	"time"
)

func main() {
	fmt.Println(time.Now())
}

  1. ko build --insecure-registry .
  2. 可以通过docker images查看构建的镜像

通过参数,控制构建镜像的名称

文件层级
(base) ➜  example tree
.
└── timeapp.go

0 directories, 1 file
  1. ko build --insecure-registry .,镜像列表
ko.local/example-84e3e227f758f6819f890c8defb0db27                             db079a7eb3c0c7e11fa44b9c7e13be6896a4c78fa4773922895e87bf39e65323              98df57fab142   2 weeks ago     3.57MB
ko.local/example-84e3e227f758f6819f890c8defb0db27                             latest                                                                        98df57fab142   2 weeks ago     3.57MB
  1. build --insecure-registry --preserve-import-paths . 镜像列表
ko.local/github.com/google/ko/example                                         db079a7eb3c0c7e11fa44b9c7e13be6896a4c78fa4773922895e87bf39e65323              98df57fab142   2 weeks ago     3.57MB
ko.local/github.com/google/ko/example                                         latest                                                                        98df57fab142   2 weeks ago     3.57MB
  1. ko build --insecure-registry --base-import-paths . 镜像列表
ko.local/example                                                              db079a7eb3c0c7e11fa44b9c7e13be6896a4c78fa4773922895e87bf39e65323              98df57fab142   2 weeks ago     3.57MB
ko.local/example                                                              latest                                                                        98df57fab142   2 weeks ago     3.57MB

k8s 支持

ko resolve -f deployment.yaml 会生成一个k8s的yaml文件,可以直接执行

  1. 扫描配置文件中带有ko://前缀的值
  2. 对每一个唯一的ko://字符串,执行ko build <importpath>以构建和推送图像
  3. ko://使用构建图像的完整指定图像引用替换输入 YAML 中的前缀字符串
  4. 将解析后的 YAML 打印到标准输出。

ko apply

  1. 通过生成的yaml,执行配置 ko resolve -f config/ | kubectl apply -f -
  2. 直接使用内置的命令:ko apply -f config/
  3. 内置命令,添加参数;--后的参数都会传递给kubectl applyko apply -f config -- --context=foo --kubeconfig=cfg.yaml

问题

  1. x509: 一般而言,添加--insecure-registry参数即可, ko build --insecure-registry .
posted @   wei2cai  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek-R1本地部署如何选择适合你的版本?看这里
· 开源的 DeepSeek-R1「GitHub 热点速览」
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 揭秘 Sdcb Chats 如何解析 DeepSeek-R1 思维链
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
点击右上角即可分享
微信分享提示