Skip to content

Commit

Permalink
initial: poc (#1)
Browse files Browse the repository at this point in the history
enflesh implementation

test-client example

adding cluster cname redirection service

Signed-off-by: yue9944882 <[email protected]>

pt2: helm charts and minor fixes

Signed-off-by: yue9944882 <[email protected]>

adding more agent id hostname

cluster-proxy implementation pt3

Signed-off-by: yue9944882 <[email protected]>

bump v0.0.8

bump v0.0.9

Signed-off-by: yue9944882 <[email protected]>

bump v0.0.10

remove test bin

clarify api
  • Loading branch information
yue9944882 authored Nov 11, 2021
1 parent f889178 commit fe7227a
Show file tree
Hide file tree
Showing 73 changed files with 6,804 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file
# Ignore all files which are not go type
!**/*.go
!**/*.mod
!**/*.sum
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,14 @@

# Dependency directories (remove the comment below to include it)
# vendor/

/apiserver.local.config
/bin
/default.etcd
/kubeconfig
/config/crds/
.idea/**
.DS_Store

index.yaml
cluster-proxy-*.tgz
137 changes: 137 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@

# Image URL to use all building/pushing image targets
IMG ?= controller:latest
IMAGE_REGISTRY_NAME ?= localhost
AGENT_IMAGE_NAME ?= cluster-proxy-addon-agent
MANAGER_IMAGE_NAME ?= cluster-proxy-addon-manager
IMAGE_TAG ?= $(shell git rev-parse --short HEAD)
# Produce CRDs that work back to Kubernetes 1.11 (no version conversion)
CRD_OPTIONS ?= "crd:trivialVersions=true,preserveUnknownFields=false"

# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
ifeq (,$(shell go env GOBIN))
GOBIN=$(shell go env GOPATH)/bin
else
GOBIN=$(shell go env GOBIN)
endif

# Setting SHELL to bash allows bash commands to be executed by recipes.
# This is a requirement for 'setup-envtest.sh' in the test target.
# Options are set to exit when a recipe line exits non-zero or a piped command fails.
SHELL = /usr/bin/env bash -o pipefail
.SHELLFLAGS = -ec

all: build

##@ General

# The help target prints out all targets with their descriptions organized
# beneath their categories. The categories are represented by '##@' and the
# target descriptions by '##'. The awk commands is responsible for reading the
# entire set of makefiles included in this invocation, looking for lines of the
# file as xyz: ## something, and then pretty-format the target and help. Then,
# if there's a line with ##@ something, that gets pretty-printed as a category.
# More info on the usage of ANSI control characters for terminal formatting:
# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters
# More info on the awk command:
# http://linuxcommand.org/lc3_adv_awk.php

help: ## Display this help.
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)

##@ Development

manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
$(CONTROLLER_GEN) $(CRD_OPTIONS) \
paths="./pkg/apis/..." \
rbac:roleName=manager-role \
output:crd:artifacts:config=hack/crd/bases

generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./pkg/apis/..."

fmt: ## Run go fmt against code.
go fmt ./...

vet: ## Run go vet against code.
go vet ./...

ENVTEST_ASSETS_DIR=$(shell pwd)/testbin
test: manifests generate fmt vet ## Run tests.
mkdir -p ${ENVTEST_ASSETS_DIR}
test -f ${ENVTEST_ASSETS_DIR}/setup-envtest.sh || curl -sSLo ${ENVTEST_ASSETS_DIR}/setup-envtest.sh https://raw.githubusercontent.com/kubernetes-sigs/controller-runtime/v0.8.3/hack/setup-envtest.sh
source ${ENVTEST_ASSETS_DIR}/setup-envtest.sh; fetch_envtest_tools $(ENVTEST_ASSETS_DIR); setup_envtest_env $(ENVTEST_ASSETS_DIR); go test ./... -coverprofile cover.out

##@ Build

build: generate fmt vet
go build -o bin/addon-manager cmd/addon-manager/main.go
go build -o bin/addon-agent cmd/addon-agent/main.go

docker-build: test ## Build docker image with the manager.
docker build -t ${IMG} .

docker-push: ## Push docker image with the manager.
docker push ${IMG}

##@ Deployment

install: manifests kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config.
$(KUSTOMIZE) build config/crd | kubectl apply -f -

uninstall: manifests kustomize ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config.
$(KUSTOMIZE) build config/crd | kubectl delete -f -

deploy: manifests kustomize ## Deploy controller to the K8s cluster specified in ~/.kube/config.
cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
$(KUSTOMIZE) build config/default | kubectl apply -f -

undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/config.
$(KUSTOMIZE) build config/default | kubectl delete -f -


CONTROLLER_GEN = $(shell pwd)/bin/controller-gen
controller-gen: ## Download controller-gen locally if necessary.
$(call go-get-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/[email protected])

KUSTOMIZE = $(shell pwd)/bin/kustomize
kustomize: ## Download kustomize locally if necessary.
$(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/[email protected])

# go-get-tool will 'go get' any package $2 and install it to $1.
PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))
define go-get-tool
@[ -f $(1) ] || { \
set -e ;\
TMP_DIR=$$(mktemp -d) ;\
cd $$TMP_DIR ;\
go mod init tmp ;\
echo "Downloading $(2)" ;\
GOBIN=$(PROJECT_DIR)/bin go get $(2) ;\
rm -rf $$TMP_DIR ;\
}
endef

client-gen:
go install k8s.io/code-generator/cmd/[email protected]
apiserver-runtime-gen \
--module open-cluster-management.io/cluster-proxy \
-g client-gen \
-g informer-gen \
-g lister-gen \
--versions=open-cluster-management.io/cluster-proxy/pkg/apis/proxy/v1alpha1 \
--install-generators=false


addon-agent-image:
docker build \
-f cmd/addon-agent/Dockerfile \
-t $(IMAGE_REGISTRY_NAME)/$(AGENT_IMAGE_NAME):$(IMAGE_TAG) .

addon-manager-image:
docker build \
-f cmd/addon-manager/Dockerfile \
--build-arg ADDON_AGENT_IMAGE_NAME=$(IMAGE_REGISTRY_NAME)/$(AGENT_IMAGE_NAME):$(IMAGE_TAG) \
-t $(IMAGE_REGISTRY_NAME)/$(MANAGER_IMAGE_NAME):$(IMAGE_TAG) .

images: addon-manager-image addon-agent-image
15 changes: 15 additions & 0 deletions PROJECT
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
domain: open-cluster-management.io
layout:
- go.kubebuilder.io/v3
projectName: cluster-proxy
repo: open-cluster-management.io/cluster-proxy
resources:
- api:
crdVersion: v1
controller: true
domain: open-cluster-management.io
group: proxy
kind: ManagedProxyConfiguration
path: open-cluster-management.io/cluster-proxy/api/v1alpha1
version: v1alpha1
version: "3"
6 changes: 6 additions & 0 deletions charts/cluster-proxy/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: v2
name: cluster-proxy
description: A Helm chart for Cluster-Proxy
type: application
version: 0.0.11
appVersion: 1.0.0
Loading

0 comments on commit fe7227a

Please sign in to comment.