Skip to content

Commit

Permalink
fixes 'add kustomize support to kfctl' (kubeflow#2673)
Browse files Browse the repository at this point in the history
* fixes 'add kustomize to kfctl'

* fixes 'kfctl - provide option (default) to statically link ksonnet and kustomize into kfctl kubeflow#2635'

* fixes 'kfctl - provide option (default) to statically link ksonnet and kustomize into kfctl kubeflow#2635'

* fixes 'kfctl - provide option (default) to statically link ksonnet and kustomize into kfctl kubeflow#2635'

* document what forms the version cli can have

* cleanup for static kfctl, fix for k8sSpecs, fix for --version pull/id/head
  • Loading branch information
kkasravi authored and k8s-ci-robot committed Mar 12, 2019
1 parent 7ae0bf9 commit 2f4f652
Show file tree
Hide file tree
Showing 37 changed files with 2,292 additions and 881 deletions.
111 changes: 54 additions & 57 deletions bootstrap/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,46 +13,81 @@
# limitations under the License.
#
GCLOUD_PROJECT ?= kubeflow-images-public
GOLANG_VERSION ?= 1.11.5
GOLANG_VERSION ?= 1.12
GOPATH ?= $(HOME)/go
GOOGLE_APPLICATION_CREDENTIALS ?= $(HOME)/auth.json
# To build without the cache set the environment variable
# export DOCKER_BUILD_OPTS=--no-cache
IMG ?= gcr.io/$(GCLOUD_PROJECT)/bootstrapper
TAG ?= $(shell git describe --tags --always --dirty)
PORT ?= 2345
# set to -V
VERBOSE ?=
PLUGINS_ENVIRONMENT ?= $(GOPATH)/src/github.com/kubeflow/kubeflow/bootstrap/bin
export GO111MODULE = on
export GO = go

%.so:
cd cmd/plugins/$* && \
$(GO) build -i -gcflags 'all=-N -l' -o ../../../bin/$*.so -buildmode=plugin $*.go

%.init:
@echo kfctl init test/$* $(VERBOSE) --platform $* --project $(GCLOUD_PROJECT) --version pull/2673 && \
GOOGLE_APPLICATION_CREDENTIALS=$(GOOGLE_APPLICATION_CREDENTIALS) PLUGINS_ENVIRONMENT=$(PLUGINS_ENVIRONMENT) kfctl init $(PWD)/test/$* $(VERBOSE) --platform $* --project $(GCLOUD_PROJECT) --version pull/2673

%.init-no-platform:
@echo kfctl init test/$* $(VERBOSE) --version pull/2673 && \
kfctl init $(PWD)/test/$* $(VERBOSE) --version pull/2673

%.generate:
@echo kfctl generate all $(VERBOSE) '(--platform '$*')' && \
cd test/$* && \
GOOGLE_APPLICATION_CREDENTIALS=$(GOOGLE_APPLICATION_CREDENTIALS) PLUGINS_ENVIRONMENT=$(PLUGINS_ENVIRONMENT) kfctl generate all $(VERBOSE) --mount-local --email gcp-deploy@$(GCLOUD_PROJECT).iam.gserviceaccount.com

all: build

auth:
gcloud auth configure-docker

# Run go fmt against code
fmt:
$(GO) fmt ./pkg/... ./cmd/... ./config/...
@$(GO) fmt ./config/... ./pkg/apis/apps/client/... ./pkg/apis/apps/gcp/... ./pkg/utils/... ./pkg/client/minikube ./pkg/client/gcp/... ./cmd/kfctl/...

# Run go vet against code
vet:
$(GO) vet ./pkg/... ./cmd/... ./config/...
@$(GO) vet ./config/... ./pkg/apis/apps/client/... ./pkg/apis/apps/gcp/... ./pkg/utils/... ./pkg/client/minikube ./pkg/client/gcp/... ./cmd/kfctl/...

generate:
$(GO) generate ./pkg/... ./cmd/... ./config/...

deepcopy:
@deepcopy-gen -i github.com/kubeflow/kubeflow/bootstrap/pkg/apis/... -O zz_generated.deepcopy
@$(GO) generate ./config/... ./pkg/apis/apps/client/... ./pkg/apis/apps/gcp/... ./pkg/utils/... ./pkg/client/minikube ./pkg/client/gcp/... ./cmd/kfctl/...

/tmp/v2:
@[ ! -d /tmp/v2 ] && unzip -q -d /tmp hack/v2.zip

$(GOPATH)/bin/deepcopy-gen:
GO111MODULE=off $(GO) get k8s.io/code-generator/cmd/deepcopy-gen

config/zz_generated.deepcopy.go: config/types.go
$(GOPATH)/bin/deepcopy-gen -i github.com/kubeflow/kubeflow/bootstrap/config/... -O zz_generated.deepcopy

pkg/apis/apps/gcp/v1alpha1/zz_generated.deepcopy.go: pkg/apis/apps/gcp/v1alpha1/application_types.go
$(GOPATH)/bin/deepcopy-gen -i github.com/kubeflow/kubeflow/bootstrap/pkg/apis/apps/gcp/... -O zz_generated.deepcopy

pkg/apis/apps/ksonnet/v1alpha1/zz_generated.deepcopy.go: pkg/apis/apps/ksonnet/v1alpha1/application_types.go
$(GOPATH)/bin/deepcopy-gen -i github.com/kubeflow/kubeflow/bootstrap/pkg/apis/apps/ksonnet/... -O zz_generated.deepcopy

pkg/apis/apps/client/v1alpha1/zz_generated.deepcopy.go: pkg/apis/apps/client/v1alpha1/application_types.go
$(GOPATH)/bin/deepcopy-gen -i github.com/kubeflow/kubeflow/bootstrap/pkg/apis/apps/client/... -O zz_generated.deepcopy

v2/pkg/apis/apps/client/v1alpha1/zz_generated.deepcopy.go: v2/pkg/apis/apps/client/v1alpha1/application_types.go
$(GOPATH)/bin/deepcopy-gen -i github.com/kubeflow/kubeflow/bootstrap/v2/pkg/apis/apps/client/... -O zz_generated.deepcopy

deepcopy: $(GOPATH)/bin/deepcopy-gen config/zz_generated.deepcopy.go pkg/apis/apps/ksonnet/v1alpha1/zz_generated.deepcopy.go pkg/apis/apps/gcp/v1alpha1/zz_generated.deepcopy.go pkg/apis/apps/client/v1alpha1/zz_generated.deepcopy.go

build-bootstrap: generate fmt vet
$(GO) build -gcflags 'all=-N -l' -o bin/bootstrapper cmd/bootstrap/main.go

build-kfctl: generate fmt vet
build-kfctl: /tmp/v2 deepcopy generate fmt vet
$(GO) build -i -gcflags 'all=-N -l' -o bin/kfctl cmd/kfctl/main.go

build-dockerfordesktop-plugin: generate fmt vet
$(GO) build -i -gcflags 'all=-N -l' -o bin/dockerfordesktop.so -buildmode=plugin cmd/plugins/dockerfordesktop/dockerfordesktop.go

build-local: build-bootstrap build-kfctl

# To edit which registries to add to bootstrapper, edit config (eg. config/default.yaml)
Expand All @@ -79,7 +114,7 @@ push-latest: push
gcloud container images add-tag --quiet $(IMG):$(TAG) $(IMG):latest --verbosity=info
echo created $(IMG):latest

install: build-kfctl
install: build-kfctl dockerfordesktop.so
@echo copying bin/kfctl to /usr/local/bin
@cp bin/kfctl /usr/local/bin

Expand All @@ -88,47 +123,9 @@ run-local-docker:
--mount type=bind,source=${HOME}/kf_app,target=/home/kubeflow \
--entrypoint /bin/bash $(IMG):$(TAG)

# static and plugins toogle whether we try and load a platform as a .so.
# There is an example plugin 'dockerfordesktop' that can be loaded as a .so.
# By default we disable loading plugins and link dockerfordesktop into the kfctl binary (static)
static:
@ex pkg/apis/apps/group.go <hack/static
@ex cmd/kfctl/cmd/root.go <hack/static || echo Plugin functionality disabled

plugins:
@ex pkg/apis/apps/group.go <hack/plugins
@ex cmd/kfctl/cmd/root.go <hack/plugins || echo Plugin functionality enabled

clean:
@rm -rf test

test-known-platforms-init: clean install build-dockerfordesktop-plugin
@mkdir test && \
echo kfctl init test/dockerfordesktop -V --platform docker-for-desktop && \
GOOGLE_APPLICATION_CREDENTIALS=$(GOOGLE_APPLICATION_CREDENTIALS) PLUGINS_ENVIRONMENT=$(PLUGINS_ENVIRONMENT) kfctl init `pwd`/test/dockerfordesktop -V --platform docker-for-desktop && \
echo kfctl init test/none -V && \
GOOGLE_APPLICATION_CREDENTIALS=$(GOOGLE_APPLICATION_CREDENTIALS) kfctl init `pwd`/test/none -V && \
echo kfctl init test/minikube -V --platform minikube && \
GOOGLE_APPLICATION_CREDENTIALS=$(GOOGLE_APPLICATION_CREDENTIALS) kfctl init $(PWD)/test/minikube -V --platform minikube && \
echo kfctl init test/gcp -V --platform gcp --project $(GCLOUD_PROJECT) && \
GOOGLE_APPLICATION_CREDENTIALS=$(GOOGLE_APPLICATION_CREDENTIALS) kfctl init $(PWD)/test/gcp -V --platform gcp --project $(GCLOUD_PROJECT) && \
echo SUCCESS

test-known-platforms-generate: test-known-platforms-init
@cd test/dockerfordesktop && \
echo 'kfctl generate all (--platform dockerfordesktop)' && \
GOOGLE_APPLICATION_CREDENTIALS=$(GOOGLE_APPLICATION_CREDENTIALS) PLUGINS_ENVIRONMENT=$(PLUGINS_ENVIRONMENT) kfctl generate all && \
cd ../none && \
echo 'kfctl generate all (--platform none)' && \
GOOGLE_APPLICATION_CREDENTIALS=$(GOOGLE_APPLICATION_CREDENTIALS) kfctl generate all && \
cd ../minikube && \
echo 'kfctl generate all (--platform minikube)' && \
GOOGLE_APPLICATION_CREDENTIALS=$(GOOGLE_APPLICATION_CREDENTIALS) kfctl generate all --mount-local && \
cd ../gcp && \
echo 'kfctl generate all (--platform gcp)' && \
GOOGLE_APPLICATION_CREDENTIALS=$(GOOGLE_APPLICATION_CREDENTIALS) kfctl generate all --email jsmith@acme.com && \
echo SUCCESS

test-plugins-static: plugins test-known-platforms-generate static test-known-platforms-generate

test-kfctl: test-plugins-static
clean:
rm -rf test && mkdir test

test-init: clean install dockerfordesktop.init minikube.init gcp.init none.init-no-platform

test-generate: test-init dockerfordesktop.generate minikube.generate gcp.generate none.generate
Loading

0 comments on commit 2f4f652

Please sign in to comment.