{"id":284,"date":"2024-10-29T04:16:21","date_gmt":"2024-10-29T04:16:21","guid":{"rendered":"https:\/\/emagetech.io\/en\/?page_id=284"},"modified":"2025-03-15T14:12:33","modified_gmt":"2025-03-15T14:12:33","slug":"golang","status":"publish","type":"page","link":"https:\/\/emagetech.io\/en\/golang\/","title":{"rendered":"Golang"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_row][vc_column width=&#8221;2\/3&#8243;][vc_empty_space height=&#8221;25px&#8221;][vc_column_text css=&#8221;&#8221;]Golang, also known as Go, is a programming language developed by Google that is used to create software for various operating systems and frameworks.<\/p>\n<p>This course will guide you through Golang, focusing on its use in developing Kubernetes Operators.[\/vc_column_text][vc_row_inner css=&#8221;.vc_custom_1536153128553{padding-top: 80px !important;padding-bottom: 80px !important;}&#8221;][vc_column_inner offset=&#8221;vc_col-lg-8&#8243;][vc_toggle title=&#8221;Introduction&#8221; css_animation=&#8221;none&#8221; css=&#8221;&#8221; el_id=&#8221;1486465455111-0cc2408f-96b7&#8243;]<\/p>\n<ul>\n<li data-sourcepos=\"12:1-16:0\">\n<p data-sourcepos=\"12:4-12:42\"><strong>Setting Up Your Golang Environment:<\/strong><\/p>\n<ul data-sourcepos=\"13:5-16:0\">\n<li data-sourcepos=\"13:5-13:109\">Understanding Environment Variables: Demystify essential variables like GOPATH, GO111MODULE, and GOBIN.<\/li>\n<li data-sourcepos=\"14:5-14:113\">Using the <code>go<\/code> Command: Learn basic usage of the <code>go<\/code> command with subcommands for interacting with Golang.<\/li>\n<li data-sourcepos=\"15:5-16:0\">Your First Go Program: Create a simple &#8220;Hello, World!&#8221; program to understand package structure and program execution (go run vs. go build).<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"17:1-30:0\">\n<p data-sourcepos=\"17:4-17:24\"><strong>Learn by Example:<\/strong><\/p>\n<ul data-sourcepos=\"18:5-30:0\">\n<li data-sourcepos=\"18:5-30:0\">Core Concepts: Dive into the fundamentals of Go programming, including:\n<ul data-sourcepos=\"19:9-30:0\">\n<li data-sourcepos=\"19:9-19:15\">Types<\/li>\n<li data-sourcepos=\"20:9-20:29\">Constants\/Variables<\/li>\n<li data-sourcepos=\"21:9-21:19\">Functions<\/li>\n<li data-sourcepos=\"22:9-22:23\">Arrays\/Slices<\/li>\n<li data-sourcepos=\"23:9-23:15\">Loops<\/li>\n<li data-sourcepos=\"24:9-24:14\">Maps<\/li>\n<li data-sourcepos=\"25:9-25:40\">Conditionals (if\/else, switch)<\/li>\n<li data-sourcepos=\"26:9-26:18\">Pointers<\/li>\n<li data-sourcepos=\"27:9-27:17\">Structs<\/li>\n<li data-sourcepos=\"28:9-28:47\">Methods (Pointer vs. Value Receivers)<\/li>\n<li data-sourcepos=\"29:9-30:0\">Interfaces<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>[\/vc_toggle][vc_toggle title=&#8221;Building Go Projects&#8221; css_animation=&#8221;none&#8221; css=&#8221;&#8221; el_id=&#8221;1489502905563-e29b0d23-e63e&#8221;]<\/p>\n<ul>\n<li data-sourcepos=\"33:1-36:0\">\n<p data-sourcepos=\"33:4-33:31\"><strong>Go Projects and Modules:<\/strong><\/p>\n<ul data-sourcepos=\"34:5-36:0\">\n<li data-sourcepos=\"34:5-34:90\">Managing Dependencies: Learn about Go modules and how to structure your Go projects.<\/li>\n<li data-sourcepos=\"35:5-36:0\">Project Organization: Explore how Go projects are typically organized using the <code>this<\/code> keyword as an example.<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"37:1-39:0\">\n<p data-sourcepos=\"37:4-37:35\"><strong>Network Programming with Go:<\/strong><\/p>\n<ul data-sourcepos=\"38:5-39:0\">\n<li data-sourcepos=\"38:5-39:0\">HTTP Clients and Servers: Discover how to build basic HTTP servers with GET and POST endpoints, including JSON decoding for handling requests.<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"40:1-44:0\">\n<p data-sourcepos=\"40:4-40:43\"><strong>Interacting with Kubernetes from Go:<\/strong><\/p>\n<ul data-sourcepos=\"41:5-44:0\">\n<li data-sourcepos=\"41:5-41:85\">Beyond <code>kubectl<\/code>: Understand what happens under the hood of <code>kubectl<\/code> commands.<\/li>\n<li data-sourcepos=\"42:5-42:158\">Golang Kubernetes Client Library: Learn how to use the Golang Kubernetes client library to make authenticated API requests to the Kubernetes API server.<\/li>\n<li data-sourcepos=\"43:5-44:0\">Emulating <code>kubectl<\/code> Commands: Use the client library to simulate basic <code>kubectl<\/code> commands like getting pods or creating deployments.<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"45:1-48:0\">\n<p data-sourcepos=\"45:4-45:44\"><strong>Running Golang Applications Anywhere:<\/strong><\/p>\n<ul data-sourcepos=\"46:5-48:0\">\n<li data-sourcepos=\"46:5-46:101\">Dockerizing Golang Projects: Package your Go application as a Docker container for portability.<\/li>\n<li data-sourcepos=\"47:5-48:0\">Running in a Kubernetes Cluster: Explore considerations for running Kubernetes-aware Go applications inside a Kubernetes cluster using InClusterConfig.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>[\/vc_toggle][vc_toggle title=&#8221;Kubernetes Controllers and Operators&#8221; css_animation=&#8221;none&#8221; css=&#8221;&#8221; el_id=&#8221;1489502905062-f32a7618-e6e0&#8243;]<\/p>\n<ul>\n<li data-sourcepos=\"51:1-55:0\">\n<p data-sourcepos=\"51:4-51:45\"><strong>Introduction to Control and Admission:<\/strong><\/p>\n<ul data-sourcepos=\"52:5-55:0\">\n<li data-sourcepos=\"52:5-52:118\">Controller Basics: Get introduced to the concept of controllers and their role in managing Kubernetes resources.<\/li>\n<li data-sourcepos=\"53:5-53:120\">Admission Control: Understand the purpose of validating and mutating resources with Dynamic Admission Controllers.<\/li>\n<li data-sourcepos=\"54:5-55:0\">Built-in and Third-Party Controllers: Explore examples of built-in controllers like deployment and cronjob controllers, alongside popular third-party controllers like aws-lb-controller and ingress-nginx.<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"56:1-59:0\">\n<p data-sourcepos=\"56:4-56:45\"><strong>Building Custom Admission Controllers:<\/strong><\/p>\n<ul data-sourcepos=\"57:5-59:0\">\n<li data-sourcepos=\"57:5-57:129\">Validating Webhooks: Create a custom webhook to validate a Kubernetes deployment for the presence of environment variables.<\/li>\n<li data-sourcepos=\"58:5-59:0\">Mutating Webhooks: Develop a mutating webhook to inject environment variables into every Kubernetes deployment automatically.<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"60:1-64:0\">\n<p data-sourcepos=\"60:4-60:41\"><strong>The Power of Kubernetes Operators:<\/strong><\/p>\n<ul data-sourcepos=\"61:5-64:0\">\n<li data-sourcepos=\"61:5-61:141\">Operators Demystified: Get introduced to the concept of Kubernetes Operators and their benefits for extending Kubernetes functionality.<\/li>\n<li data-sourcepos=\"62:5-62:131\">Use Cases for Operators: Explore how operators are used to interact with third-party services and control resource lifecycle.<\/li>\n<li data-sourcepos=\"63:5-64:0\">Custom Resource Definitions (CRDs): Learn about CRDs and their role in operator functionality, with examples like ArgoCD, Crossplane, and Tekton.<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"65:1-69:0\">\n<p data-sourcepos=\"65:4-65:57\"><strong>Simplified Operator Development with Operator SDK:<\/strong><\/p>\n<ul data-sourcepos=\"66:5-69:0\">\n<li data-sourcepos=\"66:5-66:100\">Building Operators from Scratch: Understand the complexity of creating operators from scratch.<\/li>\n<li data-sourcepos=\"67:5-67:116\">Operator SDK to the Rescue: Discover how the Operator SDK simplifies operator development with generated code.<\/li>\n<li data-sourcepos=\"68:5-69:0\">Creating Custom Operators: Use a tutorial to build practical custom operators, such as a GitHub repository operator or an S3 bucket operator.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>[\/vc_toggle][\/vc_column_inner][\/vc_row_inner][\/vc_column][vc_column width=&#8221;1\/3&#8243;][vc_empty_space height=&#8221;25px&#8221;]<header class=\"kd-section-title col-lg-12 text-left    \" ><h2 class=\"separator_off\" >Enroll<\/h2><\/header>[vc_column_text css=&#8221;&#8221;]<\/p>\n<h4>Cost &#8211; $3500<br \/>\nDuration &#8211; 3 months<\/h4>\n<p>[\/vc_column_text][vc_empty_space height=&#8221;10px&#8221;][vc_btn title=&#8221;Deposit&#8221; color=&#8221;blue&#8221; css_animation=&#8221;fadeIn&#8221; css=&#8221;&#8221; link=&#8221;url:https%3A%2F%2Flink.waveapps.com%2F2xx79p-k7p8e6&#8243;][vc_empty_space height=&#8221;5px&#8221;][vc_btn title=&#8221;Full payment&#8221; color=&#8221;blue&#8221; css_animation=&#8221;none&#8221; css=&#8221;&#8221; link=&#8221;url:https%3A%2F%2Flink.waveapps.com%2Fm3xr97-vnqhru&#8221;][\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_row][vc_column width=&#8221;2\/3&#8243;][vc_empty_space height=&#8221;25px&#8221;][vc_column_text css=&#8221;&#8221;]Golang, also known as Go, is a programming language developed by Google that is used to create [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":114,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-284","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/emagetech.io\/en\/wp-json\/wp\/v2\/pages\/284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/emagetech.io\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/emagetech.io\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/emagetech.io\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/emagetech.io\/en\/wp-json\/wp\/v2\/comments?post=284"}],"version-history":[{"count":7,"href":"https:\/\/emagetech.io\/en\/wp-json\/wp\/v2\/pages\/284\/revisions"}],"predecessor-version":[{"id":367,"href":"https:\/\/emagetech.io\/en\/wp-json\/wp\/v2\/pages\/284\/revisions\/367"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/emagetech.io\/en\/wp-json\/wp\/v2\/media\/114"}],"wp:attachment":[{"href":"https:\/\/emagetech.io\/en\/wp-json\/wp\/v2\/media?parent=284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}