{"id":116,"date":"2024-11-14T22:17:26","date_gmt":"2024-11-14T22:17:26","guid":{"rendered":"https:\/\/guillaumesblog.net\/?p=116"},"modified":"2024-11-15T10:41:46","modified_gmt":"2024-11-15T10:41:46","slug":"operators-on-kubernetes","status":"publish","type":"post","link":"https:\/\/guillaumesblog.net\/index.php\/operators-on-kubernetes\/","title":{"rendered":"Operators on Kubernetes"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Kubernetes seem so prominent these days and with them a term I could hear often: &#8220;Operator&#8221;. Having no clue I decided to investigate it and after a few questions dropped on my favorite A.I. I could still not wrap my head around it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Took the matter in my own hands and built my own Kubernetes cluster using Oracle OKE, deployed it with the &#8220;quick deploy&#8221; option that does for you the networking and some extra ground work which I admit is convenient, but after all, my research is about operators and not cloud infrastructure.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">Then the fun began, I had to, in order, set up my control node, set-up the access to OCI and to my OKE cluster with kubeconfig file. Then, I could not avoid the traditional fight with $PATH and .bashrc file, maybe I&#8217;ll get better one day! And&#8230; then finally got to install both the operator SDK and OSOK (OCI Service Operator for Kubernetes) but faced errors at <em>operator-sdk run bundle iad.ocir.io\/oracle\/oci-service-operator-bundle:1.1.1<\/em>&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Because of the concept Kubernetes and Operator being new to me, and the frustration mounting, I ended up destroying my kubectl setup entirely. I don&#8217;t know, either the image version I was pulling was incorrect, or I made a mistake on a .yaml, or maybe I was deploying in the wrong namespace&#8230; At the end, I had to wipe everything off and start again, but eventually made it! The OSOK was installed on my cluster!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It was very nice to discover that you could create your &#8220;own objects&#8221;, called CRDs, in Kubernetes, for instance I could launch a domain with mysql on it, directly from a <em>kubectl deploy -f<\/em>, which obviously is a lot more convenient I imagine when you work inside kubernetes, now you and I understand what an operator does!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I followed this tutorial on <a href=\"https:\/\/github.com\/oracle\/oci-service-operator\/tree\/main\/docs\">github<\/a>, this <a href=\"https:\/\/blogs.oracle.com\/cloud-infrastructure\/post\/oci-service-operator-for-kubernetes\">blog<\/a> was also helpful, plus instruction from <a href=\"https:\/\/sdk.operatorframework.io\/docs\/installation\/\">Operator SDK.<\/a> <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1885\" height=\"567\" src=\"https:\/\/guillaumesblog.net\/wp-content\/uploads\/2024\/11\/image-2.png\" alt=\"\" class=\"wp-image-117\"\/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Kubernetes seem so prominent these days and with them a term I could hear often: &#8220;Operator&#8221;. Having no clue I decided to investigate it and after a few questions dropped on my favorite A.I. I could still not wrap my head around it. Took the matter in my own hands and built my own Kubernetes &hellip; <a href=\"https:\/\/guillaumesblog.net\/index.php\/operators-on-kubernetes\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Operators on Kubernetes&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-116","post","type-post","status-publish","format-standard","hentry","category-conversation"],"_links":{"self":[{"href":"https:\/\/guillaumesblog.net\/index.php\/wp-json\/wp\/v2\/posts\/116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/guillaumesblog.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/guillaumesblog.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/guillaumesblog.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/guillaumesblog.net\/index.php\/wp-json\/wp\/v2\/comments?post=116"}],"version-history":[{"count":4,"href":"https:\/\/guillaumesblog.net\/index.php\/wp-json\/wp\/v2\/posts\/116\/revisions"}],"predecessor-version":[{"id":122,"href":"https:\/\/guillaumesblog.net\/index.php\/wp-json\/wp\/v2\/posts\/116\/revisions\/122"}],"wp:attachment":[{"href":"https:\/\/guillaumesblog.net\/index.php\/wp-json\/wp\/v2\/media?parent=116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/guillaumesblog.net\/index.php\/wp-json\/wp\/v2\/categories?post=116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/guillaumesblog.net\/index.php\/wp-json\/wp\/v2\/tags?post=116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}