<?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>DEV Community: Reybis Ceballos</title>
    <description>The latest articles on DEV Community by Reybis Ceballos (@reybis).</description>
    <link>https://dev.to/reybis</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%2F382322%2Fe2286b1e-6e02-43e1-8f38-313ba9608a7d.jpeg</url>
      <title>DEV Community: Reybis Ceballos</title>
      <link>https://dev.to/reybis</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/reybis"/>
    <language>en</language>
    <item>
      <title>Oracle APEX Stack on Docker</title>
      <dc:creator>Reybis Ceballos</dc:creator>
      <pubDate>Sun, 23 Aug 2020 20:47:49 +0000</pubDate>
      <link>https://dev.to/reybis/oracle-apex-stack-on-docker-577j</link>
      <guid>https://dev.to/reybis/oracle-apex-stack-on-docker-577j</guid>
      <description>&lt;h1&gt;
  
  
  Oracle APEX Stack
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Oracle APEX&lt;/li&gt;
&lt;li&gt;Prerequisites&lt;/li&gt;
&lt;li&gt;The Setup&lt;/li&gt;
&lt;li&gt;Oracle APEX Stack Up!&lt;/li&gt;
&lt;li&gt;Oracle APEX Stack Down!&lt;/li&gt;
&lt;li&gt;Optional: Custom Setup&lt;/li&gt;
&lt;li&gt;Credits&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Oracle APEX
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Oracle APEX&lt;/strong&gt; is the most popular low-code development platform that enables you to build enterprise apps 20x faster with 100x less code. APEX lets developers quickly develop and deploy enterprise-grade apps that are highly secure out of the box.&lt;/p&gt;

&lt;p&gt;It is easy to start to develop APEX apps; however, install and configure an APEX environment from scratch can be overwhelming for beginners.&lt;/p&gt;

&lt;p&gt;This post will give you the simplicity you are looking to deploy an entire Oracle APEX dev/test environment in your laptop or the cloud using Docker. &lt;/p&gt;

&lt;p&gt;Another day I will make a post about Oracle APEX In-depth but now let focus on deployment.&lt;/p&gt;

&lt;p&gt;Before anything else, let's see all the options we have to deploy Oracle APEX. &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Deployments&lt;/th&gt;
&lt;th&gt;PROs&lt;/th&gt;
&lt;th&gt;CONs&lt;/th&gt;
&lt;th&gt;How to get started&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;apex free workspace&lt;/td&gt;
&lt;td&gt;Easy to use to start testing APEX and to make a concept of proof in APEX.&lt;/td&gt;
&lt;td&gt;- Not for commercial apps &lt;br&gt; - No direct access to the database &lt;br&gt; - Not all the features of a full APEX Development Environment&lt;/td&gt;
&lt;td&gt;Request a service &lt;a href="https://apex.oracle.com/pls/apex/f?p=4700&amp;amp;p_lang=en"&gt;here&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Oracle APEX VM Image&lt;/td&gt;
&lt;td&gt;Easy to have a full APEX Development in your laptop if you like VMs.&lt;/td&gt;
&lt;td&gt;- VMs can be overwhelming &lt;br&gt; - VM is pre-configured and not tuned for all APEX capabilities&lt;/td&gt;
&lt;td&gt;Download the VM &lt;a href="https://www.oracle.com/database/technologies/databaseappdev-vm.html"&gt;here&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Oracle APEX On-Premises&lt;/td&gt;
&lt;td&gt;The best option to consider if you want a full APEX Development Environment with all the features in your laptop or Cloud.&lt;/td&gt;
&lt;td&gt;It's not that easy to set up than other options&lt;/td&gt;
&lt;td&gt;keep reading&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Oracle Autonomous Database&lt;/td&gt;
&lt;td&gt;The best option for Cloud hosting for APEX.&lt;/td&gt;
&lt;td&gt;There are restrictions and Limitations for APEX with Autonomous Database, see the entire list &lt;a href="https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/user/apex-restrictions.html#GUID-E13D5044-B9DD-4168-8A12-C99532940DA9"&gt;here&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;Start your Oracle Cloud journey right away &lt;a href="https://www.oracle.com/cloud/free/"&gt;here&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before starting, you need the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Docker Engine&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can install Docker Desktop on your laptop &lt;a href="https://docs.docker.com/engine/install/"&gt;here&lt;/a&gt; &lt;br&gt;&lt;br&gt;
If you are using Linux, you can install Docker Engine &lt;a href="https://docs.docker.com/engine/install/"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;This guide requires docker-compose. If you don’t have it yet, take a look at the &lt;a href="https://docs.docker.com/compose/install/#install-compose"&gt;installation instructions&lt;/a&gt; and get it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you’re installing docker-compose on CoreOS, it needs to go into &lt;code&gt;/opt/bin&lt;/code&gt; instead of &lt;code&gt;/usr/local/bin&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At least 20G of disk space and 4G of memory is recommended.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An internet connection.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;

&lt;p&gt;First of all, let download or clone the GitHub repository that accompanies this guide.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;git clone https://github.com/reybis/oracle-apex-docker-stack.git&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Due to licensing restrictions, I can’t host the software files in Github or elsewhere. &lt;em&gt;As such, you’ll need to download them manually. Download the following files and store them in the respective &lt;strong&gt;software folder&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html"&gt;apex_20.1.zip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html"&gt;LINUX.X64_193000_db_home.zip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tomcat.apache.org/download-90.cgi"&gt;apache-tomcat-9.0.37.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://adoptopenjdk.net/releases.html?variant=openjdk11&amp;amp;jvmVariant=hotspot"&gt;OpenJDK11U-jdk_x64_linux_hotspot_11.0.8_10.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html"&gt;ords-20.2.0.178.1804.zip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/developer-tools/sqlcl/downloads/index.html"&gt;sqlcl-20.2.0.174.1557.zip&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you download the &lt;strong&gt;repo&lt;/strong&gt; and all the &lt;strong&gt;software files&lt;/strong&gt;, the directory structure needs to be like the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="err"&gt;.&lt;/span&gt;
&lt;span class="err"&gt;.gitignore&lt;/span&gt;
&lt;span class="err"&gt;LICENSE.md&lt;/span&gt;
&lt;span class="err"&gt;README.md&lt;/span&gt;
&lt;span class="err"&gt;docker-compose.yml&lt;/span&gt;
&lt;span class="err"&gt;preview.gif&lt;/span&gt;
&lt;span class="err"&gt;ol&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="err"&gt;_ords&lt;/span&gt;
  &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;Dockerfile&lt;/span&gt;
  &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;README.md&lt;/span&gt;
  &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;scripts&lt;/span&gt;
  &lt;span class="err"&gt;│  &lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;healthcheck.sh&lt;/span&gt;
  &lt;span class="err"&gt;│  &lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;install_os_packages.sh&lt;/span&gt;
  &lt;span class="err"&gt;│  &lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;ords_software_installation.sh&lt;/span&gt;
  &lt;span class="err"&gt;│  &lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;server.xml&lt;/span&gt;
  &lt;span class="err"&gt;│  &lt;/span&gt; &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="err"&gt;start.sh&lt;/span&gt;
  &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="err"&gt;software&lt;/span&gt;
      &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;apache-tomcat&lt;/span&gt;&lt;span class="mi"&gt;-9&lt;/span&gt;&lt;span class="mf"&gt;.0.37&lt;/span&gt;&lt;span class="err"&gt;.tar.gz&lt;/span&gt;
      &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;apex_&lt;/span&gt;&lt;span class="mf"&gt;20.1&lt;/span&gt;&lt;span class="err"&gt;.zip&lt;/span&gt;
      &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;OpenJDK&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="err"&gt;U-jdk_x&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="err"&gt;_linux_hotspot_&lt;/span&gt;&lt;span class="mf"&gt;11.0.8&lt;/span&gt;&lt;span class="err"&gt;_&lt;/span&gt;&lt;span class="mf"&gt;10.&lt;/span&gt;&lt;span class="err"&gt;tar.gz&lt;/span&gt;
      &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;ords&lt;/span&gt;&lt;span class="mi"&gt;-20&lt;/span&gt;&lt;span class="mf"&gt;.2.0.178.1804&lt;/span&gt;&lt;span class="err"&gt;.zip&lt;/span&gt;
      &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;put_software_here.txt&lt;/span&gt;
      &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="err"&gt;sqlcl&lt;/span&gt;&lt;span class="mi"&gt;-20&lt;/span&gt;&lt;span class="mf"&gt;.2.0.174.1557&lt;/span&gt;&lt;span class="err"&gt;.zip&lt;/span&gt;
&lt;span class="err"&gt;ol&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="err"&gt;_&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;
  &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;Dockerfile&lt;/span&gt;
  &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;README.md&lt;/span&gt;
  &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;scripts&lt;/span&gt;
  &lt;span class="err"&gt;│  &lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;healthcheck.sh&lt;/span&gt;
  &lt;span class="err"&gt;│  &lt;/span&gt; &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="err"&gt;start.sh&lt;/span&gt;
  &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="err"&gt;software&lt;/span&gt;
      &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;apex_&lt;/span&gt;&lt;span class="mf"&gt;20.1&lt;/span&gt;&lt;span class="err"&gt;.zip&lt;/span&gt;
      &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;LINUX.X&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="err"&gt;_&lt;/span&gt;&lt;span class="mi"&gt;193000&lt;/span&gt;&lt;span class="err"&gt;_db_home.zip&lt;/span&gt;
      &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="err"&gt;put_software_here.txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Oracle APEX Stack Up!
&lt;/h2&gt;

&lt;p&gt;With all the files in place, you can create the stack using the following command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker-compose up
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;em&gt;If you want to be in detached mode use &lt;code&gt;-d&lt;/code&gt; after the &lt;code&gt;up&lt;/code&gt; command&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;docker-compose&lt;/code&gt; command creates the following services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;[DB]&lt;/strong&gt; - Oracle Enterprise Database with Oracle APEX installed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;[ORDS]&lt;/strong&gt; - ORDS/Tomcat&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;[PORTAINER]&lt;/strong&gt; - Portainer to manage the stack&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some things to keep in mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;strong&gt;database&lt;/strong&gt; is created the first time the service &lt;strong&gt;DB&lt;/strong&gt; is started, and also APEX is installed, which means it can take some time to be fully operational.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The &lt;strong&gt;DB&lt;/strong&gt; service expose port &lt;code&gt;1521&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;ORDS&lt;/strong&gt; service depends on the &lt;strong&gt;DB&lt;/strong&gt; service.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;The &lt;strong&gt;ORDS&lt;/strong&gt; service expose port &lt;code&gt;8080&lt;/code&gt; and &lt;code&gt;8443&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;strong&gt;PORTAINER&lt;/strong&gt; service doesn't create the admin user, you will need to create it manually when access to &lt;code&gt;localhost:9000&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The &lt;strong&gt;PORTAINER&lt;/strong&gt; service expose port &lt;code&gt;9000&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A folder called &lt;strong&gt;volumes&lt;/strong&gt; will be created to persist the database files and ORDS/Tomcat files.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After the &lt;code&gt;docker-compose&lt;/code&gt; command succeeded, you can view the stack by accessing portainer at &lt;code&gt;localhost:9000&lt;/code&gt; or by issuing the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker-compose ps
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6QynmBn6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/reybis/oracle-apex-docker-stack/master/preview.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6QynmBn6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/reybis/oracle-apex-docker-stack/master/preview.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it, now you have an entire Oracle APEX Environment in your machine, and you can access it at &lt;code&gt;localhost:8080&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Oracle APEX Stack Down!
&lt;/h2&gt;

&lt;p&gt;If you are done with your work and want to stop the stack, you can do it with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker-compose down
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Optional: Custom Setup
&lt;/h2&gt;

&lt;p&gt;If you like to change some environment settings like volumes, passwords, service names for the database, or many others, you can easily change it in the &lt;strong&gt;docker-compose file&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Open the &lt;code&gt;docker-compose.yml&lt;/code&gt; file and change the environment and volume sections on both services:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ORDS&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
environment:
  - DB_HOSTNAME=db
  - DB_PORT=1521
  - DB_SERVICE=pdb1
  - APEX_PUBLIC_USER_PASSWORD=ApexPassword1
  - APEX_TABLESPACE=APEX
  - TEMP_TABLESPACE=TEMP
  - APEX_LISTENER_PASSWORD=ApexPassword1
  - APEX_REST_PASSWORD=ApexPassword1
  - PUBLIC_PASSWORD=ApexPassword1
  - SYS_PASSWORD=SysPassword1
  - KEYSTORE_PASSWORD=KeystorePassword1
volumes:
  - ./volumes/ol7_19_ords_tomcat:/u01/config/instance1
...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;DB&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
environment:
  - SYS_PASSWORD=SysPassword1
  - PDB_PASSWORD=PdbPassword1
  - APEX_EMAIL=me@example.com
  - APEX_PASSWORD=ApexPassword1
volumes:
  - ./volumes/ol7_19_ords_db:/u02
...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;Bunch of ideas from Oracle-base docker files by &lt;a href="https://github.com/oraclebase/dockerfiles"&gt;Tim Hall&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>oracle</category>
      <category>oracleapex</category>
      <category>docker</category>
      <category>devops</category>
    </item>
    <item>
      <title>Set up a Kubernetes cluster using microk8s on macOS</title>
      <dc:creator>Reybis Ceballos</dc:creator>
      <pubDate>Tue, 18 Aug 2020 18:37:05 +0000</pubDate>
      <link>https://dev.to/reybis/set-up-a-kubernetes-cluster-using-microk8s-on-macos-58m1</link>
      <guid>https://dev.to/reybis/set-up-a-kubernetes-cluster-using-microk8s-on-macos-58m1</guid>
      <description>&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; This post follows a simple approach, there are probably better ways to do this (please share them if you know any!), and your mileage most definitely will vary.&lt;/p&gt;




&lt;p&gt;This post is part of a series of posts on how to &lt;strong&gt;Set up a Kubernetes cluster on macOS&lt;/strong&gt;, in this case, using &lt;strong&gt;microk8s&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Kubernetes is a complex container orchestration tool that can be overwhelming for beginners. Had you wondered how to get started on Kubernetes by yourself easily without the complexity of Turnkey Solutions (Oracle OKE, AWS EKS) and Managed Solutions (Google GKE), this post would give you the simplicity to deploy a Kubernetes cluster on macOS intended for dev/test purposes.&lt;/p&gt;

&lt;h1&gt;
  
  
  Table of Contents
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Microk8s&lt;/li&gt;
&lt;li&gt;Prerequisites&lt;/li&gt;
&lt;li&gt;Installation&lt;/li&gt;
&lt;li&gt;Create the cluster&lt;/li&gt;
&lt;li&gt;Test Kubernetes&lt;/li&gt;
&lt;li&gt;See the Cluster IP&lt;/li&gt;
&lt;li&gt;Deploy a Pod&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  💠 Microk8s
&lt;/h3&gt;

&lt;p&gt;Enter &lt;strong&gt;microk8s&lt;/strong&gt;, it is the smallest, most straightforward production-grade cluster of K8s. There are no VMs in the middle like other deployments &lt;strong&gt;Minikube&lt;/strong&gt;. Instead, it uses snap packages, snap is an application packaging and isolation technology; &lt;strong&gt;microk8s&lt;/strong&gt; is so small than even you can use it on Raspberry Pi.&lt;/p&gt;

&lt;p&gt;Although our goal is to deploy a dev/test environment, microk8s is intended for all 3 environments (production, dev &amp;amp; test). Whether you are running a production environment or interested in exploring K8s, &lt;strong&gt;microK8s&lt;/strong&gt; serves your needs.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ☑️ Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before starting, you need these prechecks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install the &lt;a href="https://brew.sh/"&gt;brew&lt;/a&gt; package manager. &lt;/li&gt;
&lt;li&gt;At least 20G of disk space and 4G of memory is recommended.&lt;/li&gt;
&lt;li&gt;An internet connection.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don't have the &lt;a href="https://brew.sh/"&gt;brew&lt;/a&gt; command? You need to open a terminal and run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;/bin/bash&lt;/span&gt; &lt;span class="err"&gt;-c&lt;/span&gt; &lt;span class="err"&gt;"$(curl&lt;/span&gt; &lt;span class="err"&gt;-fsSL&lt;/span&gt; &lt;span class="err"&gt;https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚙️ Installation
&lt;/h3&gt;

&lt;p&gt;In terminal, install &lt;strong&gt;microk8s&lt;/strong&gt; with brew.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="err"&gt;brew&lt;/span&gt; &lt;span class="err"&gt;install&lt;/span&gt; &lt;span class="err"&gt;ubuntu/microk&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="err"&gt;s/microk&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="err"&gt;s&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;em&gt;On macOS &lt;strong&gt;microk8s&lt;/strong&gt; need multipass, when prompted say yes.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🧑‍🚀 Create the cluster
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;To deploy a &lt;strong&gt;Kubernetes cluster&lt;/strong&gt;, you can go with the install command without parameters.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="err"&gt;microk&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="err"&gt;s&lt;/span&gt; &lt;span class="err"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Or you can be more specific like me (2 CPU, 2GB RAM, 30GB maximum space of disk).&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="err"&gt;microk&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="err"&gt;s&lt;/span&gt; &lt;span class="err"&gt;install&lt;/span&gt; &lt;span class="err"&gt;--cpu&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="err"&gt;--mem&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="err"&gt;--disk&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;em&gt;While it is running, you can open another terminal window and check the installation's status with the following command:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="err"&gt;microk&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="err"&gt;s&lt;/span&gt; &lt;span class="err"&gt;status&lt;/span&gt; &lt;span class="err"&gt;--wait-ready&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enable the DNS service.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="err"&gt;microk&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="err"&gt;s&lt;/span&gt; &lt;span class="err"&gt;enable&lt;/span&gt; &lt;span class="err"&gt;dns&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Test Kubernetes
&lt;/h3&gt;

&lt;p&gt;Let's test our command center&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;kubectl&lt;/span&gt; &lt;span class="err"&gt;get&lt;/span&gt; &lt;span class="err"&gt;nodes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;em&gt;You should see one node named &lt;code&gt;microk8s-vm&lt;/code&gt; in status Ready&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;NAME&lt;/span&gt;          &lt;span class="err"&gt;STATUS&lt;/span&gt;   &lt;span class="err"&gt;ROLES&lt;/span&gt;    &lt;span class="err"&gt;AGE&lt;/span&gt;     &lt;span class="err"&gt;VERSION&lt;/span&gt;
  &lt;span class="err"&gt;microk&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="err"&gt;s-vm&lt;/span&gt;   &lt;span class="err"&gt;Ready&lt;/span&gt;    &lt;span class="err"&gt;&amp;lt;none&amp;gt;&lt;/span&gt;   &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="err"&gt;d&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="err"&gt;h&lt;/span&gt;   &lt;span class="err"&gt;v&lt;/span&gt;&lt;span class="mf"&gt;1.18.6&lt;/span&gt;&lt;span class="mi"&gt;-1&lt;/span&gt;&lt;span class="err"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="err"&gt;f&lt;/span&gt;&lt;span class="mi"&gt;53401&lt;/span&gt;&lt;span class="err"&gt;f&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🗺️ See the Cluster IP
&lt;/h3&gt;

&lt;p&gt;Run the following command and find the cluster IP in the endpoint property.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;kubectl&lt;/span&gt; &lt;span class="err"&gt;describe&lt;/span&gt; &lt;span class="err"&gt;svc&lt;/span&gt; &lt;span class="err"&gt;kubernetes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;Name:&lt;/span&gt;              &lt;span class="err"&gt;kubernetes&lt;/span&gt;
  &lt;span class="err"&gt;Namespace:&lt;/span&gt;         &lt;span class="err"&gt;default&lt;/span&gt;
  &lt;span class="err"&gt;Labels:&lt;/span&gt;            &lt;span class="py"&gt;component&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="err"&gt;apiserver&lt;/span&gt;
                     &lt;span class="py"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="err"&gt;kubernetes&lt;/span&gt;
  &lt;span class="err"&gt;Annotations:&lt;/span&gt;       &lt;span class="err"&gt;&amp;lt;none&amp;gt;&lt;/span&gt;
  &lt;span class="err"&gt;Selector:&lt;/span&gt;          &lt;span class="err"&gt;&amp;lt;none&amp;gt;&lt;/span&gt;
  &lt;span class="err"&gt;Type:&lt;/span&gt;              &lt;span class="err"&gt;ClusterIP&lt;/span&gt;
  &lt;span class="err"&gt;IP:&lt;/span&gt;                &lt;span class="mf"&gt;10.152.183.1&lt;/span&gt;
  &lt;span class="err"&gt;Port:&lt;/span&gt;              &lt;span class="err"&gt;https&lt;/span&gt;  &lt;span class="mi"&gt;443&lt;/span&gt;&lt;span class="err"&gt;/TCP&lt;/span&gt;
  &lt;span class="err"&gt;TargetPort:&lt;/span&gt;        &lt;span class="mi"&gt;16443&lt;/span&gt;&lt;span class="err"&gt;/TCP&lt;/span&gt;
  &lt;span class="err"&gt;Endpoints:&lt;/span&gt;         &lt;span class="mf"&gt;192.168.64.4&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;16443&lt;/span&gt;
  &lt;span class="err"&gt;Session&lt;/span&gt; &lt;span class="err"&gt;Affinity:&lt;/span&gt;  &lt;span class="err"&gt;None&lt;/span&gt;
  &lt;span class="err"&gt;Events:&lt;/span&gt;            &lt;span class="err"&gt;&amp;lt;none&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Mine is &lt;code&gt;192.168.64.4&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 Deploy a Pod
&lt;/h3&gt;

&lt;p&gt;I make a definition file just for you, Time to make a simple cluster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;kubectl&lt;/span&gt; &lt;span class="err"&gt;create&lt;/span&gt; &lt;span class="err"&gt;-f&lt;/span&gt; &lt;span class="err"&gt;https://raw.githubusercontent.com/reybis/set-up-kubernetes-cluster/master/nginx-deployment.yml&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;em&gt;This will create a pod of nginx and one nodePort service at 30005.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Since you know the Cluster IP, you can see your nginx pod &lt;code&gt;http://cluster-ip:30005&lt;/code&gt; deployed on your new local cluster! 🎉 &lt;/p&gt;

&lt;p&gt;That's it, now you have a Kubernetes cluster in your machine without VMs.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>macos</category>
      <category>microservices</category>
    </item>
    <item>
      <title>Set up a Kubernetes cluster using Minikube on macOS</title>
      <dc:creator>Reybis Ceballos</dc:creator>
      <pubDate>Mon, 17 Aug 2020 17:56:40 +0000</pubDate>
      <link>https://dev.to/reybis/set-up-a-kubernetes-cluster-using-minikube-on-macos-1n38</link>
      <guid>https://dev.to/reybis/set-up-a-kubernetes-cluster-using-minikube-on-macos-1n38</guid>
      <description>&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; This post follows a simple approach, there are probably better ways to do this (please share them if you know any!), and your mileage most definitely will vary.&lt;/p&gt;




&lt;p&gt;This post is part of a series of posts on how to &lt;strong&gt;Set up a Kubernetes cluster on macOS&lt;/strong&gt;, in this case, using &lt;strong&gt;minikube&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Kubernetes is a complex container orchestration tool that can be overwhelming for beginners. Had you wondered how to get started on Kubernetes by yourself easily without the complexity of Turnkey Solutions (Oracle OKE, AWS EKS) and Managed Solutions (Google GKE), this post would give you the simplicity to deploy a Kubernetes cluster on macOS intended for dev/test purposes.&lt;/p&gt;

&lt;h1&gt;
  
  
  Table of Contents
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Minikube&lt;/li&gt;
&lt;li&gt;Prerequisites&lt;/li&gt;
&lt;li&gt;Installation&lt;/li&gt;
&lt;li&gt;Create the cluster&lt;/li&gt;
&lt;li&gt;Test Kubernetes&lt;/li&gt;
&lt;li&gt;See the Cluster IP&lt;/li&gt;
&lt;li&gt;Deploy a Pod&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  💠 Minikube
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Minikube&lt;/strong&gt; is a tool that runs a single-node Kubernetes cluster in a virtual machine on your computer, so basically, it wouldn't be for a production environment. Remember, this is for &lt;strong&gt;test/dev purposes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ☑️ Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before starting, you need these prechecks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Check if virtualization is supported on your system&lt;br&gt;
&lt;em&gt;In terminal run the following command, and verify that the output is non-empty:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="err"&gt;sysctl&lt;/span&gt; &lt;span class="err"&gt;-a&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="err"&gt;grep&lt;/span&gt; &lt;span class="err"&gt;-E&lt;/span&gt; &lt;span class="err"&gt;--color&lt;/span&gt; &lt;span class="err"&gt;'machdep.cpu.features|VMX'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;em&gt;If the output is not empty, we can proceed.&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An Hypervisor, in macOS you can use hyperkit or &lt;a href="https://www.virtualbox.org/"&gt;Virtualbox&lt;/a&gt;.&lt;br&gt;
&lt;em&gt;For this post's goal, we would stay with &lt;a href="https://www.virtualbox.org/"&gt;Virtualbox&lt;/a&gt; to maintain simplicity and hence is cross-platform. I'm a big fan of vagrant to make this kind of environment but it would be overwhelming for the tutorial, maybe for another day 😉.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At least 20G of disk space and 4G of memory is recommended.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A system that supports virtualization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An internet connection.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚙️ Installation
&lt;/h3&gt;

&lt;p&gt;Open terminal and run the following commands.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install Minikube with brew.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="err"&gt;brew&lt;/span&gt; &lt;span class="err"&gt;install&lt;/span&gt; &lt;span class="err"&gt;minikube&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Install Minikube without brew.&lt;/p&gt;

&lt;pre&gt;
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 \ &amp;amp;&amp;amp; chmod +x minikube
sudo mv minikube /usr/local/bin
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Confirm Installation of Minikube.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="err"&gt;minikube&lt;/span&gt; &lt;span class="err"&gt;status&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🧑‍🚀 Create the cluster
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;To deploy a &lt;strong&gt;Kubernetes cluster&lt;/strong&gt;, just start minikube with the driver parameter set to &lt;code&gt;virtualbox&lt;/code&gt;.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;minikube&lt;/span&gt; &lt;span class="err"&gt;start&lt;/span&gt; &lt;span class="py"&gt;--driver&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="err"&gt;virtualbox&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Enable the DNS service.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;minikube&lt;/span&gt; &lt;span class="err"&gt;addons&lt;/span&gt; &lt;span class="err"&gt;enable&lt;/span&gt; &lt;span class="err"&gt;kube-dns&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Test Kubernetes
&lt;/h3&gt;

&lt;p&gt;Let's test our command center&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;kubectl&lt;/span&gt; &lt;span class="err"&gt;get&lt;/span&gt; &lt;span class="err"&gt;nodes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;em&gt;You should see one node in status Ready&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🗺️ See the Cluster IP
&lt;/h3&gt;

&lt;p&gt;Run the following command and find the cluster IP in the endpoint property.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;kubectl&lt;/span&gt; &lt;span class="err"&gt;describe&lt;/span&gt; &lt;span class="err"&gt;svc&lt;/span&gt; &lt;span class="err"&gt;kubernetes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 Deploy a Pod
&lt;/h3&gt;

&lt;p&gt;I make a definition file just for you, Time to make a simple cluster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;kubectl&lt;/span&gt; &lt;span class="err"&gt;create&lt;/span&gt; &lt;span class="err"&gt;-f&lt;/span&gt; &lt;span class="err"&gt;https://raw.githubusercontent.com/reybis/tutorial-minikube/master/nginx-deployment.yml&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;em&gt;This will create a pod of nginx and one nodePort service at 30005.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Since you know the Cluster IP, you can see your nginx pod &lt;a href="http://cluster-ip:30005"&gt;http://cluster-ip:30005&lt;/a&gt; deployed on your new local cluster! 🎉&lt;/p&gt;

&lt;p&gt;That's it, now you have a Kubernetes cluster in your machine.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>macos</category>
      <category>microservices</category>
    </item>
    <item>
      <title>Connect to Oracle database using Instant Client macOS</title>
      <dc:creator>Reybis Ceballos</dc:creator>
      <pubDate>Mon, 17 Aug 2020 02:36:13 +0000</pubDate>
      <link>https://dev.to/reybis/connect-to-oracle-database-using-instant-client-macos-4hb1</link>
      <guid>https://dev.to/reybis/connect-to-oracle-database-using-instant-client-macos-4hb1</guid>
      <description>&lt;p&gt;This post is part of a series of posts on how to &lt;strong&gt;Connect to Oracle database on macOS&lt;/strong&gt;, in this case, using &lt;strong&gt;Instant Client&lt;/strong&gt; on macOS.&lt;/p&gt;

&lt;p&gt;We will install and use the Oracle Instant Client, which is one of the easiest and fastest ways to connect to an Oracle database, the Instant Client is practically mandatory for development environments like NodeJS, so let's get started.&lt;/p&gt;

&lt;h1&gt;
  
  
  Table of Contents
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Prerequisites&lt;/li&gt;
&lt;li&gt;Installation&lt;/li&gt;
&lt;li&gt;
Connect to Oracle

&lt;ul&gt;
&lt;li&gt;Using EZCONNECT&lt;/li&gt;
&lt;li&gt;Using TNSNAMES&lt;/li&gt;
&lt;li&gt;Using Oracle Wallet&lt;/li&gt;
&lt;li&gt;Oracle Autonomous Database&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ☑️ Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before starting, you must do the following on your Mac.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Temporarily disable macOS security (know how here)&lt;/li&gt;
&lt;li&gt;Download the Oracle Instant Client&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Download the basic and sqlplus files according to the version of your database from the following &lt;a href="https://www.oracle.com/database/technologies/instant-client/macos-intel-x86-downloads.html"&gt;link&lt;/a&gt;.Example, if you want to connect to an Oracle 19c database, you will need to install:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;instantclient-basic-macos.x64-19.3.0.0.0dbru.zip&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;instantclient-sqlplus-macos.x64-19.3.0.0.0dbru.zip&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Important:&lt;/strong&gt;&lt;/em&gt; &lt;em&gt;Oracle Call Interface 19.3 and 18.1 can connect to Oracle database 11.2 or later. If you want to connect to a lower database, you must use version 12.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚙️ Installation
&lt;/h3&gt;

&lt;p&gt;With the requirements covered, we can start the installation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open terminal.&lt;/li&gt;
&lt;li&gt;Create the Oracle directory.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;sudo&lt;/span&gt; &lt;span class="err"&gt;mkdir&lt;/span&gt; &lt;span class="err"&gt;-p&lt;/span&gt; &lt;span class="err"&gt;/opt/oracle&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Move the downloaded files to the Oracle folder and unzip the files.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;sudo&lt;/span&gt; &lt;span class="err"&gt;mv&lt;/span&gt; &lt;span class="err"&gt;instantclient-basic-macos.x&lt;/span&gt;&lt;span class="mi"&gt;64-19&lt;/span&gt;&lt;span class="mf"&gt;.3.0.0.0&lt;/span&gt;&lt;span class="err"&gt;dbru.zip&lt;/span&gt; &lt;span class="err"&gt;/opt/oracle/&lt;/span&gt;
  &lt;span class="err"&gt;sudo&lt;/span&gt; &lt;span class="err"&gt;mv&lt;/span&gt; &lt;span class="err"&gt;instantclient-sqlplus-macos.x&lt;/span&gt;&lt;span class="mi"&gt;64-19&lt;/span&gt;&lt;span class="mf"&gt;.3.0.0.0&lt;/span&gt;&lt;span class="err"&gt;dbru.zip&lt;/span&gt; &lt;span class="err"&gt;/opt/oracle/&lt;/span&gt;
  &lt;span class="err"&gt;cd&lt;/span&gt; &lt;span class="err"&gt;/opt/oracle&lt;/span&gt;
  &lt;span class="err"&gt;sudo&lt;/span&gt; &lt;span class="err"&gt;unzip&lt;/span&gt; &lt;span class="err"&gt;instantclient-basic-macos.x&lt;/span&gt;&lt;span class="mi"&gt;64-19&lt;/span&gt;&lt;span class="mf"&gt;.3.0.0.0&lt;/span&gt;&lt;span class="err"&gt;dbru.zip&lt;/span&gt;
  &lt;span class="err"&gt;sudo&lt;/span&gt; &lt;span class="err"&gt;unzip&lt;/span&gt; &lt;span class="err"&gt;instantclient-sqlplus-macos.x&lt;/span&gt;&lt;span class="mi"&gt;64-19&lt;/span&gt;&lt;span class="mf"&gt;.3.0.0.0&lt;/span&gt;&lt;span class="err"&gt;dbru.zip&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Create the lib directory on your home and the necessary symbolic links to allow applications to find the Instant Client libraries.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;mkdir&lt;/span&gt; &lt;span class="err"&gt;~/lib&lt;/span&gt;
  &lt;span class="err"&gt;ln&lt;/span&gt; &lt;span class="err"&gt;-s&lt;/span&gt; &lt;span class="err"&gt;~/instantclient_&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="err"&gt;_&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="err"&gt;/libclntsh.dylib&lt;/span&gt; &lt;span class="err"&gt;~/lib/&lt;/span&gt;
  &lt;span class="err"&gt;ln&lt;/span&gt; &lt;span class="err"&gt;-s&lt;/span&gt; &lt;span class="err"&gt;~/instantclient_&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="err"&gt;_&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="err"&gt;/libclntsh.dylib&lt;/span&gt; &lt;span class="err"&gt;/usr/local/lib/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Create the environment variables in your profile file.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;echo&lt;/span&gt; &lt;span class="err"&gt;"export&lt;/span&gt; &lt;span class="py"&gt;PATH&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="err"&gt;/opt/oracle/instantclient_&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="err"&gt;_&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="err"&gt;:$PATH&lt;/span&gt;&lt;span class="s"&gt;" &amp;gt; ~/.profile&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;  &lt;span class="err"&gt;echo&lt;/span&gt; &lt;span class="s"&gt;"export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_3"&lt;/span&gt; &lt;span class="err"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;~/.profile&lt;/span&gt;
  &lt;span class="err"&gt;source&lt;/span&gt; &lt;span class="err"&gt;~/.profile&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Connect to Oracle Database
&lt;/h3&gt;

&lt;p&gt;After finishing the installation, we can test the connection to the database using the command &lt;code&gt;sqlplus&lt;/code&gt; and one of the methods below. &lt;/p&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Using EZCONNECT
&lt;/h4&gt;

&lt;p&gt;The easiest way to connect to a database is by using EZCONNECT syntaxis.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In terminal run the following command.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;sqlplus&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Once that connect using the EZCONNECT syntax.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;sqlplus&lt;/span&gt; &lt;span class="err"&gt;user/password@//myhost.reybis.com:&lt;/span&gt;&lt;span class="mi"&gt;1521&lt;/span&gt;&lt;span class="err"&gt;/myservicename&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Using TNSNAMES
&lt;/h4&gt;

&lt;p&gt;If your need to use TNSNAMES see the next steps.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First, in terminal let's create the TNSNAMES file.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;cd&lt;/span&gt; &lt;span class="err"&gt;/opt/oracle/instantclient_&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="err"&gt;_&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="err"&gt;/network/admin&lt;/span&gt;
  &lt;span class="err"&gt;sudo&lt;/span&gt; &lt;span class="err"&gt;vi&lt;/span&gt; &lt;span class="err"&gt;tnsnames.ora&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Use the following template to create your TNSNAMES file.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="py"&gt;myservicename&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt; 
  &lt;span class="err"&gt;(DESCRIPTION&lt;/span&gt; &lt;span class="err"&gt;=&lt;/span&gt; 
    &lt;span class="err"&gt;(ADDRESS&lt;/span&gt; &lt;span class="err"&gt;=&lt;/span&gt; &lt;span class="err"&gt;(PROTOCOL&lt;/span&gt; &lt;span class="err"&gt;=&lt;/span&gt; &lt;span class="err"&gt;TCP)(HOST&lt;/span&gt; &lt;span class="err"&gt;=&lt;/span&gt; &lt;span class="err"&gt;MYHOST.REYBIS.COM)(PORT&lt;/span&gt; &lt;span class="err"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1521&lt;/span&gt;&lt;span class="err"&gt;))&lt;/span&gt;
    &lt;span class="py"&gt;(CONNECT_DATA&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
      &lt;span class="py"&gt;(SERVER&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="err"&gt;DEDICATED)&lt;/span&gt;
      &lt;span class="py"&gt;(SERVICE_NAME&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="err"&gt;MYSERVICENAME)&lt;/span&gt;
    &lt;span class="err"&gt;)&lt;/span&gt;
  &lt;span class="err"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Then you can connect using the TNSNAMES syntax.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;sqlplus&lt;/span&gt; &lt;span class="err"&gt;user/password@myservicename&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Using Oracle Wallet
&lt;/h4&gt;

&lt;p&gt;Using Oracle Wallet is the safest way to access an Oracle database, if you have the wallet of your database, you just have to do the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;cd&lt;/span&gt; &lt;span class="err"&gt;/opt/oracle/instantclient_&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="err"&gt;_&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="err"&gt;/network/admin&lt;/span&gt;
  &lt;span class="err"&gt;unzip&lt;/span&gt; &lt;span class="err"&gt;~/Downloads/wallet_db.zip&lt;/span&gt;
  &lt;span class="err"&gt;sqlplus&lt;/span&gt; &lt;span class="err"&gt;user@mywalletservicename&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Oracle Autonomous Database
&lt;/h4&gt;

&lt;p&gt;Oracle Cloud Autonomous databases, by default, use a secure connection with Oracle Wallet to guarantee encryption in data-transit. Oracle only allows us to connect to them using an encrypted connection to Oracle Wallet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="err"&gt;cd&lt;/span&gt; &lt;span class="err"&gt;/opt/oracle/instantclient_&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="err"&gt;_&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="err"&gt;/network/admin&lt;/span&gt;
  &lt;span class="err"&gt;unzip&lt;/span&gt; &lt;span class="err"&gt;~/Downloads/wallet_atpdb.zip&lt;/span&gt;
  &lt;span class="err"&gt;sqlplus&lt;/span&gt; &lt;span class="err"&gt;user/password@atpservice_high&lt;/span&gt;
  &lt;span class="err"&gt;sqlplus&lt;/span&gt; &lt;span class="err"&gt;user/password@atpservice_medium&lt;/span&gt;
  &lt;span class="err"&gt;sqlplus&lt;/span&gt; &lt;span class="err"&gt;user/password@atpservice_low&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;That's it! You are all set to connect to an Oracle database from macOS 😃&lt;/p&gt;

&lt;p&gt;Now I hope you enough knowledge so that you can please any requirement related to Oracle database. &lt;/p&gt;

</description>
      <category>oracle</category>
      <category>macos</category>
      <category>devops</category>
      <category>instantclient</category>
    </item>
    <item>
      <title>Disable GateKeeper macOS</title>
      <dc:creator>Reybis Ceballos</dc:creator>
      <pubDate>Mon, 17 Aug 2020 02:35:43 +0000</pubDate>
      <link>https://dev.to/reybis/disable-gatekeeper-macos-1i0p</link>
      <guid>https://dev.to/reybis/disable-gatekeeper-macos-1i0p</guid>
      <description>&lt;p&gt;To prevent malware from accessing your Mac, Apple enables &lt;strong&gt;GateKeeper&lt;/strong&gt; by default, only allowing you to install and run applications from the App Store or identified Developers (Adobe, Microsoft, etc.).&lt;/p&gt;

&lt;p&gt;For example, with &lt;strong&gt;GateKeeper&lt;/strong&gt; enabled when you run &lt;code&gt;sqlplus&lt;/code&gt; the first time, it will show you the following message.&lt;/p&gt;

&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%2Fw5tplx22nzbokpilrm0x.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%2Fw5tplx22nzbokpilrm0x.png" alt="Alt Text" width="532" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To enable it you must go to the System Preferences and click on &lt;strong&gt;Always Allow&lt;/strong&gt;.&lt;/p&gt;

&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%2Fwajxnl7icpbu2dzf8eqg.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%2Fwajxnl7icpbu2dzf8eqg.png" alt="Alt Text" width="780" height="685"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As developers, this can become a problem when using terminal applications, then to be able to install and run all kinds of applications, we need to disable &lt;strong&gt;GateKeeper&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Important:&lt;/strong&gt;&lt;/em&gt; &lt;em&gt;Only disables &lt;strong&gt;GateKeeper&lt;/strong&gt; temporarily during a project or work session, not permanently.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's begin:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In terminal run the following command.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="err"&gt;sudo&lt;/span&gt; &lt;span class="err"&gt;spctl&lt;/span&gt; &lt;span class="err"&gt;--master-disable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To verify that &lt;strong&gt;GateKeeper&lt;/strong&gt; is disabled, go to System Preferences, and you should see the following.&lt;br&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%2F78ocwz78wsqggoroxf0e.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%2F78ocwz78wsqggoroxf0e.png" alt="Alt Text" width="780" height="685"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All options are displayed &lt;em&gt;"App Store"&lt;/em&gt;, &lt;em&gt;"App Store and identified developers"&lt;/em&gt; and &lt;em&gt;"Any Site"&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the &lt;strong&gt;Any Site&lt;/strong&gt; option.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it, now you can install and run any application. 😃&lt;/p&gt;

&lt;p&gt;If you want to enable &lt;strong&gt;GateKeeper&lt;/strong&gt; back, I will show you how to do it in this link.&lt;/p&gt;

</description>
      <category>macos</category>
      <category>tips</category>
      <category>gatekeeper</category>
    </item>
    <item>
      <title>Enable GateKeeper  macOS</title>
      <dc:creator>Reybis Ceballos</dc:creator>
      <pubDate>Mon, 17 Aug 2020 02:35:22 +0000</pubDate>
      <link>https://dev.to/reybis/enable-gatekeeper-macos-1klh</link>
      <guid>https://dev.to/reybis/enable-gatekeeper-macos-1klh</guid>
      <description>&lt;p&gt;Have you disabled &lt;strong&gt;Gatekeeper&lt;/strong&gt; on macOS? And want to reset security to system default settings, this post is for you.&lt;/p&gt;

&lt;p&gt;Ok, so let's get started.&lt;/p&gt;

&lt;p&gt;In this post, we will enable &lt;strong&gt;Gatekeeper&lt;/strong&gt; back again only to allow applications from the App Store or Developers identified by Apple.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In terminal run the following command.
```toml
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;sudo spctl --master-enable&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
2. To verify that **Gatekeeper** is enabled, go to System Preferences, and you should see the following.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ym35w059gcw2hwaztn9o.png)
   * Only **App Store** and **App Store and identified developers** are displayed.
   * The option **App Store** and the **Identified developers** is selected.

That's it, now **Gatekeeper** is back 😃

If you want to disable **Gatekeeper** again, I show you how to do it **here**.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>macos</category>
      <category>tips</category>
      <category>gatekeeper</category>
    </item>
  </channel>
</rss>
