Skip to content

Commit

Permalink
feat: add manifests
Browse files Browse the repository at this point in the history
- refactor main.go to use in-cluster rest config
- add make recipies to build and push image
  • Loading branch information
vadasambar committed Sep 13, 2023
1 parent 390dee8 commit 7fd5f21
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 21 deletions.
10 changes: 9 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,2 +1,10 @@
all: build image push

build:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o install-kwok --ldflags "-s"
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o install-kwok --ldflags "-s"

image:
docker build -t ghcr.io/vadafoss/install-kwok:${TAG} -f Dockerfile.debian .

push:
docker push ghcr.io/vadafoss/install-kwok:${TAG}
43 changes: 23 additions & 20 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import (
"time"

log "github.com/sirupsen/logrus"
"golang.org/x/mod/semver"

"github.com/google/go-github/v53/github"
rbacv1 "k8s.io/api/rbac/v1"
Expand All @@ -20,7 +19,7 @@ import (
"k8s.io/cli-runtime/pkg/genericclioptions"
"k8s.io/client-go/kubernetes"
kubeclient "k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/rest"
kubectlcmd "k8s.io/kubectl/pkg/cmd"
)

Expand All @@ -33,32 +32,36 @@ func init() {

func main() {

// Check and load kubeconfig from the path set
// in KUBECONFIG env variable (if not use default path of ~/.kube/config)
apiConfig, err := clientcmd.NewDefaultClientConfigLoadingRules().Load()
if err != nil {
panic(err)
}
// // Check and load kubeconfig from the path set
// // in KUBECONFIG env variable (if not use default path of ~/.kube/config)
// apiConfig, err := clientcmd.NewDefaultClientConfigLoadingRules().Load()
// if err != nil {
// panic(err)
// }

// Create rest config from kubeconfig
restConfig, err := clientcmd.NewDefaultClientConfig(*apiConfig, &clientcmd.ConfigOverrides{}).ClientConfig()
// // Create rest config from kubeconfig
// restConfig, err := clientcmd.NewDefaultClientConfig(*apiConfig, &clientcmd.ConfigOverrides{}).ClientConfig()
// if err != nil {
// panic(err)
// }

restConfig, err := rest.InClusterConfig()
if err != nil {
panic(err)
}

kubeClient := kubeclient.NewForConfigOrDie(restConfig)

rel, err := GetLatestKwokRelease()
if err != nil {
panic(err)
}
// rel, err := GetLatestKwokRelease()
// if err != nil {
// panic(err)
// }

c := semver.Compare(rel, constants.MinVersion)
if c < 0 {
log.Fatalf("latest release %s is a lower version than min required version %s\n", rel, constants.MinVersion)
}
// c := semver.Compare(rel, constants.MinVersion)
// if c < 0 {
// log.Fatalf("latest release %s is a lower version than min required version %s\n", rel, constants.MinVersion)
// }

installRelease = rel
installRelease = constants.MinVersion

// if err := DeleteClusterRoleBinding(kubeClient); !errors.IsNotFound(err) {
// log.Infof("failed deleting existing `kwok-provider` ClusterRoleBinding: %v", err)
Expand Down
15 changes: 15 additions & 0 deletions manifests/clusterrole.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
name: install-kwok-clusterrole
rules:
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterrolebindings
# resourceNames:
# - kwok-provider
verbs:
- create
- delete
13 changes: 13 additions & 0 deletions manifests/clusterrolebinding.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
name: install-kwok-crb
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: install-kwok-clusterrole
subjects:
- kind: ServiceAccount
name: install-kwok
namespace: default
23 changes: 23 additions & 0 deletions manifests/job.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
apiVersion: batch/v1
kind: Job
metadata:
name: install-kwok
spec:
template:
spec:
serviceAccountName: install-kwok
containers:
- name: install-kwok
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: SERVICE_ACCOUNT
valueFrom:
fieldRef:
fieldPath: spec.serviceAccountName
image: ghcr.io/vadafoss/install-kwok:debian4
restartPolicy: Never
backoffLimit: 4

5 changes: 5 additions & 0 deletions manifests/serviceaccount.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: install-kwok
namespace: default

0 comments on commit 7fd5f21

Please sign in to comment.