Dipesh Majumdar

Blog and Paintings

run bash commands with spaces on pod

You wanna run bash commands with spaces in a pod without entering the pod with the '-it'  , then you need to know this - 

kubectl -n some_namespace exec mysql-passbolt-blah-blah-somemoreblah --  bash -c 'ls -ltra'

note - in the above command - double quotes can also be used.


you might ask -
what's the use of this ...
well the answer is - suppose you want to take a backup of a database - some_database from a mysql pod directly in your local laptop from command prompt (for ex. git bash) this is how to do it -

 kubectl -n some_namespace exec mysql-passbolt-7b976cb4cf-qmx62 --  bash -c \
'mysqldump -u root -proot_password some_database > pb.sql'


now how to download this file from pod to your local laptop? that's a tricky one and i spent a lot of time hunting for the exact syntax - so pay attention here... note the file name provided in the below command doesn't have any forward slash to it even though inside pod it's absolute path is /  - that's the trick - the file should be successfully downloaded now to your local machine. 

kubectl cp some_namespace/mysql-passbolt-7b976cb4cf-qmx62:pb.sql /c/Users/dipes/scripts/tmp


all database backup(date-wise): 

kubectl cp some_namespace/mysql-passbolt-7b976cb4cf-qmx62:pb-$(date +%Y-%m-%d).sql /c/Users/dipes/scripts/tmp



Error: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list configmaps in the namespace "kube-system": Unknown user "system:serviceaccount:kube-system:default"

confronted with this error while helming...


$ helm ls
Error: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list configmaps in the namespace "kube-system": Unknown user "system:serviceaccount:kube-system:default"



remedy is this: 

first create a servieaccount by name tiller - > kubectl create serviceaccount --namespace kube-system tiller
create cluster rolebinding  -> kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
patch deployment in ns kube-system -> kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'      
helm init --service-account tiller --upgrade


Reflecting on 'being adult' on Dashami...

At a time when Durga Puja has remained a distant childhood memory, the advent of the special occassion or the end of the festivity has ceased to churn emotions of joy and sadness...
however i miss the innocent happiness of childhood in just being able to be part of the festivity.

Friends and family together...flocking around Goddess Durga... going out to see the different pandels in kolkata and staying awake the whole night... these used to mean a lot...

Quote from Eugene Ionesco very nicely illustrates this - 
The end of childhood is when things cease to astonish us.  When the world seems familiar, when one has got used to existence, one has become an adult.

Happy Durga Puja to all!

Sony WH-1000X M3 Headphone Review

Install helm client on windows

Latest release can be downloaded from here -

or if you want any particular version you need to go to the tag tab on the top left. 
and then select the required version and download. 

for exxamplem -
for v2.8.2

now after downloading it - extract with 7zip (or anyother software) and copy the location
of helm.exe and keep in in Path of environment variables from here - 
Control Panel -> System and Security -> System -> Advanced system settings -> Environment Variables

An opportunity may arise out of nowhere

My opponent had a rating of 1270 and mine was a mere 1130... i was skeptical - not sure of winning... however i didn't want to go down without a fight! I opened up my pieces with caution. I thought and analysed hard before my moves... and my opponent was taking  a lot of time to make his moves. As the clock ticked by...  i thought of taking a quick break and then return to the game. As I got back... suddenly, out of nowhere I spotted a great opportunity for a double attack. 

Well my bishop sitting at b7 was aiming at his rook on h1 (though there was a pawn as a cover).  Because my queen was at g5  so in the event of an exchange he might lose more - so to prevent that situation he moved his rook to g1. This gave me a glorious opportunity to eat his pawn with my queen at e3. now in order to come out of check - he had to lose his rook - there was simply no other way - and out of remorse he RESIGNED!

I learnt 2 lessons from this game:

1. Let your opponent be strong - it really doesn't matter - you play your role with an unperturbed mind and focus on your work at hand. There is no control that you have on the external factors - in this case the higher rating of my opponent. I really can't do much about it. So if i start giving it too much of an importance I will lose my own confidence and my focus. Rather I should remind myself that on many occasions I have won against a higher rated player. You never know - an opportunity may arise out of nowhere! 

2. Assign tasks/responsibilities to your team members that might trigger benefit somewhere else that you might never think of. Don't make them sit idle and do nothing. In this case my team member bishop forced my opponent to move his rook thereby enabling the double attack by my queen - my queen might take  credit - but it was the bishop that had caused it. It's because my bishop was assigned to take care of the longest diagonal of the chess board, i.e,the longest (read largest) responsibility.


adding git origin over command line (& faced with - fatal: remote origin already exists.)

dipes@LAPTOP-FEA1CJ5Q MINGW64 ~/gitlab_mz_content/someproject (master)
$ git remote add origin
fatal: remote origin already exists.


for the above error you need to remove origin and then add it... 


dipes@LAPTOP-FEA1CJ5Q MINGW64 ~/gitlab_mz_content/someproject (master)
$ git remote rm origin

dipes@LAPTOP-FEA1CJ5Q MINGW64 ~/gitlab_mz_content/someproject (master)
$ git remote add origin

dipes@LAPTOP-FEA1CJ5Q MINGW64 ~/gitlab_mz_content/someproject (master)
$ git remote -v
origin (fetch)
origin (push)

dipes@LAPTOP-FEA1CJ5Q MINGW64 ~/gitlab_mz_content/someproject (master)

LENOVO ideapad 530S Review

The eye that never blinks

How to post notification on slack channel with bash script

In order to do this first go to your slack channel (home page) and scroll down... if you look towards left bottom part you will see a link: APP

Click on that and then click on "view app directory"

Then click on button "get essential apps"

You can see a search place with a magnifying glass

Search "Incoming WebHooks" and then click on incoming webhooks

you are in the "incoming webhooks" home page now - here you can add a new configuration on a slack channel... you can also see existing configurations for the slack channel... here get the incoming webhook url by editing on the required configuration. 

Grab the incoming webhook url and use it to the members of slack channel with the required messages...

For example with http response code - 404/500... you can put the response in a variable and post the variable in the slack channel as an alert in this way - 

curl -X POST -H 'Content-type: application/json' --data '{"text":"ALERT!!! http response for POST </some/api/call/url> :'"$HTTP_RESPONSE"'"}'



I have lost count of the abstract head paintings and now I generate a 8 character random string as unique identifier... I thought that will make it much simpler to name these paintings...

kubectl basic commands

kubectl get <resource_name>

All the resources offered by k8s api can be queried and known by the simple kubectl get  command

these are - 

certificatesigningrequests csr
componentstatuses cs
configmaps cm
customresourcedefinition crd, crds
daemonsets ds
deployments deploy
endpoints ep
events ev
horizontalpodautoscalers hpa
ingresses ing
limitranges limits
namespaces ns
networkpolicies netpol
nodes no
persistentvolumeclaims pvc
persistentvolumes pv
poddisruptionbudgets pdb
pods po
podsecuritypolicies psp
replicasets rs
replicationcontrollers rc
resourcequotas quota
serviceaccount sa
services svc
statefulsets sts
storageclasses sc
kubectl get no

[dipesh.majumdar@some-instance ~]$ kubectl get no -o wide
NAME            STATUS    ROLES     AGE       VERSION                   INTERNAL-IP     EXTERNAL-IP     OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME   Ready     <none>    9d        v1.9.8-2+af27ab4b096122   Ubuntu 16.04.4 LTS   4.4.0-127-generic   docker://17.6.2   Ready     <none>    9d        v1.9.8-2+af27ab4b096122   Ubuntu 16.04.4 LTS   4.4.0-127-generic   docker://17.6.2   Ready     <none>    9d        v1.9.8-2+af27ab4b096122   Ubuntu 16.04.4 LTS   4.4.0-127-generic   docker://17.6.2

[dipesh.majumdar@some-instance ~]$ kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM                                      STORAGECLASS       REASON    AGE
pvc-0e7ae29e-8119-11e8-80c5-4a1xy09543ad   20Gi       RWO            Delete           Bound     default/gitlab-gitlab-config-storage       ibmc-file-bronze             3d
NAME                               STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS       AGE
gitlab-gitlab-config-storage       Bound     pvc-0e7ae29e-8119-11e8-80c5-4a1xy09543ad   20Gi       RWO            ibmc-file-bronze   3d
[dipesh.majumdar@demo-instance ~]$ kubectl get po
NAME                                       READY     STATUS    RESTARTS   AGE
gitlab-ee-nkbsm                            1/1       Running   0          6d


no persistent volumes available for this claim and no storage class is set

that error is because storage class is properly not set...

one way of solving that is get the pvc yaml files from api, then delete the pvc, again create the pvc with the same yaml file... this might solve and you might see that error vanished if you do a kubectl describe pvc <pvc_name>

try your luck :-) for me it had solved... 

peaq laptop review

This laptop:  PEAQ PNB S2415-I5N1 is available in mediamarkt  Netherlands... 

One day while i was taking a casual look at all the laptops displayed in a mediamarkt store - i happened to see this big 15.6 inch laptop - immediately i started typing on it and found the kyeboard was actually very good to type on - and i found the display of the screen good too.... what more i came back - did some more research and decided to place an order online through the mediamarkt online store - 

The price is around 450 euro - I got some 50 euro discount without which it would have been 499 Euro I guess...

I bought it online from mediamarkt site on 27.may.2018 and got it on 28.may.2018 - fully sealed....

....Unboxed on 28.may.2018 and have been using ever since.  At 500 euro the specs are awesome and you can't get such quality at such a low price. the specs are give below - 

Operating System Windows 10 Home Resolution 1920 x 1080 Optical drive No Form Factor Fixed Screen Aspect Ratio 16: 9 LED backlight yes Screen size (inch) 15.6-inch Display size (cm) 39.6 cm Screen Diagonal (cm / inch) 39.6 cm / 15.6 inches Image resolution Full HD

Specs are as shown below...

Display: 15.6 inch (1920 x 1080) 
Processor: Intel Core i5-6200U 
RAM: 8 GB 
Storage: 128 GB eMMC + 1 TB HDD 
Graphics card: Intel HD Graphics 520

Now let me write the pros and cons - 

pros -


1. cheap price and fabulous quality

2. keyboard is nice and big - the keys have a nice responsive kick that i found very comfortable... i tried a few other expensive laptops but was massively disappointed by the key repsonse my fingers received... just to let you know - i just love to type and i type very fast and if i don't get a proper keyboard - no matter how impressive the other features are - it will be a big NO NO - but not with this laptop - i was impressed and still am after 30 odd days of rigorous use... a big thumbs up

3. display is quite good at this price...

4. pretty fast response time - switch it on and it doesn't take much time to come to life... its pretty fast


cons -

1. Biggest disappointment is the battery - battery doesn't last that long and your power cable has to be somewhere near...

2. There is no indication of caps-lock - no way to know that your caps-lock is on or off - no light indicator on the Caps Key!

3. The DOT (or fullstop) key is very small and it's an irritation. Bad design!!!

4. Build quality of laptop is not good; screen looks very much vulnerable as the bezels are so weak and screen is wobbly/shaky if you just touch it gently... 

5. shift + right or left arrow - should selct the words - which doens't work at all and that's irritating... really really irritating...


FINAL VERDICT - considering that it is only 499 Euro and all the features it has - I would still recommend this... however if you can spend more - definitely go for a branded and better laptop with good build quality.

generate ssh keys in linux

[root@local-some-env ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/
The key fingerprint is:

The key's randomart image is:
+---[RSA 2048]----+
|      blah   |
|     blahhhh.  |
|      o o =.o  o |
|       . * o . . |
|        S+*   o  |
|      . +=+ ..   |
|     o = ..+ ... |
|      * =.  o ...|
|      .X=.   oo. |
[root@local-some-env ~]# ls -ltra /root/.ssh/
total 8
dr-xr-x---. 4 root root  136 Jun 28 14:30 ..
-rw-r--r--. 1 root root  406 Jun 28 14:30
-rw-------. 1 root root 1679 Jun 28 14:30 id_rsa
drwx------. 2 root root   38 Jun 28 14:30 .


rhel vs centos - which one to choose

it's better to choose centos because it's not licensed  and you get the work done just as well as you would have on RHEL ...........................................................................................very little differences if at all there is any - BETWEEN CENTOS and RHEL....

Of course - dear reader, please don't quote me on this - and do your own piece of research... 

i am hoping that centos should be able to do your work without you needing to burn a hole in your pocket... 

so whenever you have the opportunity to launch an instance in cloud - for example in google cloud - choose the os image as centos - that way the monthly billing will be less.... very handy advise - for free - so go - enjoy!!!!!!!!!!!!!!!!!!!!

***************************for example uname -a output for centos can be -  3.10.0-862.3.2.el7.x86_64   

... well right now when i write this it is so - will change in future may be - things are changing fast - real real fast............................

Install Docker CE on RHEL

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

sudo yum-config-manager --add-repo
adding repo from:
grabbing file to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo

sudo yum-config-manager --enable docker-ce-edge
sudo yum-config-manager --enable docker-ce-test

You can disable the edge or test repository by running the yum-config-manager command with the --disable flag. To re-enable it, use the --enable flag. The following command disables the edge repository.

sudo yum-config-manager --disable docker-ce-edge
Note: Starting with Docker 17.06, stable releases are also pushed to the edge and test repositories.

sudo yum install docker-ce

install docker compose ->
sudo curl -L$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

[root@local ~]# docker-compose --version
docker-compose version 1.21.2, build a133471
[root@local ~]#

**************beware of this error***************

Cannot connect to the Docker daemon at unix:///var/run/docker.sock

even after installing docker the above error might trouble you - so start the docker service to solve that - 

[dipesh.majumdar@some-instance ~]$ sudo service docker start
Redirecting to /bin/systemctl start docker.service
[dipesh.majumdar@some-instance ~]$ sudo service docker status
Redirecting to /bin/systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)

docker process should be visible

ps -ef |grep docker
root     20724     1  0 23:04 ?        00:00:00 /usr/bin/dockerd
root     20730 20724  0 23:04 ?        00:00:00 docker-containerd --config /var/run/docker/containerd/containerd.toml
dipesh.+ 21186 20549  0 23:09 pts/1    00:00:00 grep --color=auto docker



Docker commands

docker-machine ip  ###if you are installing docker on windows - localhost won't work and this is what you have to run to get docker-machine ip

docker-machine ls ###

docker run --detach    --hostname --publish 443:443 --publish 80:80 --publish 32:22 --name gitlab_ee_test --restart always --volume /srv/gitlab/config:/etc/gitlab:Z  --volume /srv/gitlab/logs: /var/log/gitlab:Z --volume /srv/gitlab/data:/var/opt/gitlab:Z  gitlab/gitlab-ee:latest   ###run a container

same gitlab enterprise edition yaml file

 docker exec -it 8d198db1e8ee bash  ###Entering a container

docker info  ###check docker installation

docker-compose --version ###check docker compose installation

docker run -it alpine sh  ###create a container and get inside it

docker container ls     ###what containers are running
docker container ls -a   ###what containers are running

docker system df  ###how much space docker image is using

docker images
docker image ls
docker system prune -f
docker rmi image_id
docker rmi -f  image_id/name

docker stop  containerid1 contanerid2

delete multiple docker images - 

$ docker images |grep mpdev |awk -F' ' '{print $3}' |xargs docker rmi
Untagged: mpdev_api:latest
Deleted: sha256:c152dab96cacb9fc716b5dfb9516836e4c992e843d5f17fd55df1ef692faba50
Deleted: sha256:0919997f056c0f9e08a6a8c0700a6b5669d22602aa4c77e8fe3c5b43061a2f2f
Deleted: sha256:860548a383358c1ad67b0e402e64c8f5cca2c4b9992165deab974f4f388e04c1
Deleted: sha256:0c1bd7569b81d1eb5fdd03f41467c99f4f364faf8133d96c73027c91d371537d
Deleted: sha256:018b7a4a2d2f33bf46eacc7ead42fbeb126dc8276a474308619d4ad3674a523b
Deleted: sha256:25ebf6b02b787cbdb58b54b8e3762a36062cac702d64e30e939051ccfca7753a
Deleted: sha256:55c6d80942b0a9e581ac10c917d89a64fe12c83954cdc52f45fa31f766860023
Deleted: sha256:27ab350230d9345abdba3cd4c2bfed94e4fe409703ac1acd408bf1cd58197b3b
Deleted: sha256:7cf5181590ad11b2e39b8c94626e06989e0d8e6f257145f50201f2696fdf5321
Deleted: sha256:24ca683fc26ebd848c351b337fbf89a2eafc4c7bcd2a48220a78f63f8240f861
Deleted: sha256:2f0abbbe5d4895c53f7b17642c912bb5b5762ecbf3406bc81886146afafff7c6
Deleted: sha256:789eda5d666697a48856ff290f1090de9ce867f2ccac5c50f3a2111b152901e0
Deleted: sha256:e479afaeea9a40fda484a8733bd51077b3b136c6d577ac575668ec6cbedce5d7
Deleted: sha256:79eac68fd953206e1203d2ca380d35daec126ac9bc2a9cd30b04972ff25e9043
Deleted: sha256:96e285e3b7a0d41aac81eb7fdfcefc5e5a96e446ce84421c608323101d744491
Deleted: sha256:ae3a33c59572bd4962d19b5ea0f2b3522729383f616ae18ddfc1e7ec69e1ba33
Deleted: sha256:55b5e8dd2574f7bb21739c5a2d6d4f4932fb3bc751521896bd497c7e3c39d3b2
Deleted: sha256:8c9121be9e53f4df26961e72b55f27093b1e88936f5360edf847c9380ed7a538
Deleted: sha256:daf47760bc74b4dafd9de381981fc43ecbe070418c92f85c4007196b2a49cef7
Deleted: sha256:39db08d0918163ee3b723c1516a3908a07c552dce360171c2c283806710b8087
Untagged: mpdev_frontend:latest
Deleted: sha256:892475b401b5274f3c07f592dfd25ed831c1b912fcf2969d10d352a74765fa4f
Deleted: sha256:c4b0c8a099685d9d893b0aa84e85ee7cdbdd01810f0e0c3fb3bef753020e9c1f
Deleted: sha256:869eec1b65fdd16c0437c7e1754e7b2016fc2a258c31f162c6394c1f1a2ce06e
Deleted: sha256:d61ac53c759a15b09559a26a50b0d1b0fa72b8f561a00472c303b5169e48a165
Deleted: sha256:1ede2600b4872ce7883813f43265074e40ce7973abbcdfc41dede91e12006a33
Deleted: sha256:6b96c45e6caa7120ddc6302ce29534d4f425f47cf3798d69aa8968b5469e8971
Deleted: sha256:872d2513f4b25a7b09dcf65482f5c05af1329b6b31aa076bd88265a52ba0e6de
Deleted: sha256:a486379143c0b73f21ae22c4ceb917eccdc4abf5390a7fe1820e08782a6de00e
Deleted: sha256:7c03ae6327e76b91bc5d727d51671959907614f4672fba5cca064f52f2c8c8de
Deleted: sha256:f070c46d518eb9e4c6d3ea8110522d176ef753c8c6ae43d0529b6134c2994f36
Deleted: sha256:ab5f0c1c55fa7dfabf894f07387760e1a79873db6adac7682320af0b86fb3ca0
Deleted: sha256:a6f4c78e7346566b3a49e8d0a9e32f2be060abbaa7fff6e0b214ee23a7d6f151




Thiem lost the plot

So what was the French open final all about? For me it was another proof of how talent crumbles before experience. Thiem was an epitome of class and talent but what he lacked was the tactful game plan, knowledge of crucial points where he needed to put more focus and energy - and all this comes with experience. 

Nadal is aging and with age he can no more generate that sustained flow of energy that he could a decade earlier and therefore he depends a lot on strategy. He conserves energy like an old panther who only targets that victim it is confident of running down. Rest of the flock is just ignored -  it doesn't chase them... Just an analogy from what I observed - The great clay court southpaw will not play all the points to the best of his effort... but will only play to his fullest energy at the crucial points...  The points that matter. It's like reading the game like a book and playing it with the mind as much as with muscles... To some extent it's like chess. I have also seen him targetting the weak back hand of players incessantly - and then suddenly coming up with a viscous forehand which is just too fast to chase down. 

And his opponent failed to read that. When Nadal returned the hard shots of Thiem with painful accuracy, Thiem needed to hold on to it a little longer - and then Nadal might have given in... however he falls a victim to frustration and gives up, shortfalls every amateur is vulnerable to - and pretty apparent in this case also. 

Thiem was pretty impressive and his loss in straight sets was a bit too much to digest, keeping in mind the alacrity and power with which he played in the Rod Laver Arena. He might have lost but he definitely gained a lot through this grueling battle. The experience gathered will take him a long way forward in his career, if he applies the learning lessons with the right attitude. 

He needs to understand that he has to persevere a lot more than what he has shown in the final. 

my chess prgress and other things - basically an update on the state of my mind

nothing much really...

I had a rating of 1160 even a couple of weeks before ... but right now it is loitering around the 1100 mark. I am falling below this mark as well. However I am not able to reach 1150 plus any more - forget touching 1200

Ok my aim is to touch 1200 by 03.July.2018

I will check my progress very keenly. 

Now a days I have lost interest in analysing the game - however that's not a good idea. Actually analysing a game only helped me to learn from my mistakes - also it helped me to learn a few tricks - for example if the opponent comes down aggressively with his queen at the start - I know I have to bring my knight up to counter it - and so on... 

now since I don't analyse the game any more - I have stopped learning those tricks. 

Right now the French open is going on.... and just now Djokovic won one of the matches. My mind is on a lot of things... 

I have to take care of a lot of things - and I don't know how to go about it. May be making a to-do-list in an excel sheet and analysing all that I need to do will help. I will do just that. 

I am lot calm and relaxed these days - I am able to sleep well and plan things in advance. I intend to do a lot of things - like practise the devops tools online and also hone my skills in whatever I can lay my hands on... I truly believe that "my technical skill" is my only true friend which can take me to great heights... and so its very important that I develop my skills. Without it I am going to be in bad situation.

I am also a firm believer of dreams and over the period of time I have come to realize that if you don't let go of the vision of your dreams - somehow your dreams will take shape slowly but steadily... it's all a matter of thinking and keep on attempting and aiming high. 


View older posts »