We may earn an affiliate commission when you visit our partners.
Course image
Edward Viaene

If you are working in the Cloud or DevOps space, then this course is for you. Golang has been gaining massively in popularity in the recent years. Forget the small shell scripts you'd write to glue things together. You can create real programs with a great programming language created by Google. It compiles fast, it runs fast, it has static typing, and it has been used to write popular applications like Docker and Kubernetes. It's the best choice to write your next applications in.

Read more

If you are working in the Cloud or DevOps space, then this course is for you. Golang has been gaining massively in popularity in the recent years. Forget the small shell scripts you'd write to glue things together. You can create real programs with a great programming language created by Google. It compiles fast, it runs fast, it has static typing, and it has been used to write popular applications like Docker and Kubernetes. It's the best choice to write your next applications in.

I'll show you how to write applications to integrate with any third party that has a REST API. While I'm explaining you our first program that will make API calls, you'll learn step by step how to use Go. Next, I'll show you how to integrate with the AWS API to launch a new instance using Go. Not launching instances anymore because you're workload is completely containerized? The next section shows you how to use the Kubernetes API using the Kubernetes go-client.

Once you went on to integrate with those technologies, you should be able to write your own Go code to integrate with the APIs that you're using within your organization. Happy learning.

I also answer all questions in the Q&A section and you can reach out to me by direct message. I run weekly office hours if you want to talk to me.

Note: this course has Closed Captions available in English (not auto-generated)

Update 04/2024:

* Added how to write a Kubernetes Operator Controller in Go

Enroll now

What's inside

Learning objectives

  • Learn golang basics by example
  • Learn how to use golang as a devops or cloud engineer with industry specific use-cases
  • Learn how to use the aws go sdk
  • Learn how to use the azure go sdk
  • Learn how to use the kubernetes api and go sdk
  • Integrate with github webhooks in go
  • Write your own identity provider (idp) with openid connect (oidc)
  • Write your own ssh server and client in go
  • Create an openssl-alike command line utility to create x.509 certificates to run an https-secured webserver
  • Integrate let's encrypt certificates and use mutual tls (mtls) between services
  • Write your own dns server (resolver) in go, using only official golang libraries
  • Show more
  • Show less

Syllabus

Introduction

Introduction to the course

This lectures contains links to useful information and my source files used in the course

Read more

Installation instructions to setup Go in Visual Studio Code

Our first helloworld golang application

Introduction to golang executables and print a message on the terminal

Introduction to using and capturing command arguments in Golang

Demo explaining conditionals

A 1-pager with common lines of code to learn the Go syntax

A HTTP Get demo showing how to do http requests

After doing an http request, golang can parse the JSON objects in a struct

io.Reader interface explained by creating our own custom reader

JSON Parsing with multiple endpoints

A rewrite of our http-get program with functions

How to do custom error handling in Golang with our http Get code that generates an http response

In this lecture I refactor our program to use the "flag" package

An introduction in how we're going to access protected endpoints

When an external API needs authentication, you need to specify a way of authentication. In this lecture we experiment with passing a JWT in an authentication header. We override the http Transport function for that.

In this demo we're putting our code in a separate package

Now that we have Get API calls to a server, we want to test this code. We're going to write a MockClient to test the go code that we have written

We implemented a custom RoundTrip for our http requests to inject a JWT token. Let's now write a test for this piece of code

An explanation of pointers in Go

In this lecture I'll explain the differences between arrays and slices in Go

The difference between arrays and slices shown with example code

How to compare different types in Go if you pass a variable as "any" in a function

A demo showing what is and isn't possible with Generics in Go

Parsing a JSON that you don't know the types of requires you to use a Type Switch or the Reflect Package to figure out what types are inside the parsed json variable.

Asynchronous calls in go, together with channels to manage communication flow

Once you start using goroutines, you'll want to use mutual exclusion in certain cases to ensure your order of execution

This lecture explained how cross compiling in Go works, and what "cgo" is.

Go applications can be packaged easily in a docker image. With "docker build" I'll show you a few options to package a go app with alpine and scratch base images.

An introduction on how to use Golang with AWS

Before we can use Golang in our application, we need to generate AWS credentials

Let's launch an EC2 in Golang with the aws-sdk-go

In this demo I'll show you how to launch an EC2 in Golang

This demo shows how to upload a file to s3 with the Go AWS SDK

Now that we uploaded a file, let's try to download the file again from s3 in Go

How to test our AWS SDK code in Golang

Introduction into the Go SDK for Azure

Now that we have set up our az client, we can start writing a program to read those credentials and create our first resource: the ResourceGroup

In this lecture I'll create the vnet and the subnet necessary to launch the VM on Azure

Lecture showing how to create a Public IP address resource and a Network Security Group using the Azure Go SDK

Lecture showing how to create a Network Interface (NIC) using the Azure Go SDK

Updating a VNet with dependencies (the NIC) gives us an error. In this lecture we're creating a findVnet to solve that.

After we created all our dependencies, we can finally launch our VM!

How to use Kubernetes in Golang

In this demo I show you how to write an application that deploys a container on Kubernetes

Now that we have our application deployed, how do we run consecutive deployments

Our application is deployed, but now we want to check whether are pods are running

In the previous lecture I showed you how to build a GitHub Webhooks Kubernetes integration. Now I'm going to deploy that example in a docker container in the Kubernetes cluster itself

In this demo I'm going to integrate GitHub with Kubernetes. Our deployment yaml files will be stored in a git repository. GitHub webhooks will be triggered when a file is added or a change is made. The files committed will then be deployed on our Kubernetes cluster.

In this lecture I'm using the rsa and ssh package to create a new set of SSH keys

An introduction to the upcoming SSH client and server lectures

In this lecture we're going to build an SSH server!

If you want to execute single SSH commands, then you need to implement the "exec" request call, which we're doing in this demo

This lecture shows how to make client connections in Go with Dial.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Uses Go to interface with cloud platforms like AWS and Azure, which is essential for automating cloud infrastructure and services
Explores integration with Kubernetes using the Go SDK, which is valuable for managing containerized applications in cloud environments
Covers writing an SSH server and client in Go, which is useful for secure remote access and management of systems
Teaches how to create an openssl-alike command line utility for X.509 certificates, which is relevant for securing web servers with HTTPS
Demonstrates integrating Let's Encrypt certificates and using mutual TLS (mTLS) between services, which is important for modern security practices
Requires familiarity with cloud and DevOps concepts, so learners without this background may find the material challenging

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Practical go for devops and cloud

Based on student feedback, learners say this course is highly relevant for DevOps and Cloud Engineers looking to apply Go to real-world tasks. The hands-on labs and examples covering interaction with AWS, Azure, and especially Kubernetes APIs are frequently praised for being practical and directly applicable. Reviewers note the instructor is knowledgeable and clear. However, several students mention that the initial Go basics section moves very fast and may not be sufficient for those completely new to the language, suggesting it's better suited for learners with some prior programming experience or willingness to supplement their Go study. The course content appears to be actively maintained, with recent updates appreciated by students.
Instructor maintains and updates content.
"The recent update adding Kubernetes Operator content is a great addition and shows the course is maintained."
Instructor explains concepts effectively.
"The instructor is clear and knows his stuff."
"The instructor is knowledgeable, though sometimes moves a bit fast."
"Excellent content and delivery. The examples are relevant and the instructor is very clear."
Content is highly applicable to career needs.
"Fantastic course for anyone in DevOps looking to learn Go... incredibly practical and directly applicable to my job."
"Exactly what I needed! This course bridge the gap between learning Go and applying it in my daily work."
"Very focused on practical application, which is exactly what I wanted."
Covers directly applicable cloud/DevOps use cases.
"The hands-on labs covering AWS, Azure, and especially Kubernetes integrations are incredibly practical and directly applicable to my job."
"Exactly what I needed! This course bridge the gap between learning Go and applying it in my daily work."
"Seeing Go used for real-world tasks like interacting with cloud APIs was invaluable."
"The examples on AWS, Azure, and K8s are very practical."
OIDC/SSH sections are dense or less core.
"The OIDC and SSH sections were a bit advanced but fascinating."
"The OIDC part was interesting but felt a bit out of place for a 'DevOps' course."
"The OIDC part, although that was quite dense."
Some students desire more assignments.
"Needs more assignments to practice the concepts."
"Assignments would be a good addition to reinforce learning."
Moves fast if new to Go, needs prior experience.
"My only minor complaint is that the Go basics could be slightly more in-depth for absolute beginners..."
"The Go fundamentals are rushed through, making it tough if you don't have prior programming experience."
"Felt lost in the AWS/Azure/K8s code without a stronger Go background. Maybe better for people who already know Go basics."
"The initial Go section is definitely not enough for someone new to Go. Felt like I needed to pause constantly and look up Go syntax/concepts elsewhere."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Golang For DevOps And Cloud Engineers with these activities:
Review Basic Networking Concepts
Reinforce your understanding of networking fundamentals, which are essential for understanding how applications communicate in the cloud and how DevOps tools function.
Browse courses on Networking
Show steps
  • Review the OSI model and key networking protocols.
  • Study common network topologies and addressing schemes.
  • Practice subnetting and CIDR notation.
Review 'The Go Programming Language'
Deepen your understanding of Go syntax and best practices by studying this comprehensive book.
Show steps
  • Read the chapters on basic syntax, data structures, and concurrency.
  • Work through the examples and exercises in the book.
  • Refer to the book when you encounter unfamiliar concepts in the course.
Practice Go Syntax Exercises
Reinforce your understanding of Go syntax through targeted practice exercises.
Show steps
  • Complete online Go syntax exercises on platforms like Exercism or HackerRank.
  • Focus on exercises that cover topics like data structures, control flow, and functions.
  • Review solutions and explanations to identify areas for improvement.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Review 'Kubernetes in Action'
Enhance your Kubernetes knowledge by studying this comprehensive guide.
Show steps
  • Read the chapters on Kubernetes architecture, deployments, and services.
  • Experiment with the examples and exercises in the book.
  • Use the book as a reference when working with Kubernetes in the course.
Build a Simple REST API in Go
Solidify your understanding of Go and API development by building a simple REST API.
Browse courses on REST API
Show steps
  • Define the API endpoints and data models.
  • Implement the API using the `net/http` package or a framework like Gin or Echo.
  • Test the API using tools like Postman or curl.
  • Deploy the API to a cloud platform like AWS or Heroku.
Write a Blog Post on Go for DevOps
Deepen your understanding of Go's role in DevOps by writing a blog post explaining its benefits and use cases.
Browse courses on DevOps
Show steps
  • Research common DevOps tasks where Go is used.
  • Outline the key points you want to cover in your blog post.
  • Write the blog post, providing code examples and explanations.
  • Publish the blog post on a platform like Medium or your personal website.
Contribute to a Go-based Open Source DevOps Tool
Gain practical experience and contribute to the community by contributing to a Go-based open source DevOps tool.
Browse courses on Open Source
Show steps
  • Identify a Go-based open source DevOps tool that interests you.
  • Explore the project's codebase and documentation.
  • Find an issue to work on or propose a new feature.
  • Submit a pull request with your changes.

Career center

Learners who complete Golang For DevOps And Cloud Engineers will develop knowledge and skills that may be useful to these careers:
DevOps Engineer
DevOps Engineers focus on bridging the gap between development and operations, emphasizing automation, continuous integration, and continuous delivery. This role requires proficiency in scripting and programming to automate deployment processes and infrastructure management. A DevOps Engineer would use this course to learn how to use Go in their day to day duties. The course specifically addresses how to write programs to integrate with third-party REST APIs, making it essential for automating various DevOps tasks. It also covers how to use the Kubernetes API with Go, which helps a DevOps engineer manage container orchestration. This course is particularly useful for DevOps engineers who want to create robust, efficient tools and applications.
Cloud Engineer
A Cloud Engineer designs, implements, and manages cloud infrastructure. This role involves working extensively with cloud platforms like AWS and Azure, automating infrastructure deployment, and ensuring system reliability and scalability. This course helps the cloud engineer by showing them how to use Go to interact with cloud platforms, specifically AWS and Azure. The course also covers using the AWS SDK and Azure SDK to launch instances and manage resources, equipping a cloud engineer to automate essential cloud tasks with Go. This makes the course particularly useful for those looking to integrate cloud infrastructure with application logic. A cloud engineer using this course will be able to more easily integrate with cloud APIs to write more efficient programs.
Site Reliability Engineer
Site Reliability Engineers focus on ensuring the reliability, performance, and scalability of a company's systems and applications. This involves automating operational tasks, monitoring system health, and responding to incidents. This course is useful to an SRE because of its coverage of Go and its ability to operate and integrate with Kubernetes. SREs frequently work with Kubernetes, so learning how to interact with it using Go will be useful. The course also teaches integrating with third-party REST APIs, which is important for developing monitoring and automation tools. This course is particularly useful to SREs looking to improve observability and automation using modern tools and practices. SREs can use this course to build custom tools to manage infrastructure and monitor its health.
Platform Engineer
A Platform Engineer builds and maintains the underlying infrastructure and tools that application teams rely on. This involves creating self-service platforms and automating infrastructure management to enable efficient and scalable software deployment. This course enables a platform engineer to build robust tools and integrations with Go. The course demonstrates how to use Go to interact with Kubernetes and cloud provider APIs, which is extremely relevant for building modern platforms. Also, the course discusses building applications that integrate with REST APIs, allowing platform engineers to create custom automation and management tools. Platform Engineers will find this course highly useful in building and extending the platforms they support, ensuring a streamlined process. It is useful for anyone looking to build inhouse platforms.
Infrastructure Engineer
An Infrastructure Engineer is responsible for designing, implementing, and maintaining the physical and virtual infrastructure that supports an organization's IT operations. This role requires an understanding of operating systems, networking, and cloud technologies. This course could help infrastructure engineers learn how to use Go to interact with servers and cloud infrastructure. The course covers how to create an SSH server and client, and to develop custom tooling. The use of the AWS and Azure SDK in Go will also be instrumental in automating cloud infrastructure tasks. This demonstrates how useful the course can be for infrastructure engineers who want to leverage Go's capabilities for infrastructure management and automation. Infrastructure Engineers will find the skills developed in the class translate well to their day to day duties.
Automation Engineer
An Automation Engineer is responsible for designing and implementing automated systems and processes. This may include scripting, programming, and the use of automation tools to increase efficiency. This course is important to automation engineers because of its coverage of programming with Go, and its discussion of how to use Go to manage infrastructure on cloud platforms. Because it teaches how to integrate with REST APIs, this course will help an automation engineer create and maintain more complex automation. This course may be particularly useful for automation engineers who want to use Go to build complex processes.
Backend Developer
A Backend Developer focuses on server-side logic, databases, and APIs. They design and implement the infrastructure that supports applications and services. This course will be useful for a backend developer because it helps one build custom tools, particularly for operating with kubernetes, AWS and Azure. Specifically, this course covers how to build http request functionality, how to parse json objects, and how to test backend code. The course's treatment of JSON parsing and API integration means this course is useful for backend developers. It also covers important concepts such as concurrency and error handling which would aid in the creation of efficient and maintainable backend services. Backend Developers can use this course to build robust APIs and enhance their programs.
Systems Administrator
A Systems Administrator is responsible for the upkeep, configuration, and reliable operation of computer systems, servers, and networks. This role requires knowledge of operating systems, networking, and security practices. This course can be useful to a system administrator because it teaches how to build programs that interact with servers. The course covers how to create an SSH server and client in Go. It also covers interacting with APIs on AWS, Azure, and Kubernetes, which may be a part of a system administrator's domain. This course may be useful for system administrators who want to leverage Go to automate tasks or build custom tools.
Software Engineer
Software Engineers design, develop, and maintain software systems. They work on various aspects of software development, from front-end user interfaces to back-end services. While this course is not oriented towards front-end development, this course helps a software engineer build systems and create tooling. Because of the course's coverage on http requests, json parsing, and testing, software engineers may find this course particularly helpful for creating robust and efficient software systems. The course's emphasis on using Go with cloud platforms also ties directly into many modern software engineering roles. This course may be useful for software engineers who want to create robust and maintainable cloud applications.
Solutions Architect
A Solutions Architect designs and oversees the implementation of technology solutions that meet business needs. This involves creating high-level designs and working with engineering teams to ensure successful deployments. While not a direct fit, because of the course content, solutions architects may find it helpful to learn Go concepts. The course teaches how to build programs that integrate with AWS, Azure, and Kubernetes. Such information can help build architectures that are aware of the capabilities of using Go. This course may be useful to Solutions Architects who want a more hands-on understanding of the technologies they design solutions around. This course may help better understand the constraints of building systems with Go.
Technical Lead
A Technical Lead guides and mentors a team of developers, making key technical decisions and ensuring the successful delivery of projects. This position requires both technical expertise and leadership skills. This course can help a technical lead better understand new technologies and evaluate how to use them across their teams. The course's material on cloud interaction and kubernetes may help technical leads better direct projects. Knowledge of Golang is increasingly important in organizations. This course may be useful to technical leads that wish to understand the capabilities of programs written in Go.
Network Engineer
A network engineer designs, implements, and maintains computer networks. This includes routers, switches, firewalls, and other networking devices. While this isn't a direct fit, because the class covers how to create a custom DNS server, network engineers may find value in this course. Network engineers may find it useful to utilize Go to build networking tools. The course also provides a foundation in concurrent programming and error handling, which can be helpful in this field. This course may be useful for network engineers who want to learn how to build network tools with Go.
Security Engineer
Security Engineers focus on protecting computer systems and networks from threats. This involves implementing security measures, performing security audits, and responding to security incidents. Although it may not be a central focus, the course covers how to implement authentication with OpenID Connect, which security engineers may find useful. This helps in the development of secure applications and infrastructure. The course's focus on secure API communication with mTLS as well as using certificates in Go may also be helpful. This course may be useful to security engineers who want to create secure applications and infrastructures.
IT Manager
An IT Manager is responsible for planning, coordinating, and directing all computer-related activities within an organization. This role often involves managing budgets, ensuring project completion, and overseeing team performance. Because of the growing importance of Golang in cloud infrastructure, taking this course may be helpful towards IT managers who want to understand the capabilities of infrastructure built with Go. The course goes over how to use Go when interacting with AWS, Azure, and Kubernetes. This course may be useful to IT managers who want to better understand how the underlying infrastructure works.
Research Scientist
Research Scientists design and conduct research in a particular field, often involving data analysis, experimentation, and publishing findings. Although this isn't a direct fit, research scientists may find value in the course as it teaches general purpose programming. The course also covers concurrency and other topics which are helpful to research scientists who wish to utilize programming in their work. The course may be helpful for research scientists who want to build custom tools or integrate with cloud platforms. Research scientists may find the course helpful for building data pipelines and performing computation on cloud resources.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Golang For DevOps And Cloud Engineers.
Comprehensive guide to the Go programming language, covering everything from basic syntax to advanced concurrency patterns. It is highly recommended as a reference text for this course. It provides a deeper understanding of the language features used in DevOps and cloud engineering. This book is commonly used as a textbook at academic institutions and by industry professionals.
Provides a comprehensive guide to Kubernetes, covering everything from basic concepts to advanced deployment strategies. It is particularly useful for understanding how to manage and orchestrate containerized applications. This book adds more depth to the Kubernetes sections of the course. It is commonly used as a reference by DevOps engineers.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser