Update guide to setup bdb+kubernetes+azure setup

-- Fixed typos in the guide
-- Fixed some syntax errors in commandline instructions
-- Fixed strucuture of sample jsons
-- Fixed bugs in nginx-https-dep file, it was trying to access
an invalid variable in the configmap.
-- Improved some docs to give more clarity for the user.
Atleast all the issues I faced. :)
This commit is contained in:
Muawia Khan 2017-07-21 12:05:18 +02:00
parent d323ad73c2
commit b56f8a6213
9 changed files with 102 additions and 96 deletions

View File

@ -67,7 +67,7 @@ directory and do something like:
.. code:: bash .. code:: bash
./easyrsa import-req bdb-instance-0.req bdb-instance-0 ./easyrsa import-req /path/to/bdb-instance-0.req bdb-instance-0
./easyrsa sign-req client bdb-instance-0 ./easyrsa sign-req client bdb-instance-0
@ -84,4 +84,4 @@ private keys.
.. code:: bash .. code:: bash
cat bdb-instance-0.crt bdb-instance-0.key > bdb-instance-0.pem cat /path/to/bdb-instance-0.crt /path/to/bdb-instance-0.key > bdb-instance-0.pem

View File

@ -50,53 +50,53 @@ An example of a simple template file (``--template-file``):
.. code-block:: json .. code-block:: json
{ {
"$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "1.0.0.0", "contentVersion": "1.0.0.0",
"parameters": { "parameters": {
"sku": { "sku": {
"type": "String" "type": "String"
}, },
"workspaceName": { "workspaceName": {
"type": "String" "type": "String"
}, },
"solutionType": { "solutionType": {
"type": "String" "type": "String"
}, },
},
"resources": [ "resources": [
{ {
"apiVersion": "2015-03-20", "apiVersion": "2015-03-20",
"type": "Microsoft.OperationalInsights/workspaces", "type": "Microsoft.OperationalInsights/workspaces",
"name": "[parameters('workspaceName')]", "name": "[parameters('workspaceName')]",
"location": "[resourceGroup().location]", "location": "[resourceGroup().location]",
"properties": { "properties": {
"sku": { "sku": {
"name": "[parameters('sku')]" "name": "[parameters('sku')]"
} }
}, },
"resources": [ "resources": [
{ {
"apiVersion": "2015-11-01-preview", "apiVersion": "2015-11-01-preview",
"location": "[resourceGroup().location]", "location": "[resourceGroup().location]",
"name": "[Concat(parameters('solutionType'), '(', parameters('workspaceName'), ')')]", "name": "[Concat(parameters('solutionType'), '(', parameters('workspaceName'), ')')]",
"type": "Microsoft.OperationsManagement/solutions", "type": "Microsoft.OperationsManagement/solutions",
"id": "[Concat(resourceGroup().id, '/providers/Microsoft.OperationsManagement/solutions/', parameters('solutionType'), '(', parameters('workspaceName'), ')')]", "id": "[Concat(resourceGroup().id, '/providers/Microsoft.OperationsManagement/solutions/', parameters('solutionType'), '(', parameters('workspaceName'), ')')]",
"dependsOn": [ "dependsOn": [
"[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]" "[concat('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
], ],
"properties": { "properties": {
"workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]" "workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces/', parameters('workspaceName'))]"
}, },
"plan": { "plan": {
"publisher": "Microsoft", "publisher": "Microsoft",
"product": "[Concat('OMSGallery/', parameters('solutionType'))]", "product": "[Concat('OMSGallery/', parameters('solutionType'))]",
"name": "[Concat(parameters('solutionType'), '(', parameters('workspaceName'), ')')]", "name": "[Concat(parameters('solutionType'), '(', parameters('workspaceName'), ')')]",
"promotionCode": "" "promotionCode": ""
} }
} }
] ]
} }
] ]
}
} }
An example of the associated parameter file (``--parameters``): An example of the associated parameter file (``--parameters``):
@ -104,19 +104,19 @@ An example of the associated parameter file (``--parameters``):
.. code-block:: json .. code-block:: json
{ {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0", "contentVersion": "1.0.0.0",
"parameters": { "parameters": {
"sku": { "sku": {
"value": "Free" "value": "Free"
}, },
"workspaceName": { "workspaceName": {
"value": "work_space" "value": "work_space"
}, },
"solutionType": { "solutionType": {
"value": "Containers" "value": "Containers"
},
} }
}
} }
Deploy the OMS Agents Deploy the OMS Agents

View File

@ -220,10 +220,9 @@ portal using your admin account, click **APIs** and click on **Integration**
for the relevant API. for the relevant API.
Scroll to the bottom of the page and click the small link Scroll to the bottom of the page and click the small link
in the lower right corner, labelled **Download the NGINX Config files**. in the lower right corner, labelled **Download the NGINX Config files**.
You'll get a ``.zip`` file. Unzip it(if it is a ``zip`` file). Open the ``.conf`` and the ``.lua`` file.
Unzip it, then open the ``.conf`` file and the ``.lua`` file.
You should be able to find all the values in those files. You should be able to find all the values in those files.
You have to be careful because it will have values for *all* your APIs, You have to be careful because it will have values for **all** your APIs,
and some values vary from API to API. and some values vary from API to API.
The ``version-header`` is the timestamp in a line that looks like: The ``version-header`` is the timestamp in a line that looks like:

View File

@ -87,6 +87,10 @@ You can connect to your cluster's
$ kubectl proxy -p 8001 $ kubectl proxy -p 8001
or
$ az acs kubernetes browse -g [Resource Group] -n [Container service instance name] --ssh-key-file /path/to/privateKey
or, if you prefer to be explicit about the context (explained above): or, if you prefer to be explicit about the context (explained above):
.. code:: bash .. code:: bash
@ -210,7 +214,7 @@ have the Azure DNS prefix name along with a long random string, without the
changes to be applied. changes to be applied.
To verify the DNS setting is operational, you can run ``nslookup <DNS To verify the DNS setting is operational, you can run ``nslookup <DNS
name added in ConfigMap>`` from your local Linux shell. name added in Azure configuration>`` from your local Linux shell.
This will ensure that when you scale the replica set later, other MongoDB This will ensure that when you scale the replica set later, other MongoDB
members in the replica set can reach this instance. members in the replica set can reach this instance.
@ -295,7 +299,7 @@ Step 9: Start the NGINX Kubernetes Deployment
--------------------------------------------- ---------------------------------------------
* NGINX is used as a proxy to OpenResty, BigchainDB and MongoDB instances in * NGINX is used as a proxy to OpenResty, BigchainDB and MongoDB instances in
the node. It proxies HTTP/HTTPS requests on the ``clusted-frontend-port`` the node. It proxies HTTP/HTTPS requests on the ``cluster-frontend-port``
to the corresponding OpenResty or BigchainDB backend, and TCP connections to the corresponding OpenResty or BigchainDB backend, and TCP connections
on ``mongodb-frontend-port`` to the MongoDB backend. on ``mongodb-frontend-port`` to the MongoDB backend.
@ -346,7 +350,7 @@ Step 9.2: NGINX with HTTPS + 3scale
.. code:: bash .. code:: bash
$ kubectl --context k8s-bdb-test-cluster-0 apply -f nginx-3scale/nginx-3scale-dep.yaml $ kubectl --context k8s-bdb-test-cluster-0 apply -f nginx-https/nginx-https-dep.yaml
Step 10: Create Kubernetes Storage Classes for MongoDB Step 10: Create Kubernetes Storage Classes for MongoDB
@ -854,15 +858,15 @@ To test the NGINX instance with HTTPS and 3scale integration:
$ nslookup ngx-https-instance-0 $ nslookup ngx-https-instance-0
$ dig +noall +answer _public-secure-cluster-port._.tcp.ngx-https-instance-0.default.svc.cluster.local SRV $ dig +noall +answer _public-secure-cluster-port._tcp.ngx-https-instance-0.default.svc.cluster.local SRV
$ dig +noall +answer _public-mdb-port._.tcp.ngx-https-instance-0.default.svc.cluster.local SRV $ dig +noall +answer _public-mdb-port._tcp.ngx-https-instance-0.default.svc.cluster.local SRV
$ dig +noall +answer _public-insecure-cluster-port._.tcp.ngx-https-instance-0.default.svc.cluster.local SRV $ dig +noall +answer _public-insecure-cluster-port._tcp.ngx-https-instance-0.default.svc.cluster.local SRV
$ wsc -er wss://ngx-https-instance-0/api/v1/streams/valid_transactions $ wsc -er wss://<cluster-fqdn>/api/v1/streams/valid_transactions
$ curl -X GET http://ngx-https-instance-0:27017 $ curl -X GET https://<cluster-fqdn>
The above curl command should result in the response The above curl command should result in the response
``It looks like you are trying to access MongoDB over HTTP on the native driver port.`` ``It looks like you are trying to access MongoDB over HTTP on the native driver port.``

View File

@ -68,7 +68,7 @@ directory and do something like:
.. code:: bash .. code:: bash
./easyrsa import-req mdb-instance-0.req mdb-instance-0 ./easyrsa import-req /path/to/mdb-instance-0.req mdb-instance-0
./easyrsa --subject-alt-name=DNS:localhost,DNS:mdb-instance-0 sign-req server mdb-instance-0 ./easyrsa --subject-alt-name=DNS:localhost,DNS:mdb-instance-0 sign-req server mdb-instance-0
@ -85,5 +85,5 @@ private keys.
.. code:: bash .. code:: bash
cat mdb-instance-0.crt mdb-instance-0.key > mdb-instance-0.pem cat /path/to/mdb-instance-0.crt /path/to/mdb-instance-0.key > mdb-instance-0.pem

View File

@ -128,14 +128,14 @@ You can SSH to one of the just-deployed Kubernetes "master" nodes
.. code:: bash .. code:: bash
$ ssh -i ~/.ssh/<name>.pub ubuntu@<master-ip-address-or-hostname> $ ssh -i ~/.ssh/<name> ubuntu@<master-ip-address-or-hostname>
where you can get the IP address or hostname where you can get the IP address or hostname
of a master node from the Azure Portal. For example: of a master node from the Azure Portal. For example:
.. code:: bash .. code:: bash
$ ssh -i ~/.ssh/mykey123.pub ubuntu@mydnsprefix.westeurope.cloudapp.azure.com $ ssh -i ~/.ssh/mykey123 ubuntu@mydnsprefix.westeurope.cloudapp.azure.com
.. note:: .. note::

View File

@ -49,7 +49,7 @@ data:
# Kubernetes cluster. # Kubernetes cluster.
ngx-mdb-instance-name: "<name of the mdb instance>.default.svc.cluster.local" ngx-mdb-instance-name: "<name of the mdb instance>.default.svc.cluster.local"
# ngx-openresty-instance-name is the FQDN of the MongoDB instance in this # ngx-openresty-instance-name is the FQDN of the OpenResty instance in this
# Kubernetes cluster. # Kubernetes cluster.
ngx-openresty-instance-name: "<name of the openresty instance>.default.svc.cluster.local" ngx-openresty-instance-name: "<name of the openresty instance>.default.svc.cluster.local"
@ -95,6 +95,24 @@ data:
# the MongoDB backend. # the MongoDB backend.
bigchaindb-database-name: "bigchain" bigchaindb-database-name: "bigchain"
---
apiVersion: v1
kind: ConfigMap
metadata:
name: bdb-config
namespace: default
data:
# Colon-separated list of all *other* nodes' BigchainDB public keys.
bdb-keyring: "<':' separated list of public keys>"
# BigchainDB instance authentication user name
bdb-user: "<user name>"
# BigchainDB public key of *this* node.
# Generated using bigchaindb_driver in the docs
# Example: "EPQk5i5yYpoUwGVM8VKZRjM8CYxB6j8Lu8i8SG7kGGce"
bdb-public-key: "<public key>"
# bigchaindb-backlog-reassign-delay is the number of seconds a transaction # bigchaindb-backlog-reassign-delay is the number of seconds a transaction
# can remain in the backlog before being reassigned. # can remain in the backlog before being reassigned.
bigchaindb-backlog-reassign-delay: "120" bigchaindb-backlog-reassign-delay: "120"
@ -110,21 +128,4 @@ data:
bigchaindb-database-connection-timeout: "5000" bigchaindb-database-connection-timeout: "5000"
# bigchaindb-log-level is the log level used to log to the console. # bigchaindb-log-level is the log level used to log to the console.
bigchaindb-log-level: "debug" bigchaindb-log-level: "debug"
---
apiVersion: v1
kind: ConfigMap
metadata:
name: bdb-config
namespace: default
data:
# Colon-separated list of all *other* nodes' BigchainDB public keys.
bdb-keyring: "<':' separated list of public keys>"
# BigchainDB instance authentication user name
bdb-user: "<user name>"
# BigchainDB public key of *this* node.
# Example: "EPQk5i5yYpoUwGVM8VKZRjM8CYxB6j8Lu8i8SG7kGGce"
bdb-public-key: "<public key>"

View File

@ -15,8 +15,9 @@ metadata:
type: Opaque type: Opaque
data: data:
# Base64-encoded Group ID # Base64-encoded Group ID
# Group ID used by MongoDB deployment
group-id: "<b64 encoded Group ID>" group-id: "<b64 encoded Group ID>"
# Base64-encoded Agent API Key # Base64-encoded MongoDB Agent API Key for the group
agent-api-key: "<b64 encoded Agent API Key>" agent-api-key: "<b64 encoded Agent API Key>"
--- ---
apiVersion: v1 apiVersion: v1
@ -27,6 +28,7 @@ metadata:
type: Opaque type: Opaque
data: data:
# Base64-encoded BigchainDB private key of *this* node # Base64-encoded BigchainDB private key of *this* node
# Generated using bigchaindb_driver in the docs
private.key: "<b64 encoded BigchainDB private key>" private.key: "<b64 encoded BigchainDB private key>"
--- ---
apiVersion: v1 apiVersion: v1
@ -80,7 +82,7 @@ data:
crlfile: "<b64 encoded CRL>" crlfile: "<b64 encoded CRL>"
# Base64-encoded BigchainDB instance certificate # Base64-encoded BigchainDB instance certificate
bdb-instance.pem: "<b64 encoded certificate>" bdb-instance.pem: "<b64 encoded certificate>"
# Base64-encoded private key # Base64-encoded private key (<bdb-instance-name>.key)
bdb-instance.key: "<b64 encoded private key>" bdb-instance.key: "<b64 encoded private key>"
--- ---
apiVersion: v1 apiVersion: v1

View File

@ -59,7 +59,7 @@ spec:
valueFrom: valueFrom:
configMapKeyRef: configMapKeyRef:
name: vars name: vars
key: openresty-backend-host key: openresty-instance-name
- name: BIGCHAINDB_BACKEND_HOST - name: BIGCHAINDB_BACKEND_HOST
valueFrom: valueFrom:
configMapKeyRef: configMapKeyRef: