All Projects → nodesource → nsolid-kubernetes

nodesource / nsolid-kubernetes

Licence: MIT license
Using N|Solid, the Enterprise Node Platform from NodeSource with Kubernetes

Programming Languages

javascript
184084 projects - #8 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to nsolid-kubernetes

dockerfiles
🐳 Dockerfiles for Nette Framework. Nette in Docker. (@nette)
Stars: ✭ 15 (-81.71%)
Mutual labels:  orchestration
FactoryOrchestrator
A cross-platform system service which provides a simple way to run and manage factory line validation, developer inner-loop, diagnostics, and fault analysis workflows.
Stars: ✭ 36 (-56.1%)
Mutual labels:  orchestration
bascomtask
Lightweight parallel Java tasks
Stars: ✭ 49 (-40.24%)
Mutual labels:  orchestration
cb-tumblebug
Cloud-Barista Multi-Cloud Infra Management Framework
Stars: ✭ 33 (-59.76%)
Mutual labels:  orchestration
cohesity-powershell-module
This repository provides a PowerShell Module for Cohesity DataPlatform. https://cohesity.github.io/cohesity-powershell-module
Stars: ✭ 39 (-52.44%)
Mutual labels:  orchestration
esdc-ce
Danube Cloud :: Community Edition
Stars: ✭ 101 (+23.17%)
Mutual labels:  orchestration
Ansible Role Kubernetes
Ansible Role - Kubernetes
Stars: ✭ 247 (+201.22%)
Mutual labels:  orchestration
manager
The API endpoint that manages nebula orchestrator clusters
Stars: ✭ 28 (-65.85%)
Mutual labels:  orchestration
generic-vnfm
Repository containing the source code of the generic VNFM
Stars: ✭ 17 (-79.27%)
Mutual labels:  orchestration
firewall-orchestrator
Network Security data repository for automation, reporting and compliance of firewall rules
Stars: ✭ 14 (-82.93%)
Mutual labels:  orchestration
paco
Paco: Prescribed automation for cloud orchestration
Stars: ✭ 32 (-60.98%)
Mutual labels:  orchestration
DurableTaskMicroservices
Microservice Framework based on Durable Task Framework
Stars: ✭ 15 (-81.71%)
Mutual labels:  orchestration
orkestra
The elegance of Airflow + the power of AWS
Stars: ✭ 42 (-48.78%)
Mutual labels:  orchestration
blueprint-examples
This is where you can find officially supported Cloudify blueprints that work with the latest versions of Cloudify. Please make sure to use the blueprints from this repo when you are evaluating Cloudify.
Stars: ✭ 25 (-69.51%)
Mutual labels:  orchestration
PainlessDocker
Painless Docker book git repository.
Stars: ✭ 17 (-79.27%)
Mutual labels:  orchestration
Xstate
State machines and statecharts for the modern web.
Stars: ✭ 18,300 (+22217.07%)
Mutual labels:  orchestration
fuseml
FuseML aims to provide an MLOps framework as the medium dynamically integrating together the AI/ML tools of your choice. It's an extensible tool built through collaboration, where Data Engineers and DevOps Engineers can come together and contribute with reusable integration code.
Stars: ✭ 73 (-10.98%)
Mutual labels:  orchestration
kubecloud
Kubecloud is a multi-cloud container cloud management platform
Stars: ✭ 48 (-41.46%)
Mutual labels:  orchestration
salt-sproxy
Salt plugin to automate the management and configuration of (network) devices at scale, without running (Proxy) Minions.
Stars: ✭ 105 (+28.05%)
Mutual labels:  orchestration
akk-stack
Containerized EverQuest Emulator Server Environment
Stars: ✭ 36 (-56.1%)
Mutual labels:  orchestration

N|Solid, Docker, and Kubernetes

Overview

This repository is for deploying N|Solid with Kubernetes. It assumes that Kubernetes is already setup for your environment.

N|Solid, Docker, and Kubernetes

Table of Contents

Installing kubernetes

Upgrading

local

Existing nsolid-kubernetes installs can be upgraded running the following command:

kubectl apply -f conf/nsolid.quickstart.yml

Cloud

If deployed to a cloud (AWS, Azure, GCP, Bluemix) please make sure to make the necessary adjustments to conf/nsolid.cloud.yml

kubectl apply -f conf/nsolid.cloud.yml

Quickstart

./install

Notes:

  1. Make sure your kubectl is pointing to your active cluster.
  2. If your cluster is a Bluemix Lite cluster, make this adjustment to conf/nsolid.services.yml before running ./install.

This command will install the N|Solid Console and a secure HTTPS proxy to the nsolid namespace.

It can take a little while for Kubernetes to download the N|Solid Docker images. You can verify that they are active by running:

kubectl --namespace=nsolid get pods

When all three pods (console and nginx-secure-proxy) have a status of 'Running', you may continue to access the N|Solid Console.

Access N|Solid Dashboard

Secure credentials

  • Default username: nsolid
  • Default password: demo

With minikube

printf "\nhttps://$(minikube ip):$(kubectl get svc nginx-secure-proxy --namespace=nsolid --output='jsonpath={.spec.ports[1].nodePort}')\n"

or

Cloud Deployment:

kubectl get svc nginx-secure-proxy --namespace=nsolid

Open EXTERNAL-IP. If using Bluemix Lite cluster, get EXTERNAL-IP this way.

NOTE: You will need to ignore the security warning on the self signed certificate to proceed.

Welcome Screen

Uninstall N|Solid from Kubernetes cluster

kubectl delete ns nsolid --cascade

Deploy Sample App with N|Solid

Quick Start

cd sample-app
docker build -t sample-app:v1 .
kubectl create -f sample-app.service.yml
kubectl create -f sample-app.deployment.yml

NOTE: the container image in sample-app.deployment.yml must be set to match your docker image name. E.g. if you are using minikube and ran eval $(minikube docker-env), set the image to:

    spec:
      containers:
        - name: sample-app
          image: sample-app:v1

If you are working in a cloud environment, you will need to push the sample-app to a public Docker registry like Docker Hub, Quay.io, the Azure Container Registry, or the IBM Bluemix Container Registry, and update the sample-app Deployment file.

Production Install

NOTE: Assumes kubectl is configured and pointed at your Kubernetes cluster properly.

Create the namespace nsolid to help isolate and manage the N|Solid components.

kubectl create -f conf/nsolid.namespace.yml

Create nginx SSL certificates

openssl req -x509 -nodes -newkey rsa:2048 -keyout conf/certs/nsolid-nginx.key -out conf/certs/nsolid-nginx.crt

Create Basic Auth file

rm ./conf/nginx/htpasswd
htpasswd -cb ./conf/nginx/htpasswd {username} {password}

Create a secret for certs to mount in nginx

kubectl create secret generic nginx-tls --from-file=conf/certs --namespace=nsolid

Create configmap for nginx settings

kubectl create configmap nginx-config --from-file=conf/nginx --namespace=nsolid

Define the services

kubectl create -f conf/nsolid.services.yml

Note: If your cluster is a Bluemix Lite cluster, make this adjustment to conf/nsolid.services.yml before running kubectl create.

Create persistent disks

N|Solid components require persistent storage. Kubernetes does not (yet!) automatically handle provisioning of disks consistently across all cloud providers. As such, you will need to manually create the persistent volumes.

On Google Cloud

Make sure the zone matches the zone you brought up your cluster in!

gcloud compute disks create --size 10GB nsolid-console
On AWS

We need to create our disks and then update the volumeIds in conf/nsolid.persistent.aws.yml.

Make sure the zone matches the zone you brought up your cluster in!

aws ec2 create-volume --availability-zone eu-west-1a --size 10 --volume-type gp2
On Azure

There's no need to explicitly create a persistent disk, since the Azure Container Service provides a default StorageClass, which will dynamically create them as needed (e.g. when a Pod includes a PersistentVolumeClaim).

On Bluemix

There's no need to explicitly create a persistent disk, since the Bluemix Container Service provides a default StorageClass, which will dynamically create them as needed (e.g. when a Pod includes a PersistentVolumeClaim).

Configure Kubernetes to utilize the newly created persistent volumes

GCE
kubectl create -f conf/nsolid.persistent.gce.yml
AWS
kubectl create -f conf/nsolid.persistent.aws.yml
Azure

There's no need to explicitly create a PersistentVolume object, since they will be dynamically provisioned by the default StorageClass.

Bluemix

There's no need to explicitly create a PersistentVolume object, since they will be dynamically provisioned by the default StorageClass.

Deploy N|Solid components

kubectl create -f conf/nsolid.cloud.yml

Debugging / Troubleshooting

Configuring Apps for N|Solid with Kubernetes

Building an N|Solid app

Docker

Make sure your docker image is build on top of nodesource/nsolid:carbon-latest.

FROM nodesource/nsolid:carbon-latest
Kubernetes

When defining your application make sure the following ENV are set.

  env:
    - name: NSOLID_APPNAME
      value: sample-app
    - name: NSOLID_COMMAND
      value: "console.nsolid:9001"
    - name: NSOLID_DATA
      value: "console.nsolid:9002"
    - name: NSOLID_BULK
      value: "console.nsolid:9003"

Optional flags:

  env:
    - name: NSOLID_TAGS
      value: "nsolid-carbon,staging"

A comma separate list of tags that can be used to filter processes in the N|Solid Console.

Accessing your App

kubectl get svc {service-name}

The EXTERNAL-IP will access the application.
Open EXTERNAL-IP. If using Bluemix Lite cluster, get EXTERNAL-IP this way.

Accessing N|Solid Kubernetes objects

Make sure you use the --namespace=nsolid flag on all kubectl commands.

Setting nsolid as the default namespace

kubectl config current-context // outputs current context
kubectl config set-context {$context} --namespace=nsolid // make 'nsolid' the default namespace
kubectl config set-context {$context} --namespace=default // revert to default

Running nsolid-cli

Verify CLI:

kubectl exec {pod-name} -- nsolid-cli --remote=http://console.nsolid:6753 ping

See N|Solid cli docs for more info.

minikube

Minikube is a bit different then a normal Kubernetes install. The DNS service isn't running so discovering is a bit more involved. IP addresses are not dynamically assigned, instead we must use the host ports the service is mapped to.

Setting ENV for cluster

If your doing a lot of work with docker and minikube it is recommended that you run the following:

eval $(minikube docker-env)

Service discovery

Get the kubernetes cluster ip address:

minikube ip

To get the service port:

kubectl get svc {$service-name} --output='jsonpath={.spec.ports[0].nodePort}'

Note: If your service exposes multiple ports you may want to examine with --output='json' instead.

Common Gotchas

If you get the following message when trying to run docker build or communicating with the Kubernetes API.

Error response from daemon: client is newer than server (client API version: 1.24, server API version: 1.23)

Export the DOCKER_API_VERSION to match the server API version.

export DOCKER_API_VERSION=1.23

License & Copyright

nsolid-kubernetes is Copyright (c) 2018 NodeSource and licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].