Merge pull request #11671 from andriyDev/embed

Use goembed instead of go-bindata for embedding addon config files
pull/11690/head
Sharif Elgamal 2021-06-17 14:14:01 -07:00 committed by GitHub
commit 4fc5e5f169
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 334 additions and 198 deletions

2
.gitignore vendored
View File

@ -35,8 +35,6 @@ _testmain.go
#iso version file
deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/etc/VERSION
/pkg/minikube/assets/assets.go-e
/pkg/minikube/assets/assets.go
/pkg/minikube/translate/translations.go
/pkg/minikube/translate/translations.go-e
/minikube

View File

@ -75,7 +75,7 @@ GOLINT_OPTIONS = --timeout 7m \
--build-tags "${MINIKUBE_INTEGRATION_BUILD_TAGS}" \
--enable gofmt,goimports,gocritic,golint,gocyclo,misspell,nakedret,stylecheck,unconvert,unparam,dogsled \
--exclude 'variable on range scope.*in function literal|ifElseChain' \
--skip-files "pkg/minikube/translate/translations.go|pkg/minikube/assets/assets.go"
--skip-files "pkg/minikube/translate/translations.go"
export GO111MODULE := on
@ -130,13 +130,14 @@ MINIKUBE_MARKDOWN_FILES := README.md CONTRIBUTING.md CHANGELOG.md
MINIKUBE_BUILD_TAGS :=
MINIKUBE_INTEGRATION_BUILD_TAGS := integration $(MINIKUBE_BUILD_TAGS)
CMD_SOURCE_DIRS = cmd pkg
CMD_SOURCE_DIRS = cmd pkg deploy/addons
SOURCE_DIRS = $(CMD_SOURCE_DIRS) test
SOURCE_PACKAGES = ./cmd/... ./pkg/... ./test/...
SOURCE_PACKAGES = ./cmd/... ./pkg/... ./deploy/addons/... ./test/...
SOURCE_GENERATED = pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go
SOURCE_GENERATED = pkg/minikube/translate/translations.go
SOURCE_FILES = $(shell find $(CMD_SOURCE_DIRS) -type f -name "*.go" | grep -v _test.go)
GOTEST_FILES = $(shell find $(CMD_SOURCE_DIRS) -type f -name "*.go" | grep _test.go)
ADDON_FILES = $(shell find "deploy/addons" -type f | grep -v "\.go")
# kvm2 ldflags
KVM2_LDFLAGS := -X k8s.io/minikube/pkg/drivers/kvm.version=$(VERSION) -X k8s.io/minikube/pkg/drivers/kvm.gitCommitID=$(COMMIT)
@ -195,7 +196,7 @@ ifneq ($(TEST_FILES),)
INTEGRATION_TESTS_TO_RUN := $(addprefix ./test/integration/, $(TEST_HELPERS) $(TEST_FILES))
endif
out/minikube$(IS_EXE): $(SOURCE_GENERATED) $(SOURCE_FILES) go.mod
out/minikube$(IS_EXE): $(SOURCE_GENERATED) $(SOURCE_FILES) $(ADDON_FILES) go.mod
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
$(call DOCKER,$(BUILD_IMAGE),GOOS=$(GOOS) GOARCH=$(GOARCH) GOARM=$(GOARM) /usr/bin/make $@)
else
@ -244,7 +245,7 @@ minikube-windows-amd64.exe: out/minikube-windows-amd64.exe ## Build Minikube for
eq = $(and $(findstring x$(1),x$(2)),$(findstring x$(2),x$(1)))
out/minikube-%: $(SOURCE_GENERATED) $(SOURCE_FILES)
out/minikube-%: $(SOURCE_GENERATED) $(SOURCE_FILES) $(ADDON_FILES)
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
$(call DOCKER,$(BUILD_IMAGE),/usr/bin/make $@)
else
@ -253,7 +254,7 @@ else
go build -tags "$(MINIKUBE_BUILD_TAGS)" -ldflags="$(MINIKUBE_LDFLAGS)" -a -o $@ k8s.io/minikube/cmd/minikube
endif
out/minikube-linux-armv6: $(SOURCE_GENERATED) $(SOURCE_FILES)
out/minikube-linux-armv6: $(SOURCE_GENERATED) $(SOURCE_FILES) $(ADDON_FILES)
$(Q)GOOS=linux GOARCH=arm GOARM=6 \
go build -tags "$(MINIKUBE_BUILD_TAGS)" -ldflags="$(MINIKUBE_LDFLAGS)" -a -o $@ k8s.io/minikube/cmd/minikube
@ -397,22 +398,6 @@ out/coverage.html: out/coverage.out
extract: ## extract internationalization words for translations
go run cmd/extract/extract.go
# Regenerates assets.go when template files have been updated
pkg/minikube/assets/assets.go: $(shell find "deploy/addons" -type f)
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
$(call DOCKER,$(BUILD_IMAGE),/usr/bin/make $@)
endif
@which go-bindata >/dev/null 2>&1 || GO111MODULE=off GOBIN="$(GOPATH)$(DIRSEP)bin" go get github.com/go-bindata/go-bindata/...
$(if $(quiet),@echo " GEN $@")
$(Q)PATH="$(PATH)$(PATHSEP)$(GOPATH)$(DIRSEP)bin" go-bindata -nomemcopy -o $@ -pkg assets deploy/addons/...
$(Q)-gofmt -s -w $@
@#golint: Dns should be DNS (compat sed)
@sed -i -e 's/Dns/DNS/g' $@ && rm -f ./-e
@#golint: Html should be HTML (compat sed)
@sed -i -e 's/Html/HTML/g' $@ && rm -f ./-e
@#golint: don't use underscores in Go names
@sed -i -e 's/SnapshotStorageK8sIo_volumesnapshot/SnapshotStorageK8sIoVolumesnapshot/g' $@ && rm -f ./-e
pkg/minikube/translate/translations.go: $(shell find "translations/" -type f)
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
$(call DOCKER,$(BUILD_IMAGE),/usr/bin/make $@)
@ -897,11 +882,11 @@ out/mkcmp:
GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o $@ cmd/performance/mkcmp/main.go
.PHONY: deploy/kicbase/auto-pause # auto pause binary to be used for kic image work around for not passing the whole repo as docker context
deploy/kicbase/auto-pause: $(SOURCE_GENERATED) $(SOURCE_FILES)
deploy/kicbase/auto-pause: $(SOURCE_GENERATED) $(SOURCE_FILES) $(ADDON_FILES)
GOOS=linux GOARCH=$(GOARCH) go build -o $@ cmd/auto-pause/auto-pause.go
# auto pause binary to be used for ISO
deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/usr/bin/auto-pause: $(SOURCE_GENERATED) $(SOURCE_FILES)
deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/usr/bin/auto-pause: $(SOURCE_GENERATED) $(SOURCE_FILES) $(ADDON_FILES)
GOOS=linux GOARCH=$(GOARCH) go build -o $@ cmd/auto-pause/auto-pause.go

135
deploy/addons/assets.go Normal file
View File

@ -0,0 +1,135 @@
/*
Copyright 2021 The Kubernetes Authors All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package addons
import "embed"
var (
// AutoPauseAssets assets for auto-pause addon
//go:embed auto-pause/*.tmpl
//go:embed auto-pause/auto-pause.service
//go:embed auto-pause/unpause.lua
AutoPauseAssets embed.FS
// DashboardAssets assets for dashboard addon
//go:embed dashboard/*.yaml dashboard/*.tmpl
DashboardAssets embed.FS
// DefaultStorageClassAssets assets for default-storageclass addon
//go:embed storageclass/storageclass.yaml.tmpl
DefaultStorageClassAssets embed.FS
// PodSecurityPolicyAssets assets for pod-security-policy addon
//go:embed pod-security-policy/pod-security-policy.yaml.tmpl
PodSecurityPolicyAssets embed.FS
// StorageProvisionerAssets assets for storage-provisioner addon
//go:embed storage-provisioner/storage-provisioner.yaml.tmpl
StorageProvisionerAssets embed.FS
// StorageProvisionerGlusterAssets assets for storage-provisioner-gluster addon
//go:embed storage-provisioner-gluster/*.tmpl
StorageProvisionerGlusterAssets embed.FS
// EfkAssets assets for efk addon
//go:embed efk/*.tmpl
EfkAssets embed.FS
// IngressAssets assets for ingress addon
//go:embed ingress/*.tmpl
IngressAssets embed.FS
// IstioProvisionerAssets assets for istio-provisioner addon
//go:embed istio-provisioner/istio-operator.yaml.tmpl
IstioProvisionerAssets embed.FS
// IstioAssets assets for istio addon
//go:embed istio/istio-default-profile.yaml.tmpl
IstioAssets embed.FS
// KubevirtAssets assets for kubevirt addon
//go:embed kubevirt/pod.yaml.tmpl
KubevirtAssets embed.FS
// MetricsServerAssets assets for metrics-server addon
//go:embed metrics-server/*.tmpl
MetricsServerAssets embed.FS
// OlmAssets assets for olm addon
//go:embed olm/*.tmpl
OlmAssets embed.FS
// RegistryAssets assets for registry addon
//go:embed registry/*.tmpl
RegistryAssets embed.FS
// RegistryCredsAssets assets for registry-creds addon
//go:embed registry-creds/registry-creds-rc.yaml.tmpl
RegistryCredsAssets embed.FS
// RegistryAliasesAssets assets for registry-aliases addon
//go:embed registry-aliases/*.tmpl
RegistryAliasesAssets embed.FS
// FreshpodAssets assets for freshpod addon
//go:embed freshpod/freshpod-rc.yaml.tmpl
FreshpodAssets embed.FS
// NvidiaDriverInstallerAssets assets for nvidia-driver-installer addon
//go:embed gpu/nvidia-driver-installer.yaml.tmpl
NvidiaDriverInstallerAssets embed.FS
// NvidiaGpuDevicePluginAssets assets for nvidia-gpu-device-plugin addon
//go:embed gpu/nvidia-gpu-device-plugin.yaml.tmpl
NvidiaGpuDevicePluginAssets embed.FS
// LogviewerAssets assets for logviewer addon
//go:embed logviewer/*.tmpl
LogviewerAssets embed.FS
// GvisorAssets assets for gvisor addon
//go:embed gvisor/*.tmpl gvisor/*.toml
GvisorAssets embed.FS
// HelmTillerAssets assets for helm-tiller addon
//go:embed helm-tiller/*.tmpl
HelmTillerAssets embed.FS
// IngressDNSAssets assets for ingress-dns addon
//go:embed ingress-dns/ingress-dns-pod.yaml.tmpl
IngressDNSAssets embed.FS
// MetallbAssets assets for metallb addon
//go:embed metallb/*.tmpl
MetallbAssets embed.FS
// AmbassadorAssets assets for ambassador addon
//go:embed ambassador/*.tmpl
AmbassadorAssets embed.FS
// GcpAuthAssets assets for gcp-auth addon
//go:embed gcp-auth/*.tmpl
GcpAuthAssets embed.FS
// VolumeSnapshotsAssets assets for volumesnapshots addon
//go:embed volumesnapshots/*.tmpl
VolumeSnapshotsAssets embed.FS
// CsiHostpathDriverAssets assets for csi-hostpath-driver addon
//go:embed csi-hostpath-driver/deploy/*.tmpl csi-hostpath-driver/rbac/*.tmpl
CsiHostpathDriverAssets embed.FS
)

View File

@ -22,6 +22,7 @@ import (
"strings"
"github.com/spf13/viper"
"k8s.io/minikube/deploy/addons"
"k8s.io/minikube/pkg/minikube/config"
"k8s.io/minikube/pkg/minikube/constants"
"k8s.io/minikube/pkg/minikube/out"
@ -79,27 +80,32 @@ func (a *Addon) IsEnabled(cc *config.ClusterConfig) bool {
var Addons = map[string]*Addon{
"auto-pause": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/auto-pause/auto-pause.yaml.tmpl",
addons.AutoPauseAssets,
"auto-pause/auto-pause.yaml.tmpl",
vmpath.GuestAddonsDir,
"auto-pause.yaml",
"0640"),
MustBinAsset(
"deploy/addons/auto-pause/auto-pause-hook.yaml.tmpl",
addons.AutoPauseAssets,
"auto-pause/auto-pause-hook.yaml.tmpl",
vmpath.GuestAddonsDir,
"auto-pause-hook.yaml",
"0640"),
MustBinAsset(
"deploy/addons/auto-pause/haproxy.cfg.tmpl",
addons.AutoPauseAssets,
"auto-pause/haproxy.cfg.tmpl",
vmpath.GuestPersistentDir,
"haproxy.cfg",
"0640"),
MustBinAsset(
"deploy/addons/auto-pause/unpause.lua",
addons.AutoPauseAssets,
"auto-pause/unpause.lua",
vmpath.GuestPersistentDir,
"unpause.lua",
"0640"),
MustBinAsset(
"deploy/addons/auto-pause/auto-pause.service",
addons.AutoPauseAssets,
"auto-pause/auto-pause.service",
"/etc/systemd/system/",
"auto-pause.service",
"0640"),
@ -112,37 +118,37 @@ var Addons = map[string]*Addon{
}),
"dashboard": NewAddon([]*BinAsset{
// We want to create the kubernetes-dashboard ns first so that every subsequent object can be created
MustBinAsset("deploy/addons/dashboard/dashboard-ns.yaml", vmpath.GuestAddonsDir, "dashboard-ns.yaml", "0640"),
MustBinAsset("deploy/addons/dashboard/dashboard-clusterrole.yaml", vmpath.GuestAddonsDir, "dashboard-clusterrole.yaml", "0640"),
MustBinAsset("deploy/addons/dashboard/dashboard-clusterrolebinding.yaml", vmpath.GuestAddonsDir, "dashboard-clusterrolebinding.yaml", "0640"),
MustBinAsset("deploy/addons/dashboard/dashboard-configmap.yaml", vmpath.GuestAddonsDir, "dashboard-configmap.yaml", "0640"),
MustBinAsset("deploy/addons/dashboard/dashboard-dp.yaml.tmpl", vmpath.GuestAddonsDir, "dashboard-dp.yaml", "0640"),
MustBinAsset("deploy/addons/dashboard/dashboard-role.yaml", vmpath.GuestAddonsDir, "dashboard-role.yaml", "0640"),
MustBinAsset("deploy/addons/dashboard/dashboard-rolebinding.yaml", vmpath.GuestAddonsDir, "dashboard-rolebinding.yaml", "0640"),
MustBinAsset("deploy/addons/dashboard/dashboard-sa.yaml", vmpath.GuestAddonsDir, "dashboard-sa.yaml", "0640"),
MustBinAsset("deploy/addons/dashboard/dashboard-secret.yaml", vmpath.GuestAddonsDir, "dashboard-secret.yaml", "0640"),
MustBinAsset("deploy/addons/dashboard/dashboard-svc.yaml", vmpath.GuestAddonsDir, "dashboard-svc.yaml", "0640"),
MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-ns.yaml", vmpath.GuestAddonsDir, "dashboard-ns.yaml", "0640"),
MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-clusterrole.yaml", vmpath.GuestAddonsDir, "dashboard-clusterrole.yaml", "0640"),
MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-clusterrolebinding.yaml", vmpath.GuestAddonsDir, "dashboard-clusterrolebinding.yaml", "0640"),
MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-configmap.yaml", vmpath.GuestAddonsDir, "dashboard-configmap.yaml", "0640"),
MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-dp.yaml.tmpl", vmpath.GuestAddonsDir, "dashboard-dp.yaml", "0640"),
MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-role.yaml", vmpath.GuestAddonsDir, "dashboard-role.yaml", "0640"),
MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-rolebinding.yaml", vmpath.GuestAddonsDir, "dashboard-rolebinding.yaml", "0640"),
MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-sa.yaml", vmpath.GuestAddonsDir, "dashboard-sa.yaml", "0640"),
MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-secret.yaml", vmpath.GuestAddonsDir, "dashboard-secret.yaml", "0640"),
MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-svc.yaml", vmpath.GuestAddonsDir, "dashboard-svc.yaml", "0640"),
}, false, "dashboard", map[string]string{
"Dashboard": "kubernetesui/dashboard:v2.1.0@sha256:7f80b5ba141bead69c4fee8661464857af300d7d7ed0274cf7beecedc00322e6",
"MetricsScraper": "kubernetesui/metrics-scraper:v1.0.4@sha256:555981a24f184420f3be0c79d4efb6c948a85cfce84034f85a563f4151a81cbf",
}, nil),
"default-storageclass": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/storageclass/storageclass.yaml.tmpl",
MustBinAsset(addons.DefaultStorageClassAssets,
"storageclass/storageclass.yaml.tmpl",
vmpath.GuestAddonsDir,
"storageclass.yaml",
"0640"),
}, true, "default-storageclass", nil, nil),
"pod-security-policy": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/pod-security-policy/pod-security-policy.yaml.tmpl",
MustBinAsset(addons.PodSecurityPolicyAssets,
"pod-security-policy/pod-security-policy.yaml.tmpl",
vmpath.GuestAddonsDir,
"pod-security-policy.yaml",
"0640"),
}, false, "pod-security-policy", nil, nil),
"storage-provisioner": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/storage-provisioner/storage-provisioner.yaml.tmpl",
MustBinAsset(addons.StorageProvisionerAssets,
"storage-provisioner/storage-provisioner.yaml.tmpl",
vmpath.GuestAddonsDir,
"storage-provisioner.yaml",
"0640"),
@ -152,23 +158,23 @@ var Addons = map[string]*Addon{
"StorageProvisioner": "gcr.io",
}),
"storage-provisioner-gluster": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/storage-provisioner-gluster/storage-gluster-ns.yaml.tmpl",
MustBinAsset(addons.StorageProvisionerGlusterAssets,
"storage-provisioner-gluster/storage-gluster-ns.yaml.tmpl",
vmpath.GuestAddonsDir,
"storage-gluster-ns.yaml",
"0640"),
MustBinAsset(
"deploy/addons/storage-provisioner-gluster/glusterfs-daemonset.yaml.tmpl",
MustBinAsset(addons.StorageProvisionerGlusterAssets,
"storage-provisioner-gluster/glusterfs-daemonset.yaml.tmpl",
vmpath.GuestAddonsDir,
"glusterfs-daemonset.yaml",
"0640"),
MustBinAsset(
"deploy/addons/storage-provisioner-gluster/heketi-deployment.yaml.tmpl",
MustBinAsset(addons.StorageProvisionerGlusterAssets,
"storage-provisioner-gluster/heketi-deployment.yaml.tmpl",
vmpath.GuestAddonsDir,
"heketi-deployment.yaml",
"0640"),
MustBinAsset(
"deploy/addons/storage-provisioner-gluster/storage-provisioner-glusterfile.yaml.tmpl",
MustBinAsset(addons.StorageProvisionerGlusterAssets,
"storage-provisioner-gluster/storage-provisioner-glusterfile.yaml.tmpl",
vmpath.GuestAddonsDir,
"storage-privisioner-glusterfile.yaml",
"0640"),
@ -180,33 +186,33 @@ var Addons = map[string]*Addon{
"GlusterfsServer": "quay.io",
}),
"efk": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/efk/elasticsearch-rc.yaml.tmpl",
MustBinAsset(addons.EfkAssets,
"efk/elasticsearch-rc.yaml.tmpl",
vmpath.GuestAddonsDir,
"elasticsearch-rc.yaml",
"0640"),
MustBinAsset(
"deploy/addons/efk/elasticsearch-svc.yaml.tmpl",
MustBinAsset(addons.EfkAssets,
"efk/elasticsearch-svc.yaml.tmpl",
vmpath.GuestAddonsDir,
"elasticsearch-svc.yaml",
"0640"),
MustBinAsset(
"deploy/addons/efk/fluentd-es-rc.yaml.tmpl",
MustBinAsset(addons.EfkAssets,
"efk/fluentd-es-rc.yaml.tmpl",
vmpath.GuestAddonsDir,
"fluentd-es-rc.yaml",
"0640"),
MustBinAsset(
"deploy/addons/efk/fluentd-es-configmap.yaml.tmpl",
MustBinAsset(addons.EfkAssets,
"efk/fluentd-es-configmap.yaml.tmpl",
vmpath.GuestAddonsDir,
"fluentd-es-configmap.yaml",
"0640"),
MustBinAsset(
"deploy/addons/efk/kibana-rc.yaml.tmpl",
MustBinAsset(addons.EfkAssets,
"efk/kibana-rc.yaml.tmpl",
vmpath.GuestAddonsDir,
"kibana-rc.yaml",
"0640"),
MustBinAsset(
"deploy/addons/efk/kibana-svc.yaml.tmpl",
MustBinAsset(addons.EfkAssets,
"efk/kibana-svc.yaml.tmpl",
vmpath.GuestAddonsDir,
"kibana-svc.yaml",
"0640"),
@ -221,18 +227,18 @@ var Addons = map[string]*Addon{
"Kibana": "docker.elastic.co",
}),
"ingress": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/ingress/ingress-configmap.yaml.tmpl",
MustBinAsset(addons.IngressAssets,
"ingress/ingress-configmap.yaml.tmpl",
vmpath.GuestAddonsDir,
"ingress-configmap.yaml",
"0640"),
MustBinAsset(
"deploy/addons/ingress/ingress-rbac.yaml.tmpl",
MustBinAsset(addons.IngressAssets,
"ingress/ingress-rbac.yaml.tmpl",
vmpath.GuestAddonsDir,
"ingress-rbac.yaml",
"0640"),
MustBinAsset(
"deploy/addons/ingress/ingress-dp.yaml.tmpl",
MustBinAsset(addons.IngressAssets,
"ingress/ingress-dp.yaml.tmpl",
vmpath.GuestAddonsDir,
"ingress-dp.yaml",
"0640"),
@ -244,8 +250,8 @@ var Addons = map[string]*Addon{
"IngressController": "k8s.gcr.io",
}),
"istio-provisioner": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/istio-provisioner/istio-operator.yaml.tmpl",
MustBinAsset(addons.IstioProvisionerAssets,
"istio-provisioner/istio-operator.yaml.tmpl",
vmpath.GuestAddonsDir,
"istio-operator.yaml",
"0640"),
@ -253,15 +259,15 @@ var Addons = map[string]*Addon{
"IstioOperator": "istio/operator:1.5.0@sha256:25a6398ed4996a5313767ceb63768d503c266f63506ad3074b30eef6b5b5167e",
}, nil),
"istio": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/istio/istio-default-profile.yaml.tmpl",
MustBinAsset(addons.IstioAssets,
"istio/istio-default-profile.yaml.tmpl",
vmpath.GuestAddonsDir,
"istio-default-profile.yaml",
"0640"),
}, false, "istio", nil, nil),
"kubevirt": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/kubevirt/pod.yaml.tmpl",
MustBinAsset(addons.KubevirtAssets,
"kubevirt/pod.yaml.tmpl",
vmpath.GuestAddonsDir,
"pod.yaml",
"0640"),
@ -269,23 +275,23 @@ var Addons = map[string]*Addon{
"Kubectl": "bitnami/kubectl:1.17@sha256:de642e973d3d0ef60e4d0a1f92286a9fdae245535c5990d4762bbe86fcf95887",
}, nil),
"metrics-server": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/metrics-server/metrics-apiservice.yaml.tmpl",
MustBinAsset(addons.MetricsServerAssets,
"metrics-server/metrics-apiservice.yaml.tmpl",
vmpath.GuestAddonsDir,
"metrics-apiservice.yaml",
"0640"),
MustBinAsset(
"deploy/addons/metrics-server/metrics-server-deployment.yaml.tmpl",
MustBinAsset(addons.MetricsServerAssets,
"metrics-server/metrics-server-deployment.yaml.tmpl",
vmpath.GuestAddonsDir,
"metrics-server-deployment.yaml",
"0640"),
MustBinAsset(
"deploy/addons/metrics-server/metrics-server-rbac.yaml.tmpl",
MustBinAsset(addons.MetricsServerAssets,
"metrics-server/metrics-server-rbac.yaml.tmpl",
vmpath.GuestAddonsDir,
"metrics-server-rbac.yaml",
"0640"),
MustBinAsset(
"deploy/addons/metrics-server/metrics-server-service.yaml.tmpl",
MustBinAsset(addons.MetricsServerAssets,
"metrics-server/metrics-server-service.yaml.tmpl",
vmpath.GuestAddonsDir,
"metrics-server-service.yaml",
"0640"),
@ -295,13 +301,13 @@ var Addons = map[string]*Addon{
"MetricsServer": "k8s.gcr.io",
}),
"olm": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/olm/crds.yaml.tmpl",
MustBinAsset(addons.OlmAssets,
"olm/crds.yaml.tmpl",
vmpath.GuestAddonsDir,
"crds.yaml",
"0640"),
MustBinAsset(
"deploy/addons/olm/olm.yaml.tmpl",
MustBinAsset(addons.OlmAssets,
"olm/olm.yaml.tmpl",
vmpath.GuestAddonsDir,
"olm.yaml",
"0640"),
@ -313,18 +319,18 @@ var Addons = map[string]*Addon{
"UpstreamCommunityOperators": "quay.io",
}),
"registry": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/registry/registry-rc.yaml.tmpl",
MustBinAsset(addons.RegistryAssets,
"registry/registry-rc.yaml.tmpl",
vmpath.GuestAddonsDir,
"registry-rc.yaml",
"0640"),
MustBinAsset(
"deploy/addons/registry/registry-svc.yaml.tmpl",
MustBinAsset(addons.RegistryAssets,
"registry/registry-svc.yaml.tmpl",
vmpath.GuestAddonsDir,
"registry-svc.yaml",
"0640"),
MustBinAsset(
"deploy/addons/registry/registry-proxy.yaml.tmpl",
MustBinAsset(addons.RegistryAssets,
"registry/registry-proxy.yaml.tmpl",
vmpath.GuestAddonsDir,
"registry-proxy.yaml",
"0640"),
@ -335,8 +341,8 @@ var Addons = map[string]*Addon{
"KubeRegistryProxy": "gcr.io",
}),
"registry-creds": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/registry-creds/registry-creds-rc.yaml.tmpl",
MustBinAsset(addons.RegistryCredsAssets,
"registry-creds/registry-creds-rc.yaml.tmpl",
vmpath.GuestAddonsDir,
"registry-creds-rc.yaml",
"0640"),
@ -344,28 +350,28 @@ var Addons = map[string]*Addon{
"RegistryCreds": "upmcenterprises/registry-creds:1.10@sha256:93a633d4f2b76a1c66bf19c664dbddc56093a543de6d54320f19f585ccd7d605",
}, nil),
"registry-aliases": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/registry-aliases/registry-aliases-sa.tmpl",
MustBinAsset(addons.RegistryAliasesAssets,
"registry-aliases/registry-aliases-sa.tmpl",
vmpath.GuestAddonsDir,
"registry-aliases-sa.yaml",
"0640"),
MustBinAsset(
"deploy/addons/registry-aliases/registry-aliases-sa-crb.tmpl",
MustBinAsset(addons.RegistryAliasesAssets,
"registry-aliases/registry-aliases-sa-crb.tmpl",
vmpath.GuestAddonsDir,
"registry-aliases-sa-crb.yaml",
"0640"),
MustBinAsset(
"deploy/addons/registry-aliases/registry-aliases-config.tmpl",
MustBinAsset(addons.RegistryAliasesAssets,
"registry-aliases/registry-aliases-config.tmpl",
vmpath.GuestAddonsDir,
"registry-aliases-config.yaml",
"0640"),
MustBinAsset(
"deploy/addons/registry-aliases/node-etc-hosts-update.tmpl",
MustBinAsset(addons.RegistryAliasesAssets,
"registry-aliases/node-etc-hosts-update.tmpl",
vmpath.GuestAddonsDir,
"node-etc-hosts-update.yaml",
"0640"),
MustBinAsset(
"deploy/addons/registry-aliases/patch-coredns-job.tmpl",
MustBinAsset(addons.RegistryAliasesAssets,
"registry-aliases/patch-coredns-job.tmpl",
vmpath.GuestAddonsDir,
"patch-coredns-job.yaml",
"0640"),
@ -378,8 +384,8 @@ var Addons = map[string]*Addon{
"Pause": "gcr.io",
}),
"freshpod": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/freshpod/freshpod-rc.yaml.tmpl",
MustBinAsset(addons.FreshpodAssets,
"freshpod/freshpod-rc.yaml.tmpl",
vmpath.GuestAddonsDir,
"freshpod-rc.yaml",
"0640"),
@ -389,8 +395,8 @@ var Addons = map[string]*Addon{
"FreshPod": "gcr.io",
}),
"nvidia-driver-installer": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/gpu/nvidia-driver-installer.yaml.tmpl",
MustBinAsset(addons.NvidiaDriverInstallerAssets,
"gpu/nvidia-driver-installer.yaml.tmpl",
vmpath.GuestAddonsDir,
"nvidia-driver-installer.yaml",
"0640"),
@ -402,8 +408,8 @@ var Addons = map[string]*Addon{
"Pause": "k8s.gcr.io",
}),
"nvidia-gpu-device-plugin": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/gpu/nvidia-gpu-device-plugin.yaml.tmpl",
MustBinAsset(addons.NvidiaGpuDevicePluginAssets,
"gpu/nvidia-gpu-device-plugin.yaml.tmpl",
vmpath.GuestAddonsDir,
"nvidia-gpu-device-plugin.yaml",
"0640"),
@ -411,13 +417,13 @@ var Addons = map[string]*Addon{
"NvidiaDevicePlugin": "nvidia/k8s-device-plugin:1.0.0-beta4@sha256:94d46bf513cbc43c4d77a364e4bbd409d32d89c8e686e12551cc3eb27c259b90",
}, nil),
"logviewer": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/logviewer/logviewer-dp-and-svc.yaml.tmpl",
MustBinAsset(addons.LogviewerAssets,
"logviewer/logviewer-dp-and-svc.yaml.tmpl",
vmpath.GuestAddonsDir,
"logviewer-dp-and-svc.yaml",
"0640"),
MustBinAsset(
"deploy/addons/logviewer/logviewer-rbac.yaml.tmpl",
MustBinAsset(addons.LogviewerAssets,
"logviewer/logviewer-rbac.yaml.tmpl",
vmpath.GuestAddonsDir,
"logviewer-rbac.yaml",
"0640"),
@ -425,18 +431,18 @@ var Addons = map[string]*Addon{
"LogViewer": "ivans3/minikube-log-viewer:latest@sha256:75854f45305cc47d17b04c6c588fa60777391761f951e3a34161ddf1f1b06405",
}, nil),
"gvisor": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/gvisor/gvisor-pod.yaml.tmpl",
MustBinAsset(addons.GvisorAssets,
"gvisor/gvisor-pod.yaml.tmpl",
vmpath.GuestAddonsDir,
"gvisor-pod.yaml",
"0640"),
MustBinAsset(
"deploy/addons/gvisor/gvisor-runtimeclass.yaml.tmpl",
MustBinAsset(addons.GvisorAssets,
"gvisor/gvisor-runtimeclass.yaml.tmpl",
vmpath.GuestAddonsDir,
"gvisor-runtimeclass.yaml",
"0640"),
MustBinAsset(
"deploy/addons/gvisor/gvisor-config.toml",
MustBinAsset(addons.GvisorAssets,
"gvisor/gvisor-config.toml",
vmpath.GuestGvisorDir,
constants.GvisorConfigTomlTargetName,
"0640"),
@ -446,18 +452,18 @@ var Addons = map[string]*Addon{
"GvisorAddon": "gcr.io",
}),
"helm-tiller": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/helm-tiller/helm-tiller-dp.tmpl",
MustBinAsset(addons.HelmTillerAssets,
"helm-tiller/helm-tiller-dp.tmpl",
vmpath.GuestAddonsDir,
"helm-tiller-dp.yaml",
"0640"),
MustBinAsset(
"deploy/addons/helm-tiller/helm-tiller-rbac.tmpl",
MustBinAsset(addons.HelmTillerAssets,
"helm-tiller/helm-tiller-rbac.tmpl",
vmpath.GuestAddonsDir,
"helm-tiller-rbac.yaml",
"0640"),
MustBinAsset(
"deploy/addons/helm-tiller/helm-tiller-svc.tmpl",
MustBinAsset(addons.HelmTillerAssets,
"helm-tiller/helm-tiller-svc.tmpl",
vmpath.GuestAddonsDir,
"helm-tiller-svc.yaml",
"0640"),
@ -467,8 +473,8 @@ var Addons = map[string]*Addon{
"Tiller": "gcr.io",
}),
"ingress-dns": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/ingress-dns/ingress-dns-pod.yaml.tmpl",
MustBinAsset(addons.IngressDNSAssets,
"ingress-dns/ingress-dns-pod.yaml.tmpl",
vmpath.GuestAddonsDir,
"ingress-dns-pod.yaml",
"0640"),
@ -476,13 +482,13 @@ var Addons = map[string]*Addon{
"IngressDNS": "cryptexlabs/minikube-ingress-dns:0.3.0@sha256:e252d2a4c704027342b303cc563e95d2e71d2a0f1404f55d676390e28d5093ab",
}, nil),
"metallb": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/metallb/metallb.yaml.tmpl",
MustBinAsset(addons.MetallbAssets,
"metallb/metallb.yaml.tmpl",
vmpath.GuestAddonsDir,
"metallb.yaml",
"0640"),
MustBinAsset(
"deploy/addons/metallb/metallb-config.yaml.tmpl",
MustBinAsset(addons.MetallbAssets,
"metallb/metallb-config.yaml.tmpl",
vmpath.GuestAddonsDir,
"metallb-config.yaml",
"0640"),
@ -491,18 +497,18 @@ var Addons = map[string]*Addon{
"Controller": "metallb/controller:v0.9.6@sha256:fbfdb9d3f55976b0ee38f3309d83a4ca703efcf15d6ca7889cd8189142286502",
}, nil),
"ambassador": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/ambassador/ambassador-operator-crds.yaml.tmpl",
MustBinAsset(addons.AmbassadorAssets,
"ambassador/ambassador-operator-crds.yaml.tmpl",
vmpath.GuestAddonsDir,
"ambassador-operator-crds.yaml",
"0640"),
MustBinAsset(
"deploy/addons/ambassador/ambassador-operator.yaml.tmpl",
MustBinAsset(addons.AmbassadorAssets,
"ambassador/ambassador-operator.yaml.tmpl",
vmpath.GuestAddonsDir,
"ambassador-operator.yaml",
"0640"),
MustBinAsset(
"deploy/addons/ambassador/ambassadorinstallation.yaml.tmpl",
MustBinAsset(addons.AmbassadorAssets,
"ambassador/ambassadorinstallation.yaml.tmpl",
vmpath.GuestAddonsDir,
"ambassadorinstallation.yaml",
"0640"),
@ -512,18 +518,18 @@ var Addons = map[string]*Addon{
"AmbassadorOperator": "quay.io",
}),
"gcp-auth": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/gcp-auth/gcp-auth-ns.yaml.tmpl",
MustBinAsset(addons.GcpAuthAssets,
"gcp-auth/gcp-auth-ns.yaml.tmpl",
vmpath.GuestAddonsDir,
"gcp-auth-ns.yaml",
"0640"),
MustBinAsset(
"deploy/addons/gcp-auth/gcp-auth-service.yaml.tmpl",
MustBinAsset(addons.GcpAuthAssets,
"gcp-auth/gcp-auth-service.yaml.tmpl",
vmpath.GuestAddonsDir,
"gcp-auth-service.yaml",
"0640"),
MustBinAsset(
"deploy/addons/gcp-auth/gcp-auth-webhook.yaml.tmpl.tmpl",
MustBinAsset(addons.GcpAuthAssets,
"gcp-auth/gcp-auth-webhook.yaml.tmpl.tmpl",
vmpath.GuestAddonsDir,
"gcp-auth-webhook.yaml",
"0640"),
@ -536,33 +542,33 @@ var Addons = map[string]*Addon{
"volumesnapshots": NewAddon([]*BinAsset{
// make sure the order of apply. `csi-hostpath-snapshotclass` must be the first position, because it depends on `snapshot.storage.k8s.io_volumesnapshotclasses`
// if user disable volumesnapshots addon and delete `csi-hostpath-snapshotclass` after `snapshot.storage.k8s.io_volumesnapshotclasses`, kubernetes will return the error
MustBinAsset(
"deploy/addons/volumesnapshots/csi-hostpath-snapshotclass.yaml.tmpl",
MustBinAsset(addons.VolumeSnapshotsAssets,
"volumesnapshots/csi-hostpath-snapshotclass.yaml.tmpl",
vmpath.GuestAddonsDir,
"csi-hostpath-snapshotclass.yaml",
"0640"),
MustBinAsset(
"deploy/addons/volumesnapshots/snapshot.storage.k8s.io_volumesnapshotclasses.yaml.tmpl",
MustBinAsset(addons.VolumeSnapshotsAssets,
"volumesnapshots/snapshot.storage.k8s.io_volumesnapshotclasses.yaml.tmpl",
vmpath.GuestAddonsDir,
"snapshot.storage.k8s.io_volumesnapshotclasses.yaml",
"0640"),
MustBinAsset(
"deploy/addons/volumesnapshots/snapshot.storage.k8s.io_volumesnapshotcontents.yaml.tmpl",
MustBinAsset(addons.VolumeSnapshotsAssets,
"volumesnapshots/snapshot.storage.k8s.io_volumesnapshotcontents.yaml.tmpl",
vmpath.GuestAddonsDir,
"snapshot.storage.k8s.io_volumesnapshotcontents.yaml",
"0640"),
MustBinAsset(
"deploy/addons/volumesnapshots/snapshot.storage.k8s.io_volumesnapshots.yaml.tmpl",
MustBinAsset(addons.VolumeSnapshotsAssets,
"volumesnapshots/snapshot.storage.k8s.io_volumesnapshots.yaml.tmpl",
vmpath.GuestAddonsDir,
"snapshot.storage.k8s.io_volumesnapshots.yaml",
"0640"),
MustBinAsset(
"deploy/addons/volumesnapshots/rbac-volume-snapshot-controller.yaml.tmpl",
MustBinAsset(addons.VolumeSnapshotsAssets,
"volumesnapshots/rbac-volume-snapshot-controller.yaml.tmpl",
vmpath.GuestAddonsDir,
"rbac-volume-snapshot-controller.yaml",
"0640"),
MustBinAsset(
"deploy/addons/volumesnapshots/volume-snapshot-controller-deployment.yaml.tmpl",
MustBinAsset(addons.VolumeSnapshotsAssets,
"volumesnapshots/volume-snapshot-controller-deployment.yaml.tmpl",
vmpath.GuestAddonsDir,
"volume-snapshot-controller-deployment.yaml",
"0640"),
@ -572,68 +578,68 @@ var Addons = map[string]*Addon{
"SnapshotController": "k8s.gcr.io",
}),
"csi-hostpath-driver": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/csi-hostpath-driver/rbac/rbac-external-attacher.yaml.tmpl",
MustBinAsset(addons.CsiHostpathDriverAssets,
"csi-hostpath-driver/rbac/rbac-external-attacher.yaml.tmpl",
vmpath.GuestAddonsDir,
"rbac-external-attacher.yaml",
"0640"),
MustBinAsset(
"deploy/addons/csi-hostpath-driver/rbac/rbac-external-health-monitor-agent.yaml.tmpl",
MustBinAsset(addons.CsiHostpathDriverAssets,
"csi-hostpath-driver/rbac/rbac-external-health-monitor-agent.yaml.tmpl",
vmpath.GuestAddonsDir,
"rbac-external-health-monitor-agent.yaml",
"0640"),
MustBinAsset(
"deploy/addons/csi-hostpath-driver/rbac/rbac-external-health-monitor-controller.yaml.tmpl",
MustBinAsset(addons.CsiHostpathDriverAssets,
"csi-hostpath-driver/rbac/rbac-external-health-monitor-controller.yaml.tmpl",
vmpath.GuestAddonsDir,
"rbac-external-health-monitor-controller.yaml",
"0640"),
MustBinAsset(
"deploy/addons/csi-hostpath-driver/rbac/rbac-external-provisioner.yaml.tmpl",
MustBinAsset(addons.CsiHostpathDriverAssets,
"csi-hostpath-driver/rbac/rbac-external-provisioner.yaml.tmpl",
vmpath.GuestAddonsDir,
"rbac-external-provisioner.yaml",
"0640"),
MustBinAsset(
"deploy/addons/csi-hostpath-driver/rbac/rbac-external-resizer.yaml.tmpl",
MustBinAsset(addons.CsiHostpathDriverAssets,
"csi-hostpath-driver/rbac/rbac-external-resizer.yaml.tmpl",
vmpath.GuestAddonsDir,
"rbac-external-resizer.yaml",
"0640"),
MustBinAsset(
"deploy/addons/csi-hostpath-driver/rbac/rbac-external-snapshotter.yaml.tmpl",
MustBinAsset(addons.CsiHostpathDriverAssets,
"csi-hostpath-driver/rbac/rbac-external-snapshotter.yaml.tmpl",
vmpath.GuestAddonsDir,
"rbac-external-snapshotter.yaml",
"0640"),
MustBinAsset(
"deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-attacher.yaml.tmpl",
MustBinAsset(addons.CsiHostpathDriverAssets,
"csi-hostpath-driver/deploy/csi-hostpath-attacher.yaml.tmpl",
vmpath.GuestAddonsDir,
"csi-hostpath-attacher.yaml",
"0640"),
MustBinAsset(
"deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-driverinfo.yaml.tmpl",
MustBinAsset(addons.CsiHostpathDriverAssets,
"csi-hostpath-driver/deploy/csi-hostpath-driverinfo.yaml.tmpl",
vmpath.GuestAddonsDir,
"csi-hostpath-driverinfo.yaml",
"0640"),
MustBinAsset(
"deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-plugin.yaml.tmpl",
MustBinAsset(addons.CsiHostpathDriverAssets,
"csi-hostpath-driver/deploy/csi-hostpath-plugin.yaml.tmpl",
vmpath.GuestAddonsDir,
"csi-hostpath-plugin.yaml",
"0640"),
MustBinAsset(
"deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-provisioner.yaml.tmpl",
MustBinAsset(addons.CsiHostpathDriverAssets,
"csi-hostpath-driver/deploy/csi-hostpath-provisioner.yaml.tmpl",
vmpath.GuestAddonsDir,
"csi-hostpath-provisioner.yaml",
"0640"),
MustBinAsset(
"deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-resizer.yaml.tmpl",
MustBinAsset(addons.CsiHostpathDriverAssets,
"csi-hostpath-driver/deploy/csi-hostpath-resizer.yaml.tmpl",
vmpath.GuestAddonsDir,
"csi-hostpath-resizer.yaml",
"0640"),
MustBinAsset(
"deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-snapshotter.yaml.tmpl",
MustBinAsset(addons.CsiHostpathDriverAssets,
"csi-hostpath-driver/deploy/csi-hostpath-snapshotter.yaml.tmpl",
vmpath.GuestAddonsDir,
"csi-hostpath-snapshotter.yaml",
"0640"),
MustBinAsset(
"deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-storageclass.yaml.tmpl",
MustBinAsset(addons.CsiHostpathDriverAssets,
"csi-hostpath-driver/deploy/csi-hostpath-storageclass.yaml.tmpl",
vmpath.GuestAddonsDir,
"csi-hostpath-storageclass.yaml",
"0640"),

View File

@ -18,6 +18,7 @@ package assets
import (
"bytes"
"embed"
"fmt"
"html/template"
"io"
@ -207,6 +208,7 @@ func NewMemoryAsset(d []byte, targetDir, targetName, permissions string) *Memory
// BinAsset is a bindata (binary data) asset
type BinAsset struct {
embed.FS
BaseAsset
reader io.ReadSeeker
template *template.Template
@ -214,8 +216,8 @@ type BinAsset struct {
}
// MustBinAsset creates a new BinAsset, or panics if invalid
func MustBinAsset(name, targetDir, targetName, permissions string) *BinAsset {
asset, err := NewBinAsset(name, targetDir, targetName, permissions)
func MustBinAsset(fs embed.FS, name, targetDir, targetName, permissions string) *BinAsset {
asset, err := NewBinAsset(fs, name, targetDir, targetName, permissions)
if err != nil {
panic(fmt.Sprintf("Failed to define asset %s: %v", name, err))
}
@ -223,8 +225,9 @@ func MustBinAsset(name, targetDir, targetName, permissions string) *BinAsset {
}
// NewBinAsset creates a new BinAsset
func NewBinAsset(name, targetDir, targetName, permissions string) (*BinAsset, error) {
func NewBinAsset(fs embed.FS, name, targetDir, targetName, permissions string) (*BinAsset, error) {
m := &BinAsset{
FS: fs,
BaseAsset: BaseAsset{
SourcePath: name,
TargetDir: targetDir,
@ -249,7 +252,7 @@ func defaultValue(defValue string, val interface{}) string {
}
func (m *BinAsset) loadData() error {
contents, err := Asset(m.SourcePath)
contents, err := m.FS.ReadFile(m.SourcePath)
if err != nil {
return err
}

View File

@ -47,24 +47,32 @@ To make the addon appear in `minikube addons list`, add it to `pkg/addons/config
},
```
Next, add all required files using `//go:embed` directives to a new embed.FS variable in `deploy/addons/assets.go`. Here is the entry used by the `csi-hostpath-driver` addon:
```go
// CsiHostpathDriverAssets assets for csi-hostpath-driver addon
//go:embed csi-hostpath-driver/deploy/*.tmpl csi-hostpath-driver/rbac/*.tmpl
CsiHostpathDriverAssets embed.FS
```
Then, add into `pkg/minikube/assets/addons.go` the list of files to copy into the cluster, including manifests. Here is the entry used by the `registry` addon:
```go
"registry": NewAddon([]*BinAsset{
MustBinAsset(
"deploy/addons/registry/registry-rc.yaml.tmpl",
MustBinAsset(addons.RegistryAssets,
"registry/registry-rc.yaml.tmpl",
vmpath.GuestAddonsDir,
"registry-rc.yaml",
"0640",
false),
MustBinAsset(
"deploy/addons/registry/registry-svc.yaml.tmpl",
MustBinAsset(addons.RegistryAssets,
"registry/registry-svc.yaml.tmpl",
vmpath.GuestAddonsDir,
"registry-svc.yaml",
"0640",
false),
MustBinAsset(
"deploy/addons/registry/registry-proxy.yaml.tmpl",
MustBinAsset(addons.RegistryAssets,
"registry/registry-proxy.yaml.tmpl",
vmpath.GuestAddonsDir,
"registry-proxy.yaml",
"0640",
@ -74,6 +82,7 @@ Then, add into `pkg/minikube/assets/addons.go` the list of files to copy into th
The `MustBinAsset` arguments are:
* asset variable (typically present in `deploy/addons/assets.go`)
* source filename
* destination directory (typically `vmpath.GuestAddonsDir`)
* destination filename