<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Shakirat (Lawal) Koiki </title>
    <description>The latest articles on Forem by Shakirat (Lawal) Koiki  (@mizkas).</description>
    <link>https://forem.com/mizkas</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F111829%2F8f8f2a38-d23f-4dab-87f8-f09ee1333ad1.jpeg</url>
      <title>Forem: Shakirat (Lawal) Koiki </title>
      <link>https://forem.com/mizkas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mizkas"/>
    <language>en</language>
    <item>
      <title>Comparing Kubernetes and Virtual Machines: Choosing the Right Approach for Your Application Deployment</title>
      <dc:creator>Shakirat (Lawal) Koiki </dc:creator>
      <pubDate>Sat, 15 Apr 2023 12:23:47 +0000</pubDate>
      <link>https://forem.com/mizkas/comparing-kubernetes-and-virtual-machines-choosing-the-right-approach-for-your-application-deployment-m87</link>
      <guid>https://forem.com/mizkas/comparing-kubernetes-and-virtual-machines-choosing-the-right-approach-for-your-application-deployment-m87</guid>
      <description>&lt;p&gt;Introduction:&lt;br&gt;
With the rise of containerization and cloud computing, technologies like Kubernetes and virtual machines (VMs) have become popular options for deploying and managing applications. But what are the differences between these two approaches? In this blog post, we will explore Kubernetes and VMs, their key differences, and when to use each option for optimal application deployment and management.&lt;/p&gt;

&lt;p&gt;Kubernetes:&lt;br&gt;
Kubernetes, often abbreviated as K8s, is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications. Containers are lightweight, portable, and isolated units of software that package the application and its dependencies into a single executable unit, making it easy to move across different environments.&lt;/p&gt;

&lt;p&gt;Kubernetes provides a robust and scalable solution for managing containers, allowing for automated scaling, rolling updates, self-healing, load balancing, and fault tolerance. It abstracts the underlying infrastructure, making it agnostic to the underlying compute resources, such as virtual machines, bare-metal servers, or cloud instances. Kubernetes also provides a rich ecosystem of tools and services for container networking, storage, security, and monitoring.&lt;/p&gt;

&lt;p&gt;Virtual Machines:&lt;br&gt;
Virtual machines, on the other hand, are emulations of physical computers that run multiple operating systems on a single physical host machine. Each VM runs its own isolated guest operating system and applications, with its own allocated compute resources, such as CPU, memory, and storage.&lt;/p&gt;

&lt;p&gt;VMs provide a high level of isolation between applications, as they run in separate guest OS environments. VMs also allow for running legacy or incompatible applications that may require different operating systems. VMs provide flexibility in terms of managing different operating systems and software stacks on a single physical host, and they can be easily backed up, restored, and migrated across different hosts.&lt;/p&gt;

&lt;p&gt;Differences:&lt;br&gt;
Now, let's compare Kubernetes and VMs based on some key differences:&lt;/p&gt;

&lt;p&gt;Abstraction: Kubernetes abstracts the underlying infrastructure, providing a unified management layer for containers across different compute resources. VMs, on the other hand, virtualize the entire operating system and run multiple instances of complete OS environments on a single host.&lt;/p&gt;

&lt;p&gt;Scalability: Kubernetes is designed to handle large-scale deployments and provides built-in mechanisms for horizontal scaling of containers based on demand. VMs can also be scaled, but it typically involves managing the VM images, configuring load balancers, and other manual steps.&lt;/p&gt;

&lt;p&gt;Resource Utilization: Containers in Kubernetes share the host OS kernel, which results in efficient utilization of system resources, as containers do not require the overhead of running multiple operating systems. VMs, on the other hand, require separate guest OS instances, resulting in higher resource overhead.&lt;/p&gt;

&lt;p&gt;Flexibility: Kubernetes provides a more agile and flexible approach to application deployment, as containers can be easily packaged, shipped, and deployed across different environments. VMs, on the other hand, require additional configuration and management of guest OS environments, making them less agile for rapid deployments.&lt;/p&gt;

&lt;p&gt;Portability: Containers in Kubernetes are highly portable and can be easily moved across different Kubernetes clusters, cloud providers, or on-premises environments. VMs, on the other hand, may require additional configuration and setup when migrating to different host environments.&lt;/p&gt;

&lt;p&gt;Conclusion:&lt;br&gt;
In conclusion, both Kubernetes and virtual machines have their own strengths and use cases. Kubernetes is ideal for managing containerized applications at scale, providing agility, portability, and efficient resource utilization. It abstracts the underlying infrastructure and provides advanced features for container management. On the other hand, virtual machines provide a higher level of isolation and flexibility in managing different operating systems and software stacks on a single host.&lt;/p&gt;

&lt;p&gt;When deciding between Kubernetes and VMs, it's important to consider factors such as application requirements, scalability needs, resource utilization, agility, and portability.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Implicit dependencies with Azure using terraform</title>
      <dc:creator>Shakirat (Lawal) Koiki </dc:creator>
      <pubDate>Sun, 26 Mar 2023 16:29:14 +0000</pubDate>
      <link>https://forem.com/mizkas/implicit-dependencies-with-azure-using-terraform-1ge4</link>
      <guid>https://forem.com/mizkas/implicit-dependencies-with-azure-using-terraform-1ge4</guid>
      <description>&lt;p&gt;Managing your infrastructure in Azure can be a complex task, especially as your infrastructure grows and becomes more complex. However, with Terraform, you can simplify your Azure infrastructure management and ensure that your resources are created and managed in a more efficient and reliable way.&lt;/p&gt;

&lt;p&gt;One key feature of Terraform is implicit dependencies, which allows you to define relationships between resources without explicitly specifying them in your configuration. In this blog post, we will explore some examples on how implicit dependencies work in Azure using Terraform.&lt;/p&gt;

&lt;p&gt;We will walk through several examples of implicit dependencies, including resource associations, network security groups, and network interface. In Terraform, implicit dependencies are relationships between resources that are not explicitly defined in the configuration but are inferred based on the configuration. In Azure, there are several implicit dependencies between resources that Terraform automatically handles for you. Here are some examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Virtual Networks and Subnets: When you create a subnet, it must be associated with a virtual network. Therefore, when you define a subnet resource in Terraform, it implicitly depends on the virtual network resource that it is associated with.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resource "azurerm_virtual_network" "mct_vnet" {
  name                = "mct-vnet"
  address_space       = ["10.0.0.0/16"]
  location            = "westus2"
  resource_group_name = "mct-rg"
}

resource "azurerm_subnet" "mct_subnet" {
  name           = "mct-subnet"
  address_prefix = "10.0.1.0/24"
  virtual_network_name = azurerm_virtual_network.mct_vnet.name
  resource_group_name  = "mct-rg"
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Network Security Groups and Subnets: When you associate a network security group (NSG) with a subnet, the NSG rules apply to all the resources within the subnet. Therefore, when you define an NSG resource in Terraform, it implicitly depends on the subnet resource that it is associated with.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resource "azurerm_network_security_group" "mct_nsg" {
  name                = "mct-nsg"
  location            = "westus2"
  resource_group_name = "mct-rg"
}

resource "azurerm_subnet_network_security_group_association" "mct_nsg_association" {
  subnet_id                 = azurerm_subnet.mct_subnet.id
  network_security_group_id = azurerm_network_security_group.mct_nsg.id
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Virtual Machines and Network Interfaces: When you create a virtual machine, it must have at least one network interface. Therefore, when you define a virtual machine resource in Terraform, it implicitly depends on the network interface resource that is associated with it.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resource "azurerm_network_interface" "mct_nic" {
  name                = "mct-nic"
  location            = "westus2"
  resource_group_name = "mctrg"

  ip_configuration {
    name                          = "mct-ip"
    subnet_id                     = azurerm_subnet.mct_subnet.id
    private_ip_address_allocation = "Dynamic"
  }
}

resource "azurerm_virtual_machine" "mct_vm" {
  name                  = "mct-vm"
  location              = "westus2"
  resource_group_name   = "mct-rg"
  network_interface_ids = [azurerm_network_interface.mct_nic.id]

  storage_image_reference {
    publisher = "Canonical"
    offer     = "UbuntuServer"
    sku       = "18.04-LTS"
    version   = "latest"
  }

  storage_os_disk {
    name              = "mct-osdisk"
    create_option     = "FromImage"
    caching           = "ReadWrite"
    managed_disk_type = "Standard_LRS"
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are just a few examples of implicit dependencies between resources in Azure using Terraform. By understanding and leveraging implicit dependencies, you can simplify your Terraform configuration and ensure that your resources are created in the correct order.&lt;/p&gt;

&lt;h4&gt;
  
  
  Understanding and leveraging implicit dependencies with example code.
&lt;/h4&gt;

&lt;p&gt;After writing your code and saving your .tf file.&lt;br&gt;
Step 1: run &lt;code&gt;terraform init&lt;/code&gt;, &lt;code&gt;terraform plan&lt;/code&gt; and &lt;code&gt;terraform apply&lt;/code&gt;&lt;br&gt;
step 2: run &lt;code&gt;terraform graph&lt;/code&gt; This will enable you  generate a visual representation of either a configuration or execution plan.&lt;br&gt;
step 3: Take the output and goto &lt;a href="http://www.webgraphviz.com/?tab=map"&gt;WebGraphviz&lt;/a&gt;, put it int the box and click on the button generate graph!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AY4lH4wT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sp6ouqr4ba5vv60vd8uk.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AY4lH4wT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sp6ouqr4ba5vv60vd8uk.PNG" alt="terraform graph" width="880" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The webgraphviz output looks like the image below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---n5R9dLH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uxgtuyw8p8xkjbppenwf.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---n5R9dLH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uxgtuyw8p8xkjbppenwf.PNG" alt="Image description" width="880" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Conclusion
&lt;/h4&gt;

&lt;p&gt;Implicit dependencies are a powerful feature of Terraform that can simplify your Azure infrastructure management and ensure that your resources are created and managed in a more efficient and reliable way. By allowing you to define relationships between resources without explicitly specifying them in your configuration, Terraform can ensure that resources are created in the correct order and that all dependencies are satisfied. When effectively created, implicit dependencies can help to ensure that your infrastructure is created and managed correctly, minimizing errors, delays, and security vulnerabilities. By leveraging this feature of Terraform, you can take advantage of the benefits of Azure infrastructure while simplifying your management and improving your infrastructure's reliability.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>devops</category>
      <category>terraform</category>
      <category>automation</category>
    </item>
    <item>
      <title>Implicit dependencies</title>
      <dc:creator>Shakirat (Lawal) Koiki </dc:creator>
      <pubDate>Sun, 26 Mar 2023 16:26:54 +0000</pubDate>
      <link>https://forem.com/mizkas/implicit-dependencies-3120</link>
      <guid>https://forem.com/mizkas/implicit-dependencies-3120</guid>
      <description>&lt;p&gt;In Terraform, implicit dependencies are relationships between resources that are not explicitly defined in the configuration but are inferred based on the configuration. In Azure, there are several implicit dependencies between resources that Terraform automatically handles for you. Here are some examples:&lt;/p&gt;

&lt;p&gt;Virtual Networks and Subnets: When you create a subnet, it must be associated with a virtual network. Therefore, when you define a subnet resource in Terraform, it implicitly depends on the virtual network resource that it is associated with.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resource "azurerm_virtual_network" "mct_vnet" {
  name                = "mct-vnet"
  address_space       = ["10.0.0.0/16"]
  location            = "westus2"
  resource_group_name = "mct-rg"
}

resource "azurerm_subnet" "mct_subnet" {
  name           = "example-subnet"
  address_prefix = "10.0.1.0/24"
  virtual_network_name = azurerm_virtual_network.mct_vnet.name
  resource_group_name  = "mct-rg"
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>azure</category>
      <category>devops</category>
    </item>
    <item>
      <title>About self</title>
      <dc:creator>Shakirat (Lawal) Koiki </dc:creator>
      <pubDate>Fri, 02 Nov 2018 11:03:41 +0000</pubDate>
      <link>https://forem.com/mizkas/about-self--4dl6</link>
      <guid>https://forem.com/mizkas/about-self--4dl6</guid>
      <description></description>
      <category>metatags</category>
    </item>
  </channel>
</rss>
