<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on This Hugo update was pushed automatically using GitLab CI/CD!</title>
    <link>http://advecti.io/post/</link>
    <description>Recent content in Posts on This Hugo update was pushed automatically using GitLab CI/CD!</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 10 Mar 2022 20:06:52 +0000</lastBuildDate>
    
        <atom:link href="http://advecti.io/post/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>13 Automating Hugo K8s Deployment With GitLab CICD</title>
      <link>http://advecti.io/2022/13-automating-hugo-k8s-deployment-with-gitlab-cicd/</link>
      <pubDate>Thu, 10 Mar 2022 20:06:52 +0000</pubDate>
      
      <guid>http://advecti.io/2022/13-automating-hugo-k8s-deployment-with-gitlab-cicd/</guid>
      <description>When I started this project, I wanted to keep things as simple as possible. My application - this Hugo blog - has been running for a while now, and every time I write a new blog post, I have to run through a process to update it. So far, this has been a manual process. The time has come to look into automating it.
Current vs Desired State Before we start jumping into &amp;ldquo;automating all the things&amp;rdquo;, we have to understand the current process and break it down to smaller sections.</description>
    </item>
    
    <item>
      <title>12 Upgrading Kubernetes Cluster</title>
      <link>http://advecti.io/2022/12-upgrading-kubernetes-cluster/</link>
      <pubDate>Tue, 11 Jan 2022 20:10:55 +0000</pubDate>
      
      <guid>http://advecti.io/2022/12-upgrading-kubernetes-cluster/</guid>
      <description>It has been a while since I have deployed this Kubernetes cluster, so the time has come to upgrade it. The version I initially ran was v1.20.1.
When it comes to supported versions, this is the official statement on the Kubernetes.io website:
&amp;ldquo;The Kubernetes project maintains release branches for the most recent three minor releases (1.23, 1.22, 1.21). Kubernetes 1.19 and newer receive approximately 1 year of patch support. Kubernetes 1.</description>
    </item>
    
    <item>
      <title>My CKA Exam Experience and Tips</title>
      <link>http://advecti.io/2021/my-cka-exam-experience-and-tips/</link>
      <pubDate>Mon, 06 Dec 2021 09:32:35 +0000</pubDate>
      
      <guid>http://advecti.io/2021/my-cka-exam-experience-and-tips/</guid>
      <description>Last week I passed the Certified Kubernetes Administrator (CKA) exam and in today&amp;rsquo;s post, I&amp;rsquo;d like to share my experience and some tips for preparing and taking for the exam.
I have taken a fair share of exams in my life but I have to say this was by far the best exam I&amp;rsquo;ve ever taken. I&amp;rsquo;d even go as far as saying it was&amp;hellip; fun.
The one thing I did not enjoy was the booking and check-in process.</description>
    </item>
    
    <item>
      <title>11 Working With Compute Resource Requests and Limits</title>
      <link>http://advecti.io/2021/11-working-with-compute-resource-requests-and-limits/</link>
      <pubDate>Wed, 10 Nov 2021 10:00:15 +0000</pubDate>
      
      <guid>http://advecti.io/2021/11-working-with-compute-resource-requests-and-limits/</guid>
      <description>A long time ago, in a blog post far, far away&amp;hellip;
&amp;hellip;we talked about Resource Quotas and set Object limits to our new Namespace called Playpen. In this post, we will look at Compute Resource Requests and Limits.
Compute Resource Requests and Limits Before we proceed it is good to understand the difference between a request and a limit. As the name suggests, both are used to control resources, such as CPU and Memory, and are set on a contrainer level.</description>
    </item>
    
    <item>
      <title>10 Working With Namespaces</title>
      <link>http://advecti.io/2021/10-working-with-namespaces/</link>
      <pubDate>Mon, 09 Aug 2021 15:49:16 +0100</pubDate>
      
      <guid>http://advecti.io/2021/10-working-with-namespaces/</guid>
      <description>Today, we will look at Namespaces.
Namespaces give us an option to divide our Kubernetes cluster to multiple virtual clusters. This may be useful if you want to create different environments, for example for Prod, Dev, and Test, or if you want to assign specific permissions and policies to users. It also allows you to define resource quotas, defining how many resources can a given namespace use.
Default Namespace Before we start creating custom namespaces, we can have a look at namespaces that already exist in our cluster by running kubectl get namespaces command:</description>
    </item>
    
    <item>
      <title>9 Blue/Green and Canary Deployments</title>
      <link>http://advecti.io/2021/9-blue-green-and-canary-deployments/</link>
      <pubDate>Sun, 25 Jul 2021 19:35:49 +0100</pubDate>
      
      <guid>http://advecti.io/2021/9-blue-green-and-canary-deployments/</guid>
      <description>Previously, we talked about Rolling Updates and how we are able to update the application with zero downtime.
In that scenario, all old pods were gradually replaced by new pods running the updated version of our application. While this method was very efficient, it did not really allow us to perform any kind of testing of the updated application in the new setting, and in case of a failure, our only option was to fully roll back.</description>
    </item>
    
    <item>
      <title>8 Configuring Update Strategies</title>
      <link>http://advecti.io/2021/8-configuring-update-strategies/</link>
      <pubDate>Wed, 30 Jun 2021 10:27:58 +0100</pubDate>
      
      <guid>http://advecti.io/2021/8-configuring-update-strategies/</guid>
      <description>One thing I did not talk about yet is how I keep the website updated. This is what we will discuss in today&amp;rsquo;s post.
Current update process I am a firm believer in KISS rule (Keep It Simple, Stupid), especially when I am working with new technologies. While I will be looking at automating this process at some stage, for now I update my blog by executing 5 simple steps:</description>
    </item>
    
    <item>
      <title>7 Configuring Topology Spread Constraints</title>
      <link>http://advecti.io/2021/7-configuring-topology-spread-constraints/</link>
      <pubDate>Tue, 15 Jun 2021 19:49:49 +0100</pubDate>
      
      <guid>http://advecti.io/2021/7-configuring-topology-spread-constraints/</guid>
      <description>In previous post, we have scaled our deployment by defining number of replicas required but we weren&amp;rsquo;t able to control where they get deployed. Today, we&amp;rsquo;ll look into this further.
Understanding default restart behaviour It is important to note that if a node fails, pods running on that node are scheduled for deletion. Pods only get scheduled on a node once, when they are created, and remain running on that node until it stops or is terminated.</description>
    </item>
    
    <item>
      <title>6 Creating a Deployment</title>
      <link>http://advecti.io/2021/6-creating-a-deployment/</link>
      <pubDate>Wed, 09 Jun 2021 15:59:32 +0100</pubDate>
      
      <guid>http://advecti.io/2021/6-creating-a-deployment/</guid>
      <description>Our website is now running and we can access it, however it is running in a single pod. That means that if it fails, our website will be down. To prevent this, we need to introduce some self-healing and scaling, and that&amp;rsquo;s why we&amp;rsquo;ll create a Deployment.
Working with Deployments Before we create a Deployment, let&amp;rsquo;s have a look what happens when we delete our single pod:
katarinabrookfield@KatsMac hugo-site % kubectl get pod hugo-site-pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES hugo-site-pod 1/1 Running 0 27h 10.</description>
    </item>
    
    <item>
      <title>5 Creating a Loadbalancer</title>
      <link>http://advecti.io/2021/5-creating-a-loadbalancer/</link>
      <pubDate>Mon, 07 Jun 2021 22:34:33 +0100</pubDate>
      
      <guid>http://advecti.io/2021/5-creating-a-loadbalancer/</guid>
      <description>Our pod is now running but we need to be able to connect to it. To do that, we will deploy a Service.
One of the reasons why we are running this on a cloud-based cluster is the ability to deploy load-balancers. I know what you are thinking; &amp;ldquo;Why are we deploying a load-balancer for a single pod?&amp;quot;. At this stage, we&amp;rsquo;re doing it to prepare for next steps which will include scaling-out of our application.</description>
    </item>
    
    <item>
      <title>4 Creating a Pod</title>
      <link>http://advecti.io/2021/4-creating-a-pod/</link>
      <pubDate>Mon, 07 Jun 2021 22:34:21 +0100</pubDate>
      
      <guid>http://advecti.io/2021/4-creating-a-pod/</guid>
      <description>We are now ready to deploy our Hugo app. To start, we will create a single Pod.
Create a pod Create a file called pod.yml:
katarinabrookfield@KatsMac hugo-site % vi pod.yml Enter the following info into the pod.yml file:
apiVersion: v1 kind: Pod metadata: name: hugo-site-pod labels: project: hugo-site spec: containers: - name: web-ctr image: katbrookfield/hugo-site ports: - containerPort: 8080 Deploy the app Run the following command to deploy the app:</description>
    </item>
    
    <item>
      <title>3 Creating a Linode Kubernetes Cluster</title>
      <link>http://advecti.io/2021/3-creating-a-linode-kubernetes-cluster/</link>
      <pubDate>Mon, 07 Jun 2021 22:33:48 +0100</pubDate>
      
      <guid>http://advecti.io/2021/3-creating-a-linode-kubernetes-cluster/</guid>
      <description>In previous post, we have containerized Hugo and pushed the image to our Docker Hub registry. Now we need a Kubernetes cluster to run this container on.
There are several options, from using local kind, building your own Kubernetes cluster to multiple cloud offerings. I will be using Linode to host my Kubernetes cluster as it is a simple and cost-effective solution that allows me to run this test app, as well as to deploy load-balancers and other tools further down the line.</description>
    </item>
    
    <item>
      <title>2 Creating a Docker Container</title>
      <link>http://advecti.io/2021/2-creating-a-docker-container/</link>
      <pubDate>Mon, 07 Jun 2021 22:33:34 +0100</pubDate>
      
      <guid>http://advecti.io/2021/2-creating-a-docker-container/</guid>
      <description>Now that we have Hugo site created locally, we need to put it in a container. You don&amp;rsquo;t have to use Docker as your container runtime but it still seems to be the most popular option so I&amp;rsquo;m going to stick to it.
Creating a Docker file I have tried to write the Dockerfile from scratch, however it is still not working exactly how I want it to. I will keep working on it and once done, I will publish an update.</description>
    </item>
    
    <item>
      <title>1 Working With Hugo</title>
      <link>http://advecti.io/2021/1-working-with-hugo/</link>
      <pubDate>Mon, 07 Jun 2021 22:33:20 +0100</pubDate>
      
      <guid>http://advecti.io/2021/1-working-with-hugo/</guid>
      <description>I am using Hugo to generate static sites for this blog. As I am on a Mac using Brew, I will be using it to install Hugo. If you are using a different OS you can follow installation instructions on https://gohugo.io/getting-started/installing/
Installation Run following commands in your favourite terminal:
brew install hugo hugo version You should see output similar to this:
hugo version hugo v0.83.1+extended darwin/arm64 BuildDate=unknown Selecting a Theme There are a lot of Themes to choose from.</description>
    </item>
    
    <item>
      <title>Welcome</title>
      <link>http://advecti.io/2021/welcome/</link>
      <pubDate>Mon, 07 Jun 2021 21:19:52 +0100</pubDate>
      
      <guid>http://advecti.io/2021/welcome/</guid>
      <description>Hi, I&amp;rsquo;m Kat, welcome to my blog! I am currently learning Kubernetes and needed a little test app to practice with. I have decided to use Hugo to live-document my journey and will be publishing posts as I go along and change the configuration.
Few disclaimers before we start:
  Ideas in this blog are not solely mine, I am bulding on examples I have encountered during my studies, mainly from following sources (I will be updating this list):</description>
    </item>
    
  </channel>
</rss>
