<?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: collabnixcommunity</title>
    <description>The latest articles on Forem by collabnixcommunity (@collabnixcommunity).</description>
    <link>https://forem.com/collabnixcommunity</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%2Forganization%2Fprofile_image%2F3469%2Fc6ac3fec-25d6-4726-a671-1cdf30916ccb.png</url>
      <title>Forem: collabnixcommunity</title>
      <link>https://forem.com/collabnixcommunity</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/collabnixcommunity"/>
    <language>en</language>
    <item>
      <title>Golang for Beginners </title>
      <dc:creator>Sangam Biradar </dc:creator>
      <pubDate>Tue, 22 Dec 2020 10:56:55 +0000</pubDate>
      <link>https://forem.com/collabnixcommunity/golang-for-beginners-3c85</link>
      <guid>https://forem.com/collabnixcommunity/golang-for-beginners-3c85</guid>
      <description>&lt;p&gt;&lt;a href="https://discord.com/invite/S3GtFvT" rel="noopener noreferrer"&gt;join Gopherlabs Community&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-- TABLE OF CONTENTS --&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/hello-world.html" rel="noopener noreferrer"&gt;Lets Start With First Hello world Program&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Decimal.html" rel="noopener noreferrer"&gt;Numeral Systems - Decimal&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/binary_go.html" rel="noopener noreferrer"&gt;Numeral systems - binary&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Hexadecimal.html" rel="noopener noreferrer"&gt;Numeral systems - hexadecimal&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/UTF-8.html" rel="noopener noreferrer"&gt;Numeral Systems Loop&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/UTF-8.html" rel="noopener noreferrer"&gt;Numeral Systems - UTF-8&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Short_variable_declarations.html" rel="noopener noreferrer"&gt;Short variable declarations&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/variable_with_zero_value.html" rel="noopener noreferrer"&gt;variable with zero value&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Deep_Drive_variable.html" rel="noopener noreferrer"&gt;deep drive on variables&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/deep_drive_Constants.html" rel="noopener noreferrer"&gt;deep drive on Constants&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Loop_nit_Condition_Post.html" rel="noopener noreferrer"&gt;Loop - Init, Condition, Post&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/NestedLoop.html" rel="noopener noreferrer"&gt;Loop - Nested Loops&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/loop_for_statement.html" rel="noopener noreferrer"&gt;Loop - For Statement&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Loop_Break_Continue.html" rel="noopener noreferrer"&gt;Loop - Break &amp;amp; Continue&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/random_number_crypto.html" rel="noopener noreferrer"&gt;Generate Random number with math/crypto/rand in Go&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/loop_Printing_ASCII.html" rel="noopener noreferrer"&gt;Loop - Printing ASCII&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Conditional_If_Statement.html" rel="noopener noreferrer"&gt;Conditional - If Statement&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/conditional-if-else_statement.html" rel="noopener noreferrer"&gt;Conditional - If, Else if, Else&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Loop_Conditional_Modulus.html" rel="noopener noreferrer"&gt;Loop, Conditional, Modulus&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Conditional_Switch_Statement.html" rel="noopener noreferrer"&gt;Conditional - Switch Statement&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Conditional_Switch_Statement_Documentation.html" rel="noopener noreferrer"&gt;Conditional - Switch Statement Documentation&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Conditional_Logic_Operators.html" rel="noopener noreferrer"&gt;Conditional Logic Operators&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/String_Type.html" rel="noopener noreferrer"&gt;String Type&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/BoolType.html" rel="noopener noreferrer"&gt;Bool Type&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Structs.html" rel="noopener noreferrer"&gt;Structs&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/struct_literal.html" rel="noopener noreferrer"&gt;struct literal&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Pointers_to_structs.html" rel="noopener noreferrer"&gt;Struct fields can be accessed through a struct pointer.&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Conversion_Not_Casting.html" rel="noopener noreferrer"&gt;Conversion, Not Casting&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Creating_Your_Own_Type.html" rel="noopener noreferrer"&gt;Creating Your Own Type&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Defer_go.html" rel="noopener noreferrer"&gt;Defer&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/stacking_defers.html" rel="noopener noreferrer"&gt;Stacking defers&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/pointer_golang.html" rel="noopener noreferrer"&gt;Pointers&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Prefix_Suffix.html" rel="noopener noreferrer"&gt;Prefix Suffix&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Conversion_between_array_and_slice.html" rel="noopener noreferrer"&gt;Conversion between array and slice&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/what_is_methods.html" rel="noopener noreferrer"&gt;Methods&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Go_Variadic_functions.html" rel="noopener noreferrer"&gt;variadic function&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/Init_Func.html" rel="noopener noreferrer"&gt;init Function&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/CLI_File_Arg.html" rel="noopener noreferrer"&gt;Command Line Arguments and File I/O&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gopherlabs.kubedaily.com/Beginners/interface_Go.html" rel="noopener noreferrer"&gt;interface&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Support this repo by gitstart &lt;br&gt;
&lt;a href="https://github.com/sangam14/GopherLabs" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub-readme-stats.vercel.app%2Fapi%2Fpin%2F%3Fusername%3Dsangam14%26repo%3DGopherLabs" alt="ReadMe Card"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>labs</category>
      <category>resources</category>
    </item>
    <item>
      <title> Nitty-Gritty of AWS IAM</title>
      <dc:creator>Sangam Biradar </dc:creator>
      <pubDate>Tue, 22 Dec 2020 10:48:41 +0000</pubDate>
      <link>https://forem.com/collabnixcommunity/aws-identity-and-access-management-iam-47p2</link>
      <guid>https://forem.com/collabnixcommunity/aws-identity-and-access-management-iam-47p2</guid>
      <description>&lt;h1&gt;
  
  
  Identity and Access Management (IAM)
&lt;/h1&gt;

&lt;p&gt;● The key features of IAM:&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shared Access to your Account 
&lt;/li&gt;
&lt;li&gt;Granular Permissions
&lt;/li&gt;
&lt;li&gt;Secure Access to AWS Resources
&lt;/li&gt;
&lt;li&gt;Identity Federation
&lt;/li&gt;
&lt;li&gt;Identity Information for Assurance
&lt;/li&gt;
&lt;li&gt;Payment Card Industry (PCI) Data Security Standard (DSS) Compliance
&lt;/li&gt;
&lt;li&gt;Password Policy
&lt;/li&gt;
&lt;li&gt;Multi Factor Authentication (MFA)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;●  Shared access to your AWS account&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Grant permission to users to access and use resources in your AWS account without sharing your password.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;● Granular Permissions&lt;/p&gt;
&lt;h4&gt;
  
  
  Granular permissions allow different permissions to various users to manage their access to AWS, such as:&lt;br&gt;
&lt;/h4&gt;

&lt;p&gt;• User access to specific services&lt;br&gt;&lt;br&gt;
• Specific permissions for actions&lt;br&gt;&lt;br&gt;
• Specific access to resources&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Secure Access
&lt;/h2&gt;
&lt;h4&gt;
  
  
  Securely allocate credentials that applications on EC2 instances require to access other AWS resources.&lt;br&gt;
&lt;/h4&gt;
&lt;h2&gt;
  
  
  Identity Federation
&lt;/h2&gt;

&lt;p&gt;● Allows users with external accounts to get temporary access to AWS resources&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Identity Information
&lt;/h2&gt;

&lt;p&gt;● Log, monitor, and track what users are doing with your AWS resources.&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  PCI DSS Compliance
&lt;/h2&gt;

&lt;p&gt;● Payment Card Industry (PCI) and Data Security Standard (DSS) compliant&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Multi-Factor Authentication
&lt;/h2&gt;

&lt;p&gt;● Two-Factor Authorization for users and resources to ensure absolute security using MFA devices&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Password Policy
&lt;/h2&gt;

&lt;p&gt;● IAM allows you to define password strength and rotation policies.&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  IAM Policies
&lt;/h2&gt;

&lt;p&gt;● A document that defines one or more permissions&lt;br&gt;&lt;br&gt;
● Attached to users, groups, and roles&lt;br&gt;&lt;br&gt;
● Written in JavaScript Object Notation (JSON)&lt;br&gt;&lt;br&gt;
● Selected from a pre-defined AWS list of policies, or you can create your own policy&lt;br&gt;&lt;/p&gt;

&lt;p&gt;## AWS Policies&lt;br&gt;
● AWS has many predefined policies which allow you to define granular access to AWS resources.&lt;br&gt;&lt;br&gt;
● There are around 200 predefined policies available for you to choose from.&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  AdministratorAccess Policy
&lt;/h2&gt;

&lt;p&gt;● AdministratorAccess policy provides full access to AWS services and resources.&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  AmazonEC2FullAccess Policy
&lt;/h2&gt;

&lt;p&gt;● AmazonEC2FullAccess policy provides AWS Directory Service user or groups full access to the Amazon EC2 services and resources&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  AmazonS3ReadOnlyAccess Policy
&lt;/h2&gt;

&lt;p&gt;● AmazonS3ReadOnlyAccess policy provides read-only access to all buckets using the AWS Management Console&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  JSON
&lt;/h2&gt;

&lt;p&gt;● AWS policies are written using JavaScript Object Notation (JSON).&lt;br&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:listbucket",
    "Resource": "arn:aws:s3:::example_s3_bucket"
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Policy-wide information:&lt;br&gt;&lt;br&gt;
Version–Date this policy was created&lt;br&gt;&lt;/p&gt;

&lt;p&gt;One or more individual statements:&lt;br&gt;&lt;br&gt;
Effect–Allow permission&lt;br&gt;&lt;br&gt;
Action– 3 list bucket &lt;br&gt;&lt;br&gt;
Resource–Name of the S3 bucket&lt;br&gt;&lt;/p&gt;

&lt;p&gt;## IAM Users&lt;br&gt;
 Users are defined as the people or systems that use your AWS resources. &lt;br&gt;&lt;/p&gt;

&lt;p&gt;## Security Credentials&lt;br&gt;
 AWS provides numerous ways to provide secure user access to your AWS resources: &lt;br&gt;&lt;/p&gt;

&lt;p&gt;Key pairs: &lt;br&gt;&lt;br&gt;
• They consist of a public and private key &lt;br&gt;&lt;br&gt;
• A private key is used to create a digital signature &lt;br&gt;&lt;br&gt;
• AWS uses the corresponding public key to validate the signature &lt;br&gt;&lt;/p&gt;

&lt;p&gt;Email address and password &lt;br&gt;&lt;br&gt;
• They are created when you sign up to use AWS &lt;br&gt;&lt;br&gt;
• They are used to sign in to AWS web pages &lt;br&gt;&lt;/p&gt;

&lt;p&gt;IAM user name and password &lt;br&gt;&lt;br&gt;
• They allow multiple individuals or applications access to your AWS account &lt;br&gt;&lt;br&gt;
• Individuals use their user names and passwords to sign in &lt;br&gt;&lt;/p&gt;

&lt;p&gt;Multi-Factor Authentication (MFA) &lt;br&gt;&lt;br&gt;
• With AWS MFA enabled, users are prompted for a user name and password and for an authentication code from an MFA device &lt;br&gt;&lt;/p&gt;

&lt;p&gt;Access keys &lt;br&gt;&lt;br&gt;
• They consist of an access key and a secret access key &lt;br&gt;&lt;br&gt;
• They use access keys to sign programmatic requests &lt;br&gt;&lt;/p&gt;

&lt;p&gt;## IAM Groups&lt;br&gt;
 ● AWS defines a group as a collection of users that inherit the same set of permissions. &lt;br&gt;&lt;/p&gt;

&lt;p&gt;## IAM Roles&lt;/p&gt;

&lt;p&gt;IAM Roles are: &lt;br&gt;&lt;br&gt;
• Very similar to users &lt;br&gt;&lt;br&gt;
• Not password protected and do not require access keys &lt;br&gt;&lt;br&gt;
• AWS identities with permission policies that determine the access available to the identities &lt;br&gt;&lt;br&gt;
• Assumed by anyone who requires them &lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create Individual IAM Users &lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;• The benefits of creating individual IAM users: &lt;br&gt;&lt;br&gt;
• Control permissions at an individual level &lt;br&gt;&lt;br&gt;
• No shared accounts &lt;br&gt;&lt;br&gt;
• Unique credentials for everyone &lt;br&gt;&lt;br&gt;
• Easier to rotate credentials &lt;br&gt;&lt;br&gt;
• Easier to identify security breaches &lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Grant Least Privilege
&lt;/h2&gt;

&lt;p&gt;When creating IAM policies, granting ”least privilege,” means that: &lt;br&gt;&lt;br&gt;
• You only grant required permissions &lt;br&gt;&lt;br&gt;
• It's more secure to start with minimum permissions &lt;br&gt;&lt;br&gt;
• It’s easier to grant permissions than revoke them &lt;br&gt;&lt;br&gt;
• You protect your assets &lt;br&gt;&lt;/p&gt;

&lt;p&gt;## Manage Permissions with Groups&lt;br&gt;
 Use permissions with groups to minimize the workload  &lt;br&gt;&lt;br&gt;
 Easy to assign new permissions &lt;br&gt;&lt;br&gt;
• It is easier to assign a new permission to a group than to assign it to many individual users. &lt;br&gt;&lt;br&gt;
  Simple to reassign permissions  &lt;br&gt;&lt;br&gt;
• It is simpler to reassign permissions if a user has a change in responsibilities. &lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Restrict Access with Further Conditions
&lt;/h2&gt;

&lt;p&gt;• Use additional conditions such as MFA and Security Groups to ensure only the intended users get access. &lt;br&gt;&lt;/p&gt;

&lt;p&gt;## Monitor Activity in your AWS Account &lt;br&gt;
  AWS has several features to log user actions.  &lt;br&gt;&lt;br&gt;
• Logs &lt;br&gt;&lt;br&gt;
• AWS Cloudtrail &lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a Strong Password Policy
&lt;/h2&gt;

&lt;p&gt;• Ensure that all your users have strong passwords and they rotate their passwords regularly. &lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Roles for Applications that run on EC2
&lt;/h2&gt;

&lt;p&gt;• IAM Roles remove the need for your developers to store or pass credentials to AWS EC2. &lt;br&gt;&lt;/p&gt;

&lt;p&gt;## Reduce or Remove Unnecessary Credentials&lt;br&gt;
• To reduce the potential for misuse, run a credential report to identify users that are no longer in use and can be removed. &lt;br&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  AWS Security Token Service (STS)
&lt;/h1&gt;

&lt;p&gt;• It is a web service that enables you to request temporary, limited-privilege credentials for AWS Identity and Access Management users that you authenticate.&lt;br&gt;
 &lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  STS: Things To Remember
&lt;/h2&gt;

&lt;p&gt;• Develop an Identity Broker to communicate with LDAP and AWS STS &lt;br&gt;&lt;br&gt;
• Identity Broker always authenticates with LDAP first and then AWS STS &lt;br&gt;&lt;br&gt;
• Application gets temporary access to AWS resources &lt;br&gt;&lt;/p&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>Installing Kubernetes with on Container Linux using Kubeadm</title>
      <dc:creator>collabnix</dc:creator>
      <pubDate>Tue, 22 Dec 2020 10:38:27 +0000</pubDate>
      <link>https://forem.com/collabnixcommunity/installing-kubernetes-with-on-container-linux-using-kubeadm-2a49</link>
      <guid>https://forem.com/collabnixcommunity/installing-kubernetes-with-on-container-linux-using-kubeadm-2a49</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fys9p1gs6npu9cqbl58e8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fys9p1gs6npu9cqbl58e8.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing kubeadm kubectl kubelet
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisite:
&lt;/h3&gt;

&lt;p&gt;Install CNI plugins (required for most pod network):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CNI_VERSION="v0.8.2"
mkdir -p /opt/cni/bin
curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-amd64-${CNI_VERSION}.tgz" | tar -C /opt/cni/bin -xz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install crictl (required for kubeadm / Kubelet Container Runtime Interface (CRI))
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CRICTL_VERSION="v1.17.0"
mkdir -p /opt/bin
curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-amd64.tar.gz" | tar -C /opt/bin -xz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Copy paste the below snippet one by one in your CLI terminal - This is for both Master and Worker Nodes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)"

mkdir -p /opt/bin
cd /opt/bin
curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/amd64/{kubeadm,kubelet,kubectl}
chmod +x {kubeadm,kubelet,kubectl}

RELEASE_VERSION="v0.2.7"
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:/opt/bin:g" &amp;gt; /etc/systemd/system/kubelet.service
mkdir -p /etc/systemd/system/kubelet.service.d
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:/opt/bin:g" &amp;gt; /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

systemctl enable --now kubelet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Initializing kubeadm - This is only for Master
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubeadm init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Setting up kubeconfig - This is only for Master Node
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Copying token from kubeadmn init snippet - This you should copy from Master. This you will get from Master node only
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubeadm join &amp;lt;control-plane-host&amp;gt;:&amp;lt;control-plane-port&amp;gt; --token &amp;lt;token&amp;gt; --discovery-token-ca-cert-hash sha256:&amp;lt;hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Installing Network Plugin - This is only for Master Node
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Joining Worker Nodes - This is only for Worker Nodes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubeadm join --token &amp;lt;token&amp;gt; &amp;lt;control-plane-host&amp;gt;:&amp;lt;control-plane-port&amp;gt; --discovery-token-ca-cert-hash sha256:&amp;lt;hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Note:
&lt;/h2&gt;

&lt;p&gt;Please do not run Master node snippet commands on Worker Nodes.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl" rel="noopener noreferrer"&gt;https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#initializing-your-control-plane-node" rel="noopener noreferrer"&gt;https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#initializing-your-control-plane-node&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Installing Kubernetes on Ubuntu 16.04+, Debian 9+ and HypriotOS v1.0.1 using Kubeadm</title>
      <dc:creator>collabnix</dc:creator>
      <pubDate>Tue, 22 Dec 2020 10:34:19 +0000</pubDate>
      <link>https://forem.com/collabnixcommunity/installing-kubernetes-on-ubuntu-16-04-debian-9-hypriotos-v1-0-1-using-kubeadm-1ep6</link>
      <guid>https://forem.com/collabnixcommunity/installing-kubernetes-on-ubuntu-16-04-debian-9-hypriotos-v1-0-1-using-kubeadm-1ep6</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ufZUmHky--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/pkhgcacydqbfck5d61nv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ufZUmHky--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/pkhgcacydqbfck5d61nv.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre-requisite
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; Install Docker using

&lt;code&gt;curl -sSL https://get.docker.com/ | sh&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installing kubeadm kubectl kubelet
&lt;/h2&gt;

&lt;p&gt;Copy paste the below snippet one by one in your CLI terminal - This is for both Master and Worker Nodes&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat &amp;lt;&amp;lt;EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Initialize kubeadm - This is only for Master
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubeadm init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Setting up kubeconfig - This is only for Master Node
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Copying token from kubeadmn init snippet - This you should copy from Master. This you will get from Master node only
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubeadm join &amp;lt;control-plane-host&amp;gt;:&amp;lt;control-plane-port&amp;gt; --token &amp;lt;token&amp;gt; --discovery-token-ca-cert-hash sha256:&amp;lt;hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Installing Network Plugin - This is only for Master Node
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Joining Worker Nodes - This is only for Worker Nodes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubeadm join --token &amp;lt;token&amp;gt; &amp;lt;control-plane-host&amp;gt;:&amp;lt;control-plane-port&amp;gt; --discovery-token-ca-cert-hash sha256:&amp;lt;hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Note:
&lt;/h2&gt;

&lt;p&gt;Please do not run Master node snippet commands on Worker Nodes.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl"&gt;https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#initializing-your-control-plane-node"&gt;https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#initializing-your-control-plane-node&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Installing Kubernetes on CentOS 7, RHEL 7 and Fedora 25+ using Kubeadm</title>
      <dc:creator>collabnix</dc:creator>
      <pubDate>Tue, 22 Dec 2020 10:16:56 +0000</pubDate>
      <link>https://forem.com/collabnixcommunity/installing-kubernetes-on-centos-7-rhel-7-and-fedora-25-using-kubeadm-5ahh</link>
      <guid>https://forem.com/collabnixcommunity/installing-kubernetes-on-centos-7-rhel-7-and-fedora-25-using-kubeadm-5ahh</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UwXyJ0cu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mc9jyhm0fbh73unx2vp9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UwXyJ0cu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mc9jyhm0fbh73unx2vp9.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Installing Kubernetes with Kubeadm on CentOS 7/RHEL 7/Fedora 25+
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Installing kubeadm, kubectl &amp;amp; kubelet
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Copy paste the below snippet one by one in your CLI terminal - This is for both Master and Worker Nodes
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Setting up SELinux in permissive mode (effectively disabling it)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Initialize kubeadm - This is only for Master
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubeadm init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Setting up kubeconfig - This is only for Master Node
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  mkdir -p $HOME/.kube
  cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  chown $(id -u):$(id -g) $HOME/.kube/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Copy token from kubeadmn init snippet - This you should copy from Master. This you will get from Master node only
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubeadm join &amp;lt;control-plane-host&amp;gt;:&amp;lt;control-plane-port&amp;gt; --token &amp;lt;token&amp;gt; --discovery-token-ca-cert-hash sha256:&amp;lt;hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Installing Network Plugin - This is only for Master Node
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Join Worker Nodes - This is only for Worker Nodes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubeadm join --token &amp;lt;token&amp;gt; &amp;lt;control-plane-host&amp;gt;:&amp;lt;control-plane-port&amp;gt; --discovery-token-ca-cert-hash sha256:&amp;lt;hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Note:
&lt;/h2&gt;

&lt;p&gt;Please do not run Master node snippet commands on Worker Nodes.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl"&gt;https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#initializing-your-control-plane-node"&gt;https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#initializing-your-control-plane-node&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Deploy your AWS EKS cluster with Terraform</title>
      <dc:creator>collabnix</dc:creator>
      <pubDate>Tue, 22 Dec 2020 08:06:08 +0000</pubDate>
      <link>https://forem.com/collabnixcommunity/deploy-your-aws-eks-cluster-with-terraform-1llh</link>
      <guid>https://forem.com/collabnixcommunity/deploy-your-aws-eks-cluster-with-terraform-1llh</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7_N8Lky0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/cr2w9cugfjb2tvwevo9m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7_N8Lky0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/cr2w9cugfjb2tvwevo9m.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Amazon Elastic Kubernetes Service (Amazon EKS) is a fully managed Kubernetes service by AWS. The purpose of this tutorial is to create an EKS cluster with Terraform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre-requisite:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;MacOS&lt;/li&gt;
&lt;li&gt;Get an AWS free trial account&lt;/li&gt;
&lt;li&gt;Install Terraform v0.12.26
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install terraform
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you’re running Terraform 0.11, I would suggest to upgrade it to 0.12 ASAP.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install AWSCLI 2.0.17
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install awscli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Install AWS IAM Authenticator
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install aws-iam-authenticator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Install WGET
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install wget
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Install Kubectl
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install kubernetes-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Setting up AWS IAM users for Terraform
&lt;/h2&gt;

&lt;p&gt;The first thing to set up is your Terraform. We will create an AWS IAM users for Terraform.&lt;/p&gt;

&lt;p&gt;In your AWS console, go to the IAM section and create a user named “SudoAccess”. Then add your user to a group named “SudoAccessGroup”. Attaches to this group the following rights:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AdministratorAccess&lt;/li&gt;
&lt;li&gt;AmazonEKSClusterPolicy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After these steps, AWS will provide you a Secret Access Key and Access Key ID. Save them preciously because this will be the only time AWS gives it to you.&lt;/p&gt;

&lt;p&gt;In your own console, create a ~/.aws/credentials file and put your credentials in it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[default]
aws_access_key_id=***********
aws_secret_access_key=****************************
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Creating Config file
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat config
[default]
region=us-east-2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Cloning the Repository
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/hashicorp/learn-terraform-provision-eks-cluster
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can explore this repository by changing directories or navigating in your UI.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ cd learn-terraform-provision-eks-cluster
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In here, you will find six files used to provision a VPC, security groups and an EKS cluster. The final product should be similar to this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;vpc.tf provisions a VPC, subnets and availability zones using the AWS VPC Module. A new VPC is created for this guide so it doesn’t impact your existing cloud environment and resources.&lt;/li&gt;
&lt;li&gt;security-groups.tf provisions the security groups used by the EKS cluster.&lt;/li&gt;
&lt;li&gt;eks-cluster.tf provisions all the resources (AutoScaling Groups, etc…) required to set up an EKS cluster in the private subnets and bastion servers to access the cluster using the AWS EKS Module.&lt;/li&gt;
&lt;li&gt;On line 14, the AutoScaling group configuration contains three nodes.&lt;/li&gt;
&lt;li&gt;outputs.tf defines the output configuration.&lt;/li&gt;
&lt;li&gt;versions.tf sets the Terraform version to at least 0.12. It also sets versions for the providers used in this sample.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Initialize Terraform workspace
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Captains-Bay]? &amp;gt;  terraform init
Initializing modules...
Downloading terraform-aws-modules/eks/aws 12.0.0 for eks...
- eks in .terraform/modules/eks/terraform-aws-eks-12.0.0
- eks.node_groups in .terraform/modules/eks/terraform-aws-eks-12.0.0/modules/node_groups
Downloading terraform-aws-modules/vpc/aws 2.6.0 for vpc...
- vpc in .terraform/modules/vpc/terraform-aws-vpc-2.6.0

Initializing the backend...

Initializing provider plugins...
- Checking for available provider plugins...
- Downloading plugin for provider "random" (hashicorp/random) 2.2.1...
- Downloading plugin for provider "local" (hashicorp/local) 1.4.0...
- Downloading plugin for provider "null" (hashicorp/null) 2.1.2...
- Downloading plugin for provider "kubernetes" (hashicorp/kubernetes) 1.11.3...
- Downloading plugin for provider "template" (hashicorp/template) 2.1.2...
- Downloading plugin for provider "aws" (hashicorp/aws) 2.64.0...

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
[Captains-Bay]? &amp;gt;
Apply complete! Resources: 51 added, 0 changed, 0 destroyed.

Outputs:

cluster_endpoint = https://83AEAE7D9A99A68DFA4162E18F4AD470.gr7.us-east-2.eks.amazonaws.com
cluster_name = training-eks-9Vir2IUu
cluster_security_group_id = sg-000e8af737c088047
kubectl_config = apiVersion: v1
preferences: {}
kind: Config

clusters:
- cluster:
    server: https://83AEAE7D9A99A68DFA4162E18F4AD470.gr7.us-east-2.eks.amazonaws.com
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJd01EVXpNVEpNWkFneVVBS1hma1pQV2d4OXBWdWFOMHkzeE02ZTdTaUtYNFpTNmhFQzcyK1hrK29Na2tsSlFlQ0J3TT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
  name: eks_training-eks-9Vir2IUu

contexts:
- context:
    cluster: eks_training-eks-9Vir2IUu
    user: eks_training-eks-9Vir2IUu
  name: eks_training-eks-9Vir2IUu

current-context: eks_training-eks-9Vir2IUu

users:
- name: eks_training-eks-9Vir2IUu
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: aws-iam-authenticator
      args:
        - "token"
        - "-i"
        - "training-eks-9Vir2IUu"
region = us-east-2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configure kubectl
&lt;/h2&gt;

&lt;p&gt;Now that you’ve provisioned your EKS cluster, you need to configure kubectl. Customize the following command with your cluster name and region, the values from Terraform’s output. It will get the access credentials for your cluster and automatically configure kubectl.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws eks --region us-east-2 update-kubeconfig --name training-eks-9Vir2IUu
Added new context arn:aws:eks:us-east-2:125346028423:cluster/training-eks-9Vir2IUu to /Users/ajeetraina/.kube/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Troubleshooting:
&lt;/h2&gt;

&lt;p&gt;If you are facing the below error message while running terraform init:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Captains-Bay]? &amp;gt;  terraform validate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Error parsing /Users/ajeetraina/.aws/learn-terraform-provision-eks-cluster/eks-cluster.tf: At 3:18: Unknown token: 3:18 IDENT local.cluster_name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then to fix it , you need to update your Terraform version by running&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew upgrade terraform
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>MULTIPASS + MICROK8 + Grafana On MACOSX</title>
      <dc:creator>Sangam Biradar </dc:creator>
      <pubDate>Tue, 19 Feb 2019 00:00:00 +0000</pubDate>
      <link>https://forem.com/collabnixcommunity/multipass-microk8-grafana-on-macosx-5f8o</link>
      <guid>https://forem.com/collabnixcommunity/multipass-microk8-grafana-on-macosx-5f8o</guid>
      <description>&lt;h1&gt;
  
  
  MULTIPASS + MICROK8 + Grafana On MACOSX
&lt;/h1&gt;

&lt;p&gt;Multipass is a system that orchestrates the creation, management and maintenance of Virtual Machines and associated Ubuntu images to simplify development. MicroK8s is a local deployment of Kubernetes. Let’s skip all the technical details and just accept that Kubernetes does not run natively on MacOS or Windows. You may be thinking “I have seen Kubernetes running on a MacOS laptop, what kind of sorcery was that?” It’s simple, Kubernetes is running inside a VM. You might not see the VM or it might not even be a full blown virtual system but some level of virtualisation is there. This is exactly what we will show here.&lt;/p&gt;

&lt;p&gt;Under this tutorial, we will setup a VM using Multipass and will showcase how to install MicroK8s. After the installation we will discuss how to build appalication stack using K8s. Let’s get started:&lt;/p&gt;

&lt;h1&gt;
  
  
  Download Multipass VM &lt;a href="https://github.com/CanonicalLtd/multipass/releases"&gt;https://github.com/CanonicalLtd/multipass/releases&lt;/a&gt;
&lt;/h1&gt;

&lt;h1&gt;
  
  
  A multipass VM on MacOS
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Biradars-MacBook-Air:~ sangam$ multipass launch --name microk8s-vm --mem 4G --disk 40G
Launched: microk8s-vm                                                           
Biradars-MacBook-Air:~ sangam$ multipass exec microk8s-vm -- sudo snap install microk8s --classic
multipass exec microk8s-vm -- sudo iptables -P FORWARD ACCEPT
2019-02-19T18:13:52+05:30 INFO Waiting for restart...
microk8s v1.13.2 from Canonical✓ installed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure you reserve enough resources to host your deployments; above, we got 4GB of RAM and 40GB of hard disk. We also make sure packets to/from the pod network interface can be forwarded to/from the default interface.&lt;/p&gt;

&lt;h1&gt;
  
  
  Our VM has an IP that you can check with:
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Biradars-MacBook-Air:~ sangam$ multipass list
Name State IPv4 Release
microk8s-vm RUNNING 192.168.64.3 Ubuntu 18.04 LTS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Take a note of this IP since our services will become available there. Other multipass commands you may find handy:&lt;/p&gt;

&lt;h1&gt;
  
  
  Get a shell inside the VM:
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Biradars-MacBook-Air:~ sangam$ multipass shell microk8s-vm
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-45-generic x86_64)

 * Documentation: https://help.ubuntu.com
 * Management: https://landscape.canonical.com
 * Support: https://ubuntu.com/advantage

 System information disabled due to load higher than 1.0

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

7 packages can be updated.
7 updates are security updates.

Last login: Tue Feb 19 18:11:11 2019 from 192.168.64.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  install kubect
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo snap install kubectl --classic

multipass@microk8s-vm:~$ kubectl version
Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.3", GitCommit:"721bfa751924da8d1680787490c54b9179b1fed0", GitTreeState:"clean", BuildDate:"2019-02-01T20:08:12Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.2", GitCommit:"cff46ab41ff0bb44d8584413b598ad8360ec1def", GitTreeState:"clean", BuildDate:"2019-01-10T23:28:14Z", GoVersion:"go1.11.4", Compiler:"gc", Platform:"linux/amd64"}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  check k8 microk8
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;multipass@microk8s-vm:~$ microk8s.kubectl get nodes
NAME STATUS ROLES AGE VERSION
microk8s-vm Ready &amp;lt;none&amp;gt; 13m v1.13.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  check cluster
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;multipass@microk8s-vm:~$ microk8s.kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.152.183.1 &amp;lt;none&amp;gt; 443/TCP 15m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Enable microk8 dashboard
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;multipass@microk8s-vm:~$ microk8s.enable dns dashboard
Enabling DNS
Applying manifest
service/kube-dns created
serviceaccount/kube-dns created
configmap/kube-dns created
deployment.extensions/kube-dns created
Restarting kubelet
DNS is enabled
Enabling dashboard
secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created
service/monitoring-grafana created
service/monitoring-influxdb created
service/heapster created
deployment.extensions/monitoring-influxdb-grafana-v4 created
serviceaccount/heapster created
configmap/heapster-config created
configmap/eventer-config created
deployment.extensions/heapster-v1.5.2 created
dashboard enabled
multipass@microk8s-vm:~$
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Deployment
&lt;/h1&gt;

&lt;p&gt;Deploying a nginx service is what you would expect, with the addition of the Microk8s prefix&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;multipass@microk8s-vm:~$ microk8s.kubectl run nginx --image nginx --replicas 3
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/nginx created
 --selector=run=nginx --name nginxkubectl expose deployment nginx --port 80 --target-port 80 --type ClusterIP\ 
The Service "nginx" is invalid: spec.type: Unsupported value: "ClusterIP --selector=run=nginx": supported values: "ClusterIP", "ExternalName", "LoadBalancer", "NodePort"
multipass@microk8s-vm:~$
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  get all pod and services details
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;multipass@microk8s-vm:~$ microk8s.kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx-7cdbd8cdc9-cgksg 1/1 Running 0 2m41s
pod/nginx-7cdbd8cdc9-msq5w 1/1 Running 0 2m41s
pod/nginx-7cdbd8cdc9-sbqll 1/1 Running 0 2m41s

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.152.183.1 &amp;lt;none&amp;gt; 443/TCP 22m

NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 3/3 3 3 2m41s

NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-7cdbd8cdc9 3 3 3 2m41s
multipass@microk8s-vm:~$

multipass@microk8s-vm:~$ kubectl --kubeconfig=kubeconfig get all --all-namespaces
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.152.183.1 &amp;lt;none&amp;gt; 443/TCP 11m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  You can verify that all services are up and running with the following command:
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;multipass@microk8s-vm:~$ microk8s.kubectl get all --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default pod/nginx-7cdbd8cdc9-cgksg 1/1 Running 0 7m19s
default pod/nginx-7cdbd8cdc9-msq5w 1/1 Running 0 7m19s
default pod/nginx-7cdbd8cdc9-sbqll 1/1 Running 0 7m19s
kube-system pod/heapster-v1.5.2-64874f6bc6-tgx96 4/4 Running 0 7m32s
kube-system pod/kube-dns-6ccd496668-n64pw 3/3 Running 0 10m
kube-system pod/kubernetes-dashboard-654cfb4879-98h29 1/1 Running 0 10m
kube-system pod/monitoring-influxdb-grafana-v4-6679c46745-tbrbg 2/2 Running 0 10m

NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.152.183.1 &amp;lt;none&amp;gt; 443/TCP 27m
kube-system service/heapster ClusterIP 10.152.183.77 &amp;lt;none&amp;gt; 80/TCP 10m
kube-system service/kube-dns ClusterIP 10.152.183.10 &amp;lt;none&amp;gt; 53/UDP,53/TCP 10m
kube-system service/kubernetes-dashboard ClusterIP 10.152.183.171 &amp;lt;none&amp;gt; 443/TCP 10m
kube-system service/monitoring-grafana ClusterIP 10.152.183.127 &amp;lt;none&amp;gt; 80/TCP 10m
kube-system service/monitoring-influxdb ClusterIP 10.152.183.216 &amp;lt;none&amp;gt; 8083/TCP,8086/TCP 10m

NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
default deployment.apps/nginx 3/3 3 3 7m19s
kube-system deployment.apps/heapster-v1.5.2 1/1 1 1 10m
kube-system deployment.apps/kube-dns 1/1 1 1 10m
kube-system deployment.apps/kubernetes-dashboard 1/1 1 1 10m
kube-system deployment.apps/monitoring-influxdb-grafana-v4 1/1 1 1 10m

NAMESPACE NAME DESIRED CURRENT READY AGE
default replicaset.apps/nginx-7cdbd8cdc9 3 3 3 7m19s
kube-system replicaset.apps/heapster-v1.5.2-56c546dbb8 0 0 0 7m47s
kube-system replicaset.apps/heapster-v1.5.2-64874f6bc6 1 1 1 7m32s
kube-system replicaset.apps/heapster-v1.5.2-6bc7c4965d 0 0 0 10m
kube-system replicaset.apps/kube-dns-6ccd496668 1 1 1 10m
kube-system replicaset.apps/kubernetes-dashboard-654cfb4879 1 1 1 10m
kube-system replicaset.apps/monitoring-influxdb-grafana-v4-6679c46745 1 1 1 10m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  get cluster info
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;multipass@microk8s-vm:~$ microk8s.kubectl cluster-info
Kubernetes master is running at http://127.0.0.1:8080
Heapster is running at http://127.0.0.1:8080/api/v1/namespaces/kube-system/services/heapster/proxy
KubeDNS is running at http://127.0.0.1:8080/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Grafana is running at http://127.0.0.1:8080/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
InfluxDB is running at http://127.0.0.1:8080/api/v1/namespaces/kube-system/services/monitoring-influxdb:http/proxy

# find ip of your vm and replace with your monitoring servives
Kubernetes master is running at http://192.168.64.3:8080
Heapster is running at http://192.168.64.3:8080/api/v1/namespaces/kube-system/services/heapster/proxy
KubeDNS is running at http://192.168.64.3:8080/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Grafana is running at http://192.168.64.3:8080/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
InfluxDB is running at http://192.168.64.3:8080/api/v1/namespaces/kube-system/services/monitoring-influxdb:http/proxy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>kubernetes</category>
    </item>
  </channel>
</rss>
