{"id":20367072,"url":"https://github.com/tanalam2411/kubecuddle","last_synced_at":"2026-04-17T18:04:36.571Z","repository":{"id":94329748,"uuid":"224445590","full_name":"tanalam2411/kubecuddle","owner":"tanalam2411","description":"kubecuddle k8s operator - operator-sdk","archived":false,"fork":false,"pushed_at":"2019-11-29T17:09:16.000Z","size":4582,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-04T19:38:30.951Z","etag":null,"topics":["coreos","kubernetes-operator","operator-framework","operator-sdk"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tanalam2411.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-27T14:10:55.000Z","updated_at":"2019-11-29T17:09:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"eb18d489-145c-492e-b522-e9e82375bf29","html_url":"https://github.com/tanalam2411/kubecuddle","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tanalam2411/kubecuddle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanalam2411%2Fkubecuddle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanalam2411%2Fkubecuddle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanalam2411%2Fkubecuddle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanalam2411%2Fkubecuddle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tanalam2411","download_url":"https://codeload.github.com/tanalam2411/kubecuddle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanalam2411%2Fkubecuddle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31939801,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T17:29:20.459Z","status":"ssl_error","status_checked_at":"2026-04-17T17:28:47.801Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coreos","kubernetes-operator","operator-framework","operator-sdk"],"created_at":"2024-11-15T00:28:53.954Z","updated_at":"2026-04-17T18:04:36.555Z","avatar_url":"https://github.com/tanalam2411.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kubecuddle\nkubecuddle k8s operator\n\n\n### Installing the Operator SDK CLI\n\n```bash\n$ GO111MODULE=on go get -d github.com/operator-framework/operator-sdk\ngo: finding github.com/operator-framework/operator-sdk v0.12.0\ngo: downloading github.com/operator-framework/operator-sdk v0.12.0\ngo: extracting github.com/operator-framework/operator-sdk v0.12.0\ngo get: github.com/operator-framework/operator-sdk@v0.12.0 requires\n\tk8s.io/api@v0.0.0: reading k8s.io/api/go.mod at revision v0.0.0: unknown revision v0.0.0\n\n$ cd $GOPATH/src/github.com/operator-framework/operator-sdk\n\n~/go/src/github.com/operator-framework/operator-sdk$ git checkout master\n\n~/go/src/github.com/operator-framework/operator-sdk$ make tidy\n\n~/go/src/github.com/operator-framework/operator-sdk$ make install\n```\n\nTry `$ operator-sdk`:\n```bash\n$ operator-sdk \nAn SDK for building operators with ease\n\nUsage:\n  operator-sdk [command]\n\nAvailable Commands:\n  add         Adds a controller or resource to the project\n  alpha       Run an alpha subcommand\n  build       Compiles code and builds artifacts\n  completion  Generators for shell completions\n  generate    Invokes specific generator\n  help        Help about any command\n  migrate     Adds source code to an operator\n  new         Creates a new operator application\n  olm-catalog Invokes a olm-catalog command\n  print-deps  Print Golang packages and versions required to run the operator\n  run         Runs a generic operator\n  scorecard   Run scorecard tests\n  test        Tests the operator\n  up          Launches the operator\n  version     Prints the version of operator-sdk\n\nFlags:\n  -h, --help      help for operator-sdk\n      --verbose   Enable verbose logging\n\nUse \"operator-sdk [command] --help\" for more information about a command.\n\n```\n---\n\n1. Creating operator project by name `tgik-operator`:\n```bash\n$ cd ~/tanveer/k8s/kubecuddle/\n~/tanveer/k8s/kubecuddle$ operator-sdk new tgik-operator --repo github.com/tanalam2411/kubecuddle\nINFO[0000] Creating new Go operator 'tgik-operator'.    \nINFO[0000] Created go.mod                               \nINFO[0000] Created tools.go                             \nINFO[0000] Created cmd/manager/main.go                  \nINFO[0000] Created build/Dockerfile                     \nINFO[0000] Created build/bin/entrypoint                 \nINFO[0000] Created build/bin/user_setup                 \nINFO[0000] Created deploy/service_account.yaml          \nINFO[0000] Created deploy/role.yaml                     \nINFO[0000] Created deploy/role_binding.yaml             \nINFO[0000] Created deploy/operator.yaml                 \nINFO[0000] Created pkg/apis/apis.go                     \nINFO[0000] Created pkg/controller/controller.go         \nINFO[0000] Created version/version.go                   \nINFO[0000] Created .gitignore                           \nINFO[0000] Validating project                           \ngo: finding github.com/operator-framework/operator-sdk master\ngo: downloading github.com/operator-framework/operator-sdk v0.12.1-0.20191127152849-96dd1d2d5de1\ngo: extracting github.com/operator-framework/operator-sdk v0.12.1-0.20191127152849-96dd1d2d5de1\nINFO[0049] Project validation successful.               \nINFO[0049] Project creation complete.   \n\n\n~/tanveer/k8s/kubecuddle$ tree -I vendor\n.\n├── LICENSE\n├── README.md\n└── tgik-operator\n    ├── build\n    │   ├── bin\n    │   │   ├── entrypoint\n    │   │   └── user_setup\n    │   └── Dockerfile\n    ├── cmd\n    │   └── manager\n    │       └── main.go\n    ├── deploy\n    │   ├── operator.yaml\n    │   ├── role_binding.yaml\n    │   ├── role.yaml\n    │   └── service_account.yaml\n    ├── go.mod\n    ├── go.sum\n    ├── pkg\n    │   ├── apis\n    │   │   └── apis.go\n    │   └── controller\n    │       └── controller.go\n    ├── tools.go\n    └── version\n        └── version.go\n\n10 directories, 16 files\n\n       \n```\n\n2. Add a new API for the custom resource `Tgik`\n```bash\n~/tanveer/k8s/kubecuddle$ cd tgik-operator/\n~/tanveer/k8s/kubecuddle/tgik-operator$ operator-sdk add api --api-version=tan.github.com/v1alpha1 --kind=Tgik\nINFO[0000] Generating api version tan.github.com/v1alpha1 for kind Tgik. \nINFO[0000] Created pkg/apis/tan/group.go                \nINFO[0001] Created pkg/apis/tan/v1alpha1/tgik_types.go  \nINFO[0001] Created pkg/apis/addtoscheme_tan_v1alpha1.go \nINFO[0001] Created pkg/apis/tan/v1alpha1/register.go    \nINFO[0001] Created pkg/apis/tan/v1alpha1/doc.go         \nINFO[0001] Created deploy/crds/tan.github.com_v1alpha1_tgik_cr.yaml \nINFO[0004] Created deploy/crds/tan.github.com_tgiks_crd.yaml \nINFO[0004] Running deepcopy code-generation for Custom Resource group versions: [tan:[v1alpha1], ] \nINFO[0012] Code-generation complete.                    \nINFO[0012] Running OpenAPI code-generation for Custom Resource group versions: [tan:[v1alpha1], ] \nINFO[0020] Created deploy/crds/tan.github.com_tgiks_crd.yaml \nINFO[0020] Code-generation complete.                    \nINFO[0020] API generation complete.   \n\n~/tanveer/k8s/kubecuddle$ tree -I vendor\n.\n├── LICENSE\n├── README.md\n└── tgik-operator\n    ├── build\n    │   ├── bin\n    │   │   ├── entrypoint\n    │   │   └── user_setup\n    │   └── Dockerfile\n    ├── cmd\n    │   └── manager\n    │       └── main.go\n    ├── deploy\n    │   ├── crds\n    │   │   ├── tan.github.com_tgiks_crd.yaml\n    │   │   └── tan.github.com_v1alpha1_tgik_cr.yaml\n    │   ├── operator.yaml\n    │   ├── role_binding.yaml\n    │   ├── role.yaml\n    │   └── service_account.yaml\n    ├── go.mod\n    ├── go.sum\n    ├── pkg\n    │   ├── apis\n    │   │   ├── addtoscheme_tan_v1alpha1.go\n    │   │   ├── apis.go\n    │   │   └── tan\n    │   │       ├── group.go\n    │   │       └── v1alpha1\n    │   │           ├── doc.go\n    │   │           ├── register.go\n    │   │           ├── tgik_types.go\n    │   │           ├── zz_generated.deepcopy.go\n    │   │           └── zz_generated.openapi.go\n    │   └── controller\n    │       └── controller.go\n    ├── tools.go\n    └── version\n        └── version.go\n\n13 directories, 25 files\n                 \n```\n\nCreated following new files:\n```bash\n    ├── deploy\n    │   ├── crds\n    │   │   ├── tan.github.com_tgiks_crd.yaml\n    │   │   └── tan.github.com_v1alpha1_tgik_cr.yaml\n\t\n    ├── pkg\n    │   ├── apis\n    │   │   ├── addtoscheme_tan_v1alpha1.go\n\n    │   │   └── tan\n    │   │       ├── group.go\n    │   │       └── v1alpha1\n    │   │           ├── doc.go\n    │   │           ├── register.go\n    │   │           ├── tgik_types.go\n    │   │           ├── zz_generated.deepcopy.go\n    │   │           └── zz_generated.openapi.go\n```\n\nAnd updated :\n```bash\n\n    ├── deploy\n    │   ├── role.yaml\n```\nContent added:\n```yaml\n- apiGroups:\n  - tan.github.com\n  resources:\n  - '*'\n  verbs:\n  - '*'\n```\n\n3. Add a new controller that watches for `Tgik`:\n\n```bash\n~/tanveer/k8s/kubecuddle/tgik-operator$ operator-sdk add controller --api-version=tan.github.com/v1alpha1 --kind=Tgik\nINFO[0000] Generating controller version tan.github.com/v1alpha1 for kind Tgik. \nINFO[0000] Created pkg/controller/tgik/tgik_controller.go \nINFO[0000] Created pkg/controller/add_tgik.go           \nINFO[0000] Controller generation complete.  \n```\n\n4. Building and pushing the `tgik-operator` image to a public registry:\n```bash\n~/tanveer/k8s/kubecuddle/tgik-operator$ operator-sdk build on2411/tgik-operator:latest\nINFO[0057] Building OCI image on2411/tgik-operator:latest \nSending build context to Docker daemon     73MB\nStep 1/7 : FROM registry.access.redhat.com/ubi8/ubi-minimal:latest\nlatest: Pulling from ubi8/ubi-minimal\n645c2831c08a: Pull complete \n5e98065763a5: Pull complete \nDigest: sha256:32fb8bae553bfba2891f535fa9238f79aafefb7eff603789ba8920f505654607\nStatus: Downloaded newer image for registry.access.redhat.com/ubi8/ubi-minimal:latest\n ---\u003e 469119976c56\nStep 2/7 : ENV OPERATOR=/usr/local/bin/tgik-operator     USER_UID=1001     USER_NAME=tgik-operator\n ---\u003e Running in e605ee299824\nRemoving intermediate container e605ee299824\n ---\u003e 4c2cc47c3b4d\nStep 3/7 : COPY build/_output/bin/tgik-operator ${OPERATOR}\n ---\u003e f3a1cbafe378\nStep 4/7 : COPY build/bin /usr/local/bin\n ---\u003e c64cf4a61014\nStep 5/7 : RUN  /usr/local/bin/user_setup\n ---\u003e Running in 16cfd85c4293\n+ mkdir -p /root\n+ chown 1001:0 /root\n+ chmod ug+rwx /root\n+ chmod g+rw /etc/passwd\n+ rm /usr/local/bin/user_setup\nRemoving intermediate container 16cfd85c4293\n ---\u003e 59e279d56d8e\nStep 6/7 : ENTRYPOINT [\"/usr/local/bin/entrypoint\"]\n ---\u003e Running in ea4dcdc160de\nRemoving intermediate container ea4dcdc160de\n ---\u003e 5965c19016db\nStep 7/7 : USER ${USER_UID}\n ---\u003e Running in 3c97c7726152\nRemoving intermediate container 3c97c7726152\n ---\u003e 429f383c0636\nSuccessfully built 429f383c0636\nSuccessfully tagged on2411/tgik-operator:latest\nINFO[0179] Operator build complete.                     \n\n\n~/tanveer/k8s/kubecuddle/tgik-operator$ docker images | grep tgik\non2411/tgik-operator                          latest              429f383c0636        44 minutes ago      148MB\n\n~/tanveer/k8s/kubecuddle/tgik-operator$ docker push on2411/tgik-operator:latest\nThe push refers to repository [docker.io/on2411/tgik-operator]\nefa17ecf0121: Pushed \nf794914e5d9f: Pushed \n2902c328c4c0: Pushed \na066f3d73913: Pushed \n26b543be03e2: Pushed \nlatest: digest: sha256:6697eca97263c77c284bb9f91c501c5b9ae52ab71e85aaeb394d8086b49674f7 size: 1363\n```\n\nImage - https://hub.docker.com/repository/docker/on2411/tgik-operator\n\n5. Update the operator manifest to use the built image name:\n```bash\n~/tanveer/k8s/kubecuddle/tgik-operator$ sed -i 's|REPLACE_IMAGE|on2411/tgik-operator:latest|g' deploy/operator.yaml\n```\n\n---\n\nWe're running k8's cluster using [kind](https://github.com/kubernetes-sigs/kind)\n```bash\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl get nodes\nNAME                 STATUS   ROLES    AGE    VERSION\nkind-control-plane   Ready    master   2d8h   v1.15.3\n```\n\n6. Setup Service Account\n```bash\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl create -f deploy/service_account.yaml \nserviceaccount/tgik-operator created\n\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl get serviceaccounts\nNAME            SECRETS   AGE\ndefault         1         2d8h\ntgik-operator   1         5m55s\n\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl describe serviceaccounts tgik-operator\nName:                tgik-operator\nNamespace:           default\nLabels:              \u003cnone\u003e\nAnnotations:         \u003cnone\u003e\nImage pull secrets:  \u003cnone\u003e\nMountable secrets:   tgik-operator-token-77lgf\nTokens:              tgik-operator-token-77lgf\nEvents:              \u003cnone\u003e\n\n```\n\n7. Setup RBAC\n```bash\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl create -f deploy/role.yaml \nrole.rbac.authorization.k8s.io/tgik-operator created\n\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl get role -A\nNAMESPACE     NAME                                             AGE\ndefault       tgik-operator                                    8s\nkube-public   kubeadm:bootstrap-signer-clusterinfo             2d8h\nkube-public   system:controller:bootstrap-signer               2d8h\nkube-system   extension-apiserver-authentication-reader        2d8h\nkube-system   kube-proxy                                       2d8h\nkube-system   kubeadm:kubelet-config-1.15                      2d8h\nkube-system   kubeadm:nodes-kubeadm-config                     2d8h\nkube-system   system::leader-locking-kube-controller-manager   2d8h\nkube-system   system::leader-locking-kube-scheduler            2d8h\nkube-system   system:controller:bootstrap-signer               2d8h\nkube-system   system:controller:cloud-provider                 2d8h\nkube-system   system:controller:token-cleaner                  2d8h\n\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl describe role tgik-operator\nName:         tgik-operator\nLabels:       \u003cnone\u003e\nAnnotations:  \u003cnone\u003e\nPolicyRule:\n  Resources                              Non-Resource URLs  Resource Names   Verbs\n  ---------                              -----------------  --------------   -----\n  pods                                   []                 []               [* get]\n  deployments.apps                       []                 []               [* get]\n  replicasets.apps                       []                 []               [* get]\n  configmaps                             []                 []               [*]\n  endpoints                              []                 []               [*]\n  events                                 []                 []               [*]\n  persistentvolumeclaims                 []                 []               [*]\n  secrets                                []                 []               [*]\n  services/finalizers                    []                 []               [*]\n  services                               []                 []               [*]\n  daemonsets.apps                        []                 []               [*]\n  statefulsets.apps                      []                 []               [*]\n  *.tan.github.com                       []                 []               [*]\n  servicemonitors.monitoring.coreos.com  []                 []               [get create]\n  deployments.apps/finalizers            []                 [tgik-operator]  [update]\n\n```\n\nCreating Role Bindings:\n```bash\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl create -f deploy/role_binding.yaml \nrolebinding.rbac.authorization.k8s.io/tgik-operator created\n\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl get rolebindings -A\nNAMESPACE     NAME                                                AGE\ndefault       tgik-operator                                       13s\nkube-public   kubeadm:bootstrap-signer-clusterinfo                2d8h\nkube-public   system:controller:bootstrap-signer                  2d8h\nkube-system   kube-proxy                                          2d8h\nkube-system   kubeadm:kubelet-config-1.15                         2d8h\nkube-system   kubeadm:nodes-kubeadm-config                        2d8h\nkube-system   system::extension-apiserver-authentication-reader   2d8h\nkube-system   system::leader-locking-kube-controller-manager      2d8h\nkube-system   system::leader-locking-kube-scheduler               2d8h\nkube-system   system:controller:bootstrap-signer                  2d8h\nkube-system   system:controller:cloud-provider                    2d8h\nkube-system   system:controller:token-cleaner                     2d8h\n\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl describe rolebindings tgik-operator\nName:         tgik-operator\nLabels:       \u003cnone\u003e\nAnnotations:  \u003cnone\u003e\nRole:\n  Kind:  Role\n  Name:  tgik-operator\nSubjects:\n  Kind            Name           Namespace\n  ----            ----           ---------\n  ServiceAccount  tgik-operator  \n\n```\n\n8. Setting up the `CRD`:\n```bash\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl create -f deploy/crds/tan.github.com_tgiks_crd.yaml \ncustomresourcedefinition.apiextensions.k8s.io/tgiks.tan.github.com created\n\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl get crd\nNAME                   CREATED AT\ntgiks.tan.github.com   2019-11-28T10:36:23Z\n\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl describe crd tgiks.tan.github.com\nName:         tgiks.tan.github.com\nNamespace:    \nLabels:       \u003cnone\u003e\nAnnotations:  \u003cnone\u003e\nAPI Version:  apiextensions.k8s.io/v1beta1\nKind:         CustomResourceDefinition\nMetadata:\n  Creation Timestamp:  2019-11-28T10:36:23Z\n  Generation:          1\n  Resource Version:    129968\n  Self Link:           /apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/tgiks.tan.github.com\n  UID:                 67a4a075-2f1a-4fbf-855e-97f102f820ce\nSpec:\n  Conversion:\n    Strategy:  None\n  Group:       tan.github.com\n  Names:\n    Kind:                   Tgik\n    List Kind:              TgikList\n    Plural:                 tgiks\n    Singular:               tgik\n  Preserve Unknown Fields:  true\n  Scope:                    Namespaced\n  Subresources:\n    Status:\n  Validation:\n    Open APIV 3 Schema:\n      Description:  Tgik is the Schema for the tgiks API\n      Properties:\n        API Version:\n          Description:  APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\n          Type:         string\n        Kind:\n          Description:  Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n          Type:         string\n        Metadata:\n          Type:  object\n        Spec:\n          Description:  TgikSpec defines the desired state of Tgik\n          Type:         object\n        Status:\n          Description:  TgikStatus defines the observed state of Tgik\n          Type:         object\n      Type:             object\n  Version:              v1alpha1\n  Versions:\n    Name:     v1alpha1\n    Served:   true\n    Storage:  true\nStatus:\n  Accepted Names:\n    Kind:       Tgik\n    List Kind:  TgikList\n    Plural:     tgiks\n    Singular:   tgik\n  Conditions:\n    Last Transition Time:  2019-11-28T10:36:23Z\n    Message:               no conflicts found\n    Reason:                NoConflicts\n    Status:                True\n    Type:                  NamesAccepted\n    Last Transition Time:  \u003cnil\u003e\n    Message:               the initial names have been accepted\n    Reason:                InitialNamesAccepted\n    Status:                True\n    Type:                  Established\n  Stored Versions:\n    v1alpha1\nEvents:  \u003cnone\u003e\n\n```\n\n```bash\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl api-resources --api-group='tan.github.com' -o wide\nNAME    SHORTNAMES   APIGROUP         NAMESPACED   KIND   VERBS\ntgiks                tan.github.com   true         Tgik   [delete deletecollection get list patch create update watch]\n\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl get tgik\nNo resources found.\n\n```\n\n9. Deploy the `operator`:\n```bash\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl create -f deploy/operator.yaml \ndeployment.apps/tgik-operator created\n\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl get deployment -A\nNAMESPACE     NAME            READY   UP-TO-DATE   AVAILABLE   AGE\ndefault       tgik-operator   1/1     1            1           24m\nkube-system   coredns         2/2     2            2           2d9h\n\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl get deployment tgik-operator -o yaml\napiVersion: extensions/v1beta1\nkind: Deployment\nmetadata:\n  annotations:\n    deployment.kubernetes.io/revision: \"1\"\n  creationTimestamp: \"2019-11-28T10:59:27Z\"\n  generation: 1\n  name: tgik-operator\n  namespace: default\n  resourceVersion: \"131708\"\n  selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/tgik-operator\n  uid: 35849b33-9856-402b-b247-888115239924\nspec:\n  progressDeadlineSeconds: 600\n  replicas: 1\n  revisionHistoryLimit: 10\n  selector:\n    matchLabels:\n      name: tgik-operator\n  strategy:\n    rollingUpdate:\n      maxSurge: 25%\n      maxUnavailable: 25%\n    type: RollingUpdate\n  template:\n    metadata:\n      creationTimestamp: null\n      labels:\n        name: tgik-operator\n    spec:\n      containers:\n      - command:\n        - tgik-operator\n        env:\n        - name: WATCH_NAMESPACE\n          valueFrom:\n            fieldRef:\n              apiVersion: v1\n              fieldPath: metadata.namespace\n        - name: POD_NAME\n          valueFrom:\n            fieldRef:\n              apiVersion: v1\n              fieldPath: metadata.name\n        - name: OPERATOR_NAME\n          value: tgik-operator\n        image: on2411/tgik-operator:latest\n        imagePullPolicy: Always\n        name: tgik-operator\n        resources: {}\n        terminationMessagePath: /dev/termination-log\n        terminationMessagePolicy: File\n      dnsPolicy: ClusterFirst\n      restartPolicy: Always\n      schedulerName: default-scheduler\n      securityContext: {}\n      serviceAccount: tgik-operator\n      serviceAccountName: tgik-operator\n      terminationGracePeriodSeconds: 30\nstatus:\n  availableReplicas: 1\n  conditions:\n  - lastTransitionTime: \"2019-11-28T10:59:58Z\"\n    lastUpdateTime: \"2019-11-28T10:59:58Z\"\n    message: Deployment has minimum availability.\n    reason: MinimumReplicasAvailable\n    status: \"True\"\n    type: Available\n  - lastTransitionTime: \"2019-11-28T10:59:27Z\"\n    lastUpdateTime: \"2019-11-28T10:59:58Z\"\n    message: ReplicaSet \"tgik-operator-6bcbff8b9f\" has successfully progressed.\n    reason: NewReplicaSetAvailable\n    status: \"True\"\n    type: Progressing\n  observedGeneration: 1\n  readyReplicas: 1\n  replicas: 1\n  updatedReplicas: 1\n\n```\n\n```bash\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl get pods\nNAME                             READY   STATUS    RESTARTS   AGE\ntgik-operator-6bcbff8b9f-cdvm7   1/1     Running   0          27m\n\n~/tanveer/k8s/kubecuddle/tgik-operator$ kubectl logs --tail=100 tgik-operator-6bcbff8b9f-cdvm7\n{\"level\":\"info\",\"ts\":1574938797.9833722,\"logger\":\"cmd\",\"msg\":\"Operator Version: 0.0.1\"}\n{\"level\":\"info\",\"ts\":1574938797.983402,\"logger\":\"cmd\",\"msg\":\"Go Version: go1.13.3\"}\n{\"level\":\"info\",\"ts\":1574938797.9834096,\"logger\":\"cmd\",\"msg\":\"Go OS/Arch: linux/amd64\"}\n{\"level\":\"info\",\"ts\":1574938797.9834156,\"logger\":\"cmd\",\"msg\":\"Version of operator-sdk: v0.12.0+git\"}\n{\"level\":\"info\",\"ts\":1574938797.983658,\"logger\":\"leader\",\"msg\":\"Trying to become the leader.\"}\n{\"level\":\"info\",\"ts\":1574938798.266084,\"logger\":\"leader\",\"msg\":\"No pre-existing lock was found.\"}\n{\"level\":\"info\",\"ts\":1574938798.2706623,\"logger\":\"leader\",\"msg\":\"Became the leader.\"}\n{\"level\":\"info\",\"ts\":1574938798.5255582,\"logger\":\"controller-runtime.metrics\",\"msg\":\"metrics server is starting to listen\",\"addr\":\"0.0.0.0:8383\"}\n{\"level\":\"info\",\"ts\":1574938798.5257561,\"logger\":\"cmd\",\"msg\":\"Registering Components.\"}\n{\"level\":\"info\",\"ts\":1574938799.19932,\"logger\":\"metrics\",\"msg\":\"Metrics Service object created\",\"Service.Name\":\"tgik-operator-metrics\",\"Service.Namespace\":\"default\"}\n{\"level\":\"info\",\"ts\":1574938799.4515955,\"logger\":\"cmd\",\"msg\":\"Could not create ServiceMonitor object\",\"error\":\"no ServiceMonitor registered with the API\"}\n{\"level\":\"info\",\"ts\":1574938799.4516606,\"logger\":\"cmd\",\"msg\":\"Install prometheus-operator in your cluster to create ServiceMonitor objects\",\"error\":\"no ServiceMonitor registered with the API\"}\n{\"level\":\"info\",\"ts\":1574938799.45168,\"logger\":\"cmd\",\"msg\":\"Starting the Cmd.\"}\n{\"level\":\"info\",\"ts\":1574938799.4526892,\"logger\":\"controller-runtime.controller\",\"msg\":\"Starting EventSource\",\"controller\":\"tgik-controller\",\"source\":\"kind source: /, Kind=\"}\n{\"level\":\"info\",\"ts\":1574938799.4532652,\"logger\":\"controller-runtime.controller\",\"msg\":\"Starting EventSource\",\"controller\":\"tgik-controller\",\"source\":\"kind source: /, Kind=\"}\n{\"level\":\"info\",\"ts\":1574938799.4534595,\"logger\":\"controller-runtime.manager\",\"msg\":\"starting metrics server\",\"path\":\"/metrics\"}\n{\"level\":\"info\",\"ts\":1574938799.4535701,\"logger\":\"controller-runtime.controller\",\"msg\":\"Starting Controller\",\"controller\":\"tgik-controller\"}\n{\"level\":\"info\",\"ts\":1574938799.5538788,\"logger\":\"controller-runtime.controller\",\"msg\":\"Starting workers\",\"controller\":\"tgik-controller\",\"worker count\":1}\n\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftanalam2411%2Fkubecuddle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftanalam2411%2Fkubecuddle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftanalam2411%2Fkubecuddle/lists"}