I am trying to creating a microservice using spring boot and trying to deploy using AWS ECS cloud service. I Have doubts in deployment using ECS. In ECS there is a facility of EC2 launch type.
Here my doubt is that, when I am using ECS EC2 launch type, can I choose my own Ubuntu machine instances? I need to know whether the ECS provide provision to launch with my own Ubuntu machine?
Yes, you can use your own Ubuntu AMI, but it requires a little bit of work. Here are the requirements:
A modern Linux distribution running at least version 3.10 of the Linux kernel.
The Amazon ECS container agent (preferably the latest version). For more information, see Amazon ECS Container Agent.
A Docker daemon running at least version 1.5.0, and any Docker runtime dependencies. For more information, see Check runtime dependencies in the Docker documentation.
So, apart from installing Docker, you need o install and configure the ECS Agent. You will find the instructions here. See section 'To install the Amazon ECS container agent on a non-Amazon Linux EC2 instance'
Once you have your AMI built, you just create your cluster and then launch the instances into it.
Related
I want to deploy a multicontainer Docker app using AWS Elastic Beanstalk. I see both Docker running on 64bit Amazon Linux 2 and ECS running on 64bit Amazon Linux 2 platform branches support it. By using any of them, each one of the EC2 instances will have the same containers running inside.
So what's the difference between Docker and ECS platforms?
The Docker option simply runs docker run commands to start a container (or docker-compose up to start multiple containers) on each EC2 instance.
The ECS option uses the much more advanced ECS service to orchestrate and monitor the containers on each EC2 instance, and opens up the possibility of using other ECS features, such as service discovery.
I have seen some documents in the AWS stating we can use ubuntu instead of default amazon instances. But my question, let's say i created the ubuntu machine and installed the ecs agents with pointing the ECS cluster and in the cluster the ubuntu machine appears - a happy flow. But tomorrow if i need to do a horizontal scaling, how it will do ? do we need to do manually ?
I am trying to design and making architecture of cloud application deployment resources in AWS cloud using EC2, S3, and RDS. Here I have a little bit of confusion about AWS infrastructure, which I am describing here.
I already have a AWS EC2 machine - Ubuntu 16.04 LTS. Is possible to create another VMs within my Ubuntu? I mean, can I use Linux or CentOS within my EC2 Ubuntu machine?
I am a beginner in cloud and AWS world, still exploring about AWS infrastructure.
When you instantiate your EC2 instance you are required to select an AMI. the AMI is an amazon machine image. This essentially describes what OS (CentOS, Ubuntu, RedHat, etc) will be installed on your EC2 instance. Most likely you selected the Amazon Linux AMI which installs amazon's own flavor of CentOS. Once the instance is up, you will not be able to install a different OS on it. You will have to terminate your existing instance and spin up a new EC2 instance with the AMI that you want.
That being said, you can also use a tool such as Docker https://www.docker.com/. This allows you to spin up docker containers. Each docker container acts like a VM and will allow you to spin up multiple different docker containers with whatever OS you want within your single EC2 instance.
I am trying to deploy my Spring Boot microservices on using Elastic Beanstalk from AWS. It provides preconfigured environment for deployment. I have one Ubuntu machine with EBS with 80 GB(free tier option). I have some doubts. I am adding as points
When I am deploying using Elastic Beanstalk, where it actually deploying? In my EBS storage ? Or any other space which belongs to AWS ?
Is it possible to deploy anything without creating an EC2 instance? If possible, then where will it actually physical space occupy?
When I deploy my microservices, I choose Tomcat option. So under the box there is a sentence that Java Tomcat server environment is in Amazon Linux or something like that. I have Ubuntu machine; if Beanstalk using my EC2 instance, then why it showing message related to Amazon Linux 2017? Since my machine is Ubuntu?
And I found docs saying BeanStalk is not charging payments. Payment is going according to the AWS resources that we choose. So how I can relate this point with my 3rd point?
I'll start with #4 Elastic Beanstalk is a service you are NOT charged for, just the resources you consume, so EC2, EBS, ELB's.
When you deploy an Elastic Beanstalk application you select what version of Tomcat you want and with it the version of Linux
64bit Amazon Linux 2017.09 v2.7.2 running Tomcat 8 Java 8
64bit Amazon Linux 2017.09 v2.7.2 running Tomcat 7 Java 7
64bit Amazon Linux 2017.09 v2.7.2 running Tomcat 7 Java 6
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html#concepts.platforms.java
#1 - It is deploying to an environment on EC2, which is why there is an AMI in the platform you provision.
When you launch an environment, you choose a platform configuration.
We update platform configurations periodically to provide performance
improvements and new features. You can update your environment to the
latest platform configuration at any time.
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.ec2.html
#2 You can deploy your application on Docker, but that still needs EC2 hosts to run, you can manage them or you can use Multi Container platform, which provisions them to ECS .
https://docs.aws.amazon.com/elasticbeanstalk/latest
/dg/create_deploy_docker.html
#3 Elastic Beanstalk likes to keep resource under it's control, When you provision an Environment, it will provision the resources needed, no need to provision a machine outside of Elastic beanstalk.
You can create a custom platform if you want too based on Ubuntu.
Note
Modify the resources in your environment only by using Elastic Beanstalk. If you modify resources using another service's console,
CLI commands, or SDKs, Elastic Beanstalk won't be able to accurately
monitor the state of those resources, and you won't be able to save
the configuration or reliably recreate the environment. Out-of
band-changes can also cause issues when terminating an environment.
Some other points about Elastic Beanstalk from a great answer on Stack Overlfow
I've read that AWS does not support Kubernetes and builds their own Docker orchestration engine EC2 Container Service. However, on Kubernetes getting-started -page there is a guide on how to run Kubernetes on AWS:
https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/getting-started-guides/aws.md
Which is right?
You can install Kubernetes on a normal Amazon EC2 server.
The new container service is a separate offering by Amazon, called ECS.
EDIT: AWS released in 2018 a new container service for Kubernetes called EKS: https://aws.amazon.com/eks/
Amazon Elastic Container Service for Kubernetes (Amazon EKS) makes it easy to deploy, manage, and scale containerized applications using Kubernetes on AWS. Amazon EKS runs the Kubernetes management infrastructure for you across multiple AWS availability zones to eliminate a single point of failure.
Kubernetes provides scripts to simple setup a cluster on a set of EC2 machines. The setup does pretty much everything needed to get started quickly.
Here is the link: https://github.com/GoogleCloudPlatform/kubernetes/blob/release-1.0/docs/getting-started-guides/aws.md
Yes its possible to setup Kubernetes on AWS See:http://kubernetes.io/v1.0/docs/getting-started-guides/aws.html
You can also manually setup Kubernetes on AWS by launching a EC2 instance
Foe setting in Redhat ami https://access.redhat.com/articles/1353773
(Note: Kubernetes needs flannel network to be setup for managing networking between docker containers running on different hosts(minions)
Amazons Container Service is unrelated to Kubernetes.
There are 3 main options for installing Kubernetes on AWS:
CoreOS have a cli for installing and managing kubernetes on aws: https://coreos.com/kubernetes/docs/latest/kubernetes-on-aws.html
Kubernetes have some scripts for setting up a cluster on AWS: http://kubernetes.io/docs/getting-started-guides/aws/
Manual installation on EC2. Lots of options here: http://kubernetes.io/docs/getting-started-guides/#cloud
As an aside minikube is now a thing which is nice for running locally to try stuff out:
http://kubernetes.io/docs/getting-started-guides/minikube/
AWS recently launched EKS, which provides a managed k8s master nodes. This should be
what you are looking for.
Yes. You can use kubeadm to install kubernetes on EC2 instances.
There are other tools also available.
KOPS
EKS
Kubeadm