Archive

Archive for the ‘Uncategorized’ Category

Docker research

January 12, 2017 Leave a comment

Docker research dimensions :

  • Organize and manage cluster
    • OpenShift
    • Symphony Swarm
    • Azure Swarm
    • Docker Datacenter Swarm
  • Build application image
    • Jenkins CI
    • TFS CI
    • OpenShift CI
  • Deploy application bundle
    • Java UI and – Java Service
    • Node Service – Kafka Producer
    • .NET Core – SQL on Linux
  • Build DevOps imsage (CI)
    • Linux , JDK 1.8 , Node, npm, grunt, JUnit
    • Linux, NET Core, Node, npm , NUnit
  • Deploy DevOps bundle (CI)
    • Jenkins  CI –  Linux DevOps image – java application
    • Jenkins  CI –  Linux DevOps image – node application
    • Jenkins  CI –  Linux DevOps image – .NET Core aplication
    • TFS CI –  Linux DevOps image – java application
    • TFS CI –  Linux DevOps image – node application
    • TFS CI –  Linux DevOps image – .NET Core aplication
    • OpenShift  CI –  Linux DevOps image – .NET Core aplication
  • Develop Docker DevOps pipeline
    • Jenkins
    • TFS
  • Evaluate Docker development environment
    • Windows 10 – Nano docker container
    • Windows 10 – Linux docker container
  • Docker cluster monitoring
    • OpenShift
    • UCP
    • Azure MSOMS

 

Docker use cases

User Story
Helpful Links
Base images
Comments
As an  ASG hosting engineer I would like to automate Swarm cluster creation so I would focus on the application deliverable Using Docker Engine 1.12
As an ASG Technical lead I would like to dockernize Java microservice implementation and publish it to the Artifactory docker repository
As an ASG Technical lead I would like to dockernize .NET Core microservice implementation and publish it to the Artifactory docker repository
As an ASG Technical lead I would like to dockernize Node microservice implementation and publish it to the Artifactory docker repository
As an ASG DevOps Infrastructure engineer I would like to dynamically invoke docker container specified in the docker-compose.ci.build.yml using Jenkins workflow so that I could resolve all dependencies required by the application build process and use Docker cluster elasticity in order to make my DevOps practices more agile and resilient Focus on designing and implementing Jenkins Docker workflow
As anASG DevOps Infrastructure engineer I would like to dynamically invoke docker container specified in the docker-compose.ci.build.yml using TFS workflow so that I could resolve all dependencies required by the application build process and use Docker cluster elasticity in order to make my DevOps practices more agile and resilient Focus on designing and implementing TFS Docker workflow

 

Images information

Base Image
OS
Dockerfile Location
command
Comments
Microsoft official images https://hub.docker.com/u/microsoft/ Library of Microsoft images
microsoft/aspnetcore-build Linux https://hub.docker.com/r/microsoft/aspnetcore-build/ docker pull microsoft/aspnetcore-build Official images for building ASP.NET Core applications.
microsoft/azure-cli Linux https://hub.docker.com/r/microsoft/azure-cli/
$ docker run -it microsoft/azure-cli
Docker image for Microsoft Azure Command Line Interface
microsoft/vsts-agent Linux https://hub.docker.com/r/microsoft/vsts-agent/ docker pull microsoft/vsts-agent Official images for the Visual Studio Team Services (VSTS) agent.
microsoft/mssql-server-linux Linux https://hub.docker.com/r/microsoft/mssql-server-linux/ docker pull microsoft/mssql-server-linux Official images for Microsoft SQL Server on Linux for Docker Engine.
CloudBees Official images https://hub.docker.com/u/cloudbees/ Library of CloudBees Images
IBM images https://hub.docker.com/u/ibmcom/ Library of IBM Images
Advertisements
Categories: Docker, Uncategorized

Kubernetes terminology and concepts

January 11, 2017 Leave a comment

Kubernetes  aims to decouple applications from machines by leveraging the foundations of distributed computing and application containers. At a high level Kubernetes sits on top of a cluster of machines and provides an abstraction of a single machine.

CLUSTERS

Clusters are the set of compute, storage, and network resources where pods are deployed, managed, and scaled. Clusters are made of nodes connected via a “flat” network, in which each node and pod can communicate with each other. A typical Kubernetes cluster size ranges from 1 – 200 nodes, and it’s common to have more than one Kubernetes cluster in a given data center based on node count and service SLAs.

PODS

Pods are a colocated group of application containers that share volumes and a networking stack. Pods are the smallest units that can be deployed within a Kubernetes cluster. They are used for run once jobs, can be deployed individually, but long running applications, such as web services, should be deployed and managed by a replication controller.

REPLICATION CONTROLLERS

Replication Controllers ensure a specific number of pods, based on a template, are running at any given time. Replication Controllers manage pods based on labels and status updates.

SERVICES

Services deliver cluster wide service discovery and basic load balancing by providing a persistent name, address, or port for pods with a common set of labels.

LABELS

Labels are used to organize and select groups of objects, such as pods, based on key/value pairs.

The Kubernetes Control Plane

The control plane is made up of a collection of components that work together to provide a unified view of the cluster.

ETCD

etcd is a distributed, consistent key-value store for shared configuration and service discovery, with a focus on being: simple, secure, fast, and reliable. etcd uses the Raft consensus algorithm to achieve fault-tolerance and high-availability. etcd provides the ability to “watch” for changes, which allows for fast coordination between Kubernetes components. All persistent cluster state is stored in etcd.

KUBERNETES API SERVER

The apiserver is responsible for serving the Kubernetes API and proxying cluster components such as the Kubernetes web UI. The apiserver exposes a REST interface that processes operations such as creating pods and services, and updating the corresponding objects in etcd. The apiserver is the only Kubernetes component that talks directly to etcd.

SCHEDULER

The scheduler watches the apiserver for unscheduled pods and schedules them onto healthy nodes based on resource requirements.

CONTROLLER MANAGER

There are other cluster-level functions such as managing service end-points, which is handled by the endpoints controller, and node lifecycle management which is handled by the node controller. When it comes to pods, replication controllers provide the ability to scale pods across a fleet of machines, and ensure the desired number of pods are always running.

Each of these controllers currently live in a single process called the Controller Manager.

The Kubernetes Node

The Kubernetes node runs all the components necessary for running application containers and load balancing service end-points. Nodes are also responsible for reporting resource utilization and status information to the API server.

DOCKER

Docker, the container runtime engine, runs on every node and handles downloading and running containers. Docker is controlled locally via its API by the Kubelet.

KUBELET

Each node runs the Kubelet, which is responsible for node registration, and management of pods. The Kubelet watches the Kubernetes API server for pods to create as scheduled by the Scheduler, and pods to delete based on cluster events. The Kubelet also handles reporting resource utilization, and health status information for a specific node and the pods it’s running.

PROXY

Each node also runs a simple network proxy with support for TCP and UDP stream forwarding across a set of pods as defined in the Kubernetes API.

Categories: Uncategorized Tags:

File based CI trigger

August 15, 2016 Leave a comment

GitLab has introduced file based ci trigger. The ci is using yaml notation in order to describe build pipeline  and  system recognized .gitlab-ci.yml file.    I think this is very power concept for following reasons : It bring text-based dsl ( yaml in this case) and  the file nature of the build definition allows  to version and branch it along with code. Immediate benefit is that by the branching code base , the branch comes with the cloned build definition from the parent . Microsoft could improve on by adding more notation other than yaml ,  adding run-time incline information like $agent and $Build and also bring interactive intelligence using collaboration (bot) platform.

Categories: Uncategorized

Announcing IdentityServer for ASP.NET 5 and .NET Core — leastprivilege.com

April 10, 2016 Leave a comment

Over the last couple of years, we’ve been working with the ASP.NET team on the authentication and authorization story for Web API, Katana and ASP.NET 5. This included the design around claims-based identity, authorization and token-based authentication. In the Katana timeframe we also reviewed the OAuth 2.0 authorization server middleware (and the templates around it) […]

via Announcing IdentityServer for ASP.NET 5 and .NET Core — leastprivilege.com

Categories: Uncategorized