Ir al contenido principal

Understanding Liveness, Readiness and Startup Probes in Kubernetes

 This is a small article about understanding the liveness, readiness and startup in kubernetes.  There's good explanation in the kubernetes documentation: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ This video also explains well the process: https://www.youtube.com/watch?v=aTlQBofihJQ But I wanted to understand it in a practical way. So I have this demo: https://github.com/DiegoTc/guest-book-js-docker/tree/Running-App-Version-1 It's a simple application running on a kubernetes cluster. https://github.com/DiegoTc/guest-book-js-docker/blob/Running-App-Version-1/argo/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: chat-ui spec: replicas: 1 revisionHistoryLimit: 3 selector: matchLabels: app: chat-ui template: metadata: labels: app: chat-ui spec: containers: - image: diegotc/guestbook:20230803-064434 imagePullPolicy: Alwa...

Managing dynamic inventory in private subnets using bastion jump box

Managing dynamic inventory in private subnets using bastion jump box
The title of post is quite large, but is something I encountered issues in the last weeks. I had a VPC in AWS, creating x amount of instances in a private network, and was quite complex to manage this instance using static inventory files. So I will explain you how to manage this problem with Ansible.
Before continue, I want to say these articles are really good and can help you with this issues.
So you will be asking, if these articles are so good, why are you writing them again? Easy, I’m doing this in Gitlab CI, and I suppose other CI will encounter similar issues. It’s not possible to connect to the instances using the instructions above.

First Step

We get our inventory in a dynamic way. For this we will use the inventory scripts.
We need to modify the ec2.ini file with uncommenting the vpc_destination_variable and set the value to private_ip_address
An example
# For server inside a VPC, using DNS names may not make sense. When an instance
# has 'subnet_id' set, this variable is used. If the subnet is public, setting
# this to 'ip_address' will return the public IP address. For instances in a
# private subnet, this should be set to 'private_ip_address', and Ansible must
# be run from within EC2. The key of an EC2 tag may optionally be used; however
# the boto instance variables hold precedence in the event of a collision.
# WARNING: - instances that are in the private vpc, _without_ public ip address
# will not be listed in the inventory until You set:
vpc_destination_variable = private_ip_address
#vpc_destination_variable = ip_address
Be sure to have your ansible.cfg, with the following line.
host_key_checking = False
This is useful, as we’re running this in a CI, we can’t hit enter to accept the connection in the terminal.
Then we begin working with our yml file. As I’m running this on a container, I need to create the .ssh directory and the config file. Here it’s important to add StrictHostKeyChecking=no If we don’t do this, this will fail in our CI, as we can’t hit enter. If you don’t included it and run it locally, it will work.
---
- name: Creates ssh directory
  file:
    path: ~/.ssh/
    state: directory


- name: Create ssh config file in local computer
  copy:
    dest: ~/.ssh/config
    content: |
       Host 10.*.*.*
       User ubuntu
       IdentityFile XXXXX.pem
       StrictHostKeyChecking=no
       ProxyCommand ssh -q -W %h:%p {{ lookup('env', 'IP') }}
       Host {{ lookup('env', 'IP') }}
       User ubuntu
       StrictHostKeyChecking=no
       IdentityFile XXXXX.pem
       ForwardAgent yes

And finally we test it running the ping command.
---
- name: test connection
  ping:

In case you need the code : https://github.com/DiegoTc/bastionansible

Comentarios

Entradas populares de este blog

Understanding Liveness, Readiness and Startup Probes in Kubernetes

 This is a small article about understanding the liveness, readiness and startup in kubernetes.  There's good explanation in the kubernetes documentation: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ This video also explains well the process: https://www.youtube.com/watch?v=aTlQBofihJQ But I wanted to understand it in a practical way. So I have this demo: https://github.com/DiegoTc/guest-book-js-docker/tree/Running-App-Version-1 It's a simple application running on a kubernetes cluster. https://github.com/DiegoTc/guest-book-js-docker/blob/Running-App-Version-1/argo/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: chat-ui spec: replicas: 1 revisionHistoryLimit: 3 selector: matchLabels: app: chat-ui template: metadata: labels: app: chat-ui spec: containers: - image: diegotc/guestbook:20230803-064434 imagePullPolicy: Alwa...

Getting Docker Syntax In Gedit

I have been working with docker in the last days, and encounter the syntax issue with gedit. Just pure plain text. So make a small search and found an easy way for fixing this. I found Jasper J.F. van den Bosch repository in GitHub and found the solution for this simple problem. We need to download the docker.lang file, available here:  https://github.com/ilogue/docker.lang/blob/master/docker.lang After that, you go to the folder you save the file and do the following command. sudo mv docker.lang /usr/share/gtksourceview-3.0/language-specs/  If this doesn't work you can try the following: sudo mv docker.lang  ~/.local/share/gtksourceview-3.0/language-specs/ And that's all! Screenshot of gedit with no docker lang Screenshot of gedit with docker lang

Ansible using plugins for dynamic inventories

This is a small post about how to use inventory plugins in Ansible. If you are looking the script way I recommend to read this article: http://gloriasilveira.com/setting-up-ansible-for-aws-with-dynamic-inventory-ec2.html It explains really good this or you can watch this video: https://www.youtube.com/watch?v=LnbqO1kTPqE&t=6s But if you’re looking to use inventory this article can help you. First of all, why should I used inventory if all over the internet they’re using the python scripts? Well, Ansible recommends it: Inventory plugins take advantage of the most recent updates to Ansible’s core code. We recommend plugins over scripts for dynamic inventory. You can write your own plugin to connect to additional dynamic inventory sources. https://docs.ansible.com/ansible/latest/user_guide/intro_dynamic_inventory.html The actual ansible guide is quite good, but there was a step that got me confused, probably my english isn’t so good and I didn’t understood it. We need to ena...