2023-02-11

K8s @TechWorldwithNana

https://gitlab.com/nanuchi/youtube-tutorial-series/-/tree/master/demo-kubernetes-components

 https://www.youtube.com/watch?v=azuwXALfyRg&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=20

minikube kubectl -- apply | delete  -f demo.yaml

minikube kubectl -- create | update | delete  deployment nginx-deployment

minikube kubectl -- get deployment | nodes | pod | services | replicaset 

minikube kubectl -- describe pod nginx-deployment-6895854749-7mjft

minikube kubectl -- logs nginx-deployment-6895854749-7mjft

minikube kubectl -- exec nginx-deployment-6895854749-7mjft -- date
Sat Feb 11 10:41:12 UTC 2023

minikube kubectl -- exec -ut nginx-deployment-6895854749-7mjft -- bin/bash
-------------------------
$ minikube kubectl -- apply -f nginx-deployment.yaml 
deployment.apps/nginx-deployment created
$ minikube kubectl -- apply -f nginx-service.yml 
service/nginx-service created
$ minikube kubectl -- get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-6895854749-j7kvw   1/1     Running   0          72s
$ minikube kubectl -- get service
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.96.0.1       <none>        443/TCP   16d
nginx-service   ClusterIP   10.103.91.133   <none>        81/TCP    2m19s

$ minikube kubectl -- describe service nginx-service

minikube kubectl -- delete -f nginx-deployment.yaml 
minikube kubectl -- apply -f nginx-deployment.yaml 
minikube kubectl -- get pod -o wide
minikube kubectl -- describe pod

minikube kubectl -- delete -f nginx-service.yml 
minikube kubectl -- apply -f nginx-service.yml 
minikube kubectl -- get service -o wide
minikube kubectl -- describe service

$ minikube kubectl -- get deployment nginx-deployment -o yaml

$ minikube kubectl -- get all
NAME                                    READY   STATUS    RESTARTS   AGE
pod/nginx-deployment-68d9b6c666-nmn7n   1/1     Running   0          32m

NAME                    TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE
service/kubernetes      ClusterIP   10.96.0.1     <none>        443/TCP   16d
service/nginx-service   ClusterIP   10.101.5.35   <none>        81/TCP    31m

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-deployment   1/1     1            1           32m

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-deployment-68d9b6c666   1         1         1       32m

---------------
https://www.youtube.com/watch?v=EQNO_kM96Mo
echo -n 'username' | base64

https://www.youtube.com/watch?v=azuwXALfyRg&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=19
 Kubectl Basic Commands - Create and Debug Pod in a Minikube cluster | Kubernetes Tutorial 18 
kubectl get nodes

kubectl get pod
kubectl describe pod

kubectl get services
kubectl create -h
kubectl get replicaset

kubectl get deployment
kubectl create deployment nginx-depl
kubectl cedit deployment nginx-depl

kubectl exec -it <podname> -- /bin/sh

https://youtu.be/azuwXALfyRg?list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&t=707 

2023-02-08

Docker @TechWorldwithNana

Docker Tutorial for Beginners

 8 Basic Docker Commands || Docker Tutorial 4 

- 2:25 docker pull

 - 4:04 docker run

 - 4:40 docker ps

 - 5:06 docker run --options

 - 6:17 docker stop

 - 6:43 docker start

 - 10:08 - docker ports, docker port mapping

 - docker logs (in part 2)

 - docker exec -it (in part 2) 

Debugging Docker Containers with docker exec and docker logs || Docker Tutorial 5 

 - 1:56 docker logs

 - 5:28 docker exec -it

 Docker vs Virtual Machine | simply explained || Docker Tutorial 6 

 Overview of Workflow with Docker - Docker in Practice || Docker Tutorial 7 

 Developing with Docker - Docker in Practice || Docker Tutorial 8 

0:14 - Pre-Requisites

0:55 - what we will do in this video

1:44 - 1st part: The JavaScript App (HTML, JavaScript Frontend, Node.js Backend)

https://gitlab.com/nanuchi/techworld-js-docker-demo-app

3:30 - 2nd part: MongoDB and Mongo Express Set-Up with Docker

5:00 - Docker Network concept and demo (docker-compose uses docker network under the hood, in the next video(s) I will show you how to do it with docker-compose)

15:33 - 3rd part: Connect Node Server with MongoDB container

0:07 - What is Docker Compose?
1:22 - docker run commands VS docker compose
5:05 - How to use it? - Create the Docker Compose File (Demo)
7:25 - Docker Networking in Docker Compose

 1:49 - What is a Dockerfile?
2:22 - How the Dockerfile commands map to the image environment
8:05 - Create the Dockerfile (Demo)
12:00 - Build an image out of the Dockerfile
15:02 - Start the Application to verify: 1) App starts successfully 2) App environment is configured correctly
19:34 - do improvement - copy only relevant files

 0:21 - When do we need Docker Volumes?
1:02 - What is Docker Volumes?
2:04 - 3 Docker Volumes Types
4:14 - Docker Volumes in docker-compose file

 0:23 - no persistance - docker compose without volumes
2:16 - Define the named volume in docker compose file
5:22 - re-start docker compose and see how data is persisted
6:34 - see where the docker volumes are located on your local machine

 0:38 - Comparison Docker and Kubernetes
1:40 - Docker and Kubernetes in the software development process
2:42 - Kubernetes in Detail
3:21 - Differences of Kubernetes and Docker Swarm

 0:34 - BP 1: Use official and verified Docker Images as Base Image 
1:13 - BP 2: Use Specific Docker Image Versions
2:12 - BP 3: Use Small-Sized Official Images
(FROM node:1.2.3-alpine)
4:35 - BP 4: Optimize Caching Image Layers
10:09- BP 5: Use .dockerignore file
10:55 - BP 6: Make use of Multi-Stage Builds
14:15 - BP 7: Use the Least Privileged User 
16:06 - BP 8: Scan your Images for Security Vulnerabilities
17:50 - Wrap Up

=================================
https://www.youtube.com/watch?v=80Ew_fsV4rM

Ingress, tls certificate

https://www.youtube.com/watch?v=5cNrTU6o3Fw

multiple containers in a pod, yaml example

 

https://www.youtube.com/watch?v=6YisG2GcXaw&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=8

Mongo + NodeJS 

stream the logs: docker -f

https://www.youtube.com/watch?v=WmcdMiyqfZs&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=10

Dockerfile

docker ps -a

docker stop <containerid>

docker rm <containerid>

docker images

docker rmi <imageid>

docker build -t tagname:version .

docker images

docker run tagname:version

docker logs <containerid> -f

docker exec -it <containerid> /bin/sh

env (lists all env vars)

https://www.youtube.com/watch?v=vWSRWpOPHws&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=11

AWS ECR - Elastic Container Registry

https://www.youtube.com/watch?v=p2PH_YPCsis&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=13

Docker volumes

host volume:

docker run -v /home/mount/data:/var/lib/mysql/data

anonymous vokume:

docker run -v /var/lib/mysql/data

named volumes:

docker run -v name:/var/lib/mysql/data

https://www.youtube.com/watch?v=SBUCYJgg4Mk&list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&index=14

volumes demo

https://youtu.be/SBUCYJgg4Mk?list=PLy7NrYWoggjwPggqtFsI_zMAwvG0SqYCb&t=291

mongo, mysql, postgresql


2023-01-22

Автогенераторы двухтактные

 https://www.youtube.com/watch?v=6aQgsc0ktIE

Простой повышающий DC-DC преобразователь на советских деталях } * {A simple DC-DC boost converter






https://www.youtube.com/watch?v=2eHgJ1eca4E
Двухтактный генератор на кт315.Какую мощность можно снять с включением транзисторов в параллель.

2023-01-10

Select properJava collection


 
https://github.com/encapsulin/coreJava/blob/main/src/speedCalc/MainCollections.java

-=start=-
///////////////////////////////
addFirst()class java.util.ArrayDeque1000000: 134 ms 
addFirst()class java.util.ArrayDeque2000000: 107 ms 
addFirst()class java.util.ArrayDeque3000000: 60 ms 
addFirst()class java.util.ArrayDeque4000000: 70 ms 
addFirst()class java.util.ArrayDeque5000000: 105 ms 
removeFirst()class java.util.ArrayDeque: 22 ms 

addFirst()class java.util.LinkedList1000000: 285 ms 
addFirst()class java.util.LinkedList2000000: 38 ms 
addFirst()class java.util.LinkedList3000000: 176 ms 
addFirst()class java.util.LinkedList4000000: 155 ms 
addFirst()class java.util.LinkedList5000000: 152 ms 
removeFirst()class java.util.LinkedList: 85 ms 

addFirst()class java.util.ArrayList50000: 194 ms 
addFirst()class java.util.ArrayList100000: 615 ms 
addFirst()class java.util.ArrayList150000: 1080 ms 
addFirst()class java.util.ArrayList200000: 1509 ms 
addFirst()class java.util.ArrayList250000: 1941 ms 
removeFirst()class java.util.ArrayList: 5289 ms 

///////////////////////////////
addLast()class java.util.ArrayList1000000: 32 ms 
addLast()class java.util.ArrayList2000000: 78 ms 
addLast()class java.util.ArrayList3000000: 25 ms 
addLast()class java.util.ArrayList4000000: 18 ms 
addLast()class java.util.ArrayList5000000: 37 ms 
removeLast()class java.util.ArrayList: 27 ms 

addLast()class java.util.ArrayDeque1000000: 50 ms 
addLast()class java.util.ArrayDeque2000000: 18 ms 
addLast()class java.util.ArrayDeque3000000: 29 ms 
addLast()class java.util.ArrayDeque4000000: 18 ms 
addLast()class java.util.ArrayDeque5000000: 18 ms 
removeLast()class java.util.ArrayDeque: 55 ms 

addLast()class java.util.LinkedList1000000: 157 ms 
addLast()class java.util.LinkedList2000000: 211 ms 
addLast()class java.util.LinkedList3000000: 210 ms 
addLast()class java.util.LinkedList4000000: 15 ms 
addLast()class java.util.LinkedList5000000: 214 ms 
removeLast()class java.util.LinkedList: 86 ms 

///////////////////////////////
addMiddle()class java.util.ArrayList50000: 86 ms 
removeMiddle()class java.util.ArrayList: 89 ms 

addMiddle()class java.util.LinkedList50000: 1480 ms 
removeMiddle()class java.util.LinkedList: 1479 ms 

addMiddle()class java.util.ArrayDeque50000: 16636 ms 
-=stop=-

foxminded
https://youtu.be/IFL7qnRR6YE?t=2070
https://youtu.be/IFL7qnRR6YE?t=5895

2022-12-19

okta oauth2

 https://github.com/okta/okta-spring-boot

Spring Boot Version Compatibility

Okta Spring Boot SDK VersionsCompatible Spring Boot Versions
1.2.x2.1.x
1.4.x2.2.x
1.5.x2.4.x
2.0.x2.4.x
2.1.x2.7.x

2022-11-07

AWS EC2 Amazon Linux

#https://dev.to/viralsangani/be-anonymous-create-your-own-proxy-server-with-aws-ec2-2k63

#1) amazon linux

#2) spot instance (permanent)

#3) key ssh

#4) network group All,ssh,http, https


#!/bin/bash

sudo yum update -y

sudo yum install -y httpd

sudo systemctl start httpd

sudo systemctl enable httpd

cd /var/www/html

sudo sh -c 'echo "hello from $(hostname -f)" > /var/www/html/index.html'


####################

 #If you are using Amazon Linux 2023 (AL2023)

# 1. Install compilation tools and dependencies

sudo dnf groupinstall -y "Development Tools"

sudo dnf install -y asciidoc


# 2. Download and extract the latest Tinyproxy release

cd /tmp

wget https://github.com/tinyproxy/tinyproxy/releases/download/1.11.1/tinyproxy-1.11.1.tar.gz

tar -xzf tinyproxy-1.11.1.tar.gz

cd tinyproxy-1.11.1

./configure --prefix=/usr --sysconfdir=/etc

make

sudo make install


# 4. Create a systemd service file so it can run as a daemon

sudo tee /etc/systemd/system/tinyproxy.service > /dev/null << 'EOF'

[Unit]

Description=Tinyproxy lightweight HTTP proxy

After=network.target


[Service]

Type=simple

ExecStart=/usr/bin/tinyproxy -d -c /etc/tinyproxy/tinyproxy.conf

User=nobody

Group=nobody

Restart=on-failure


[Install]

WantedBy=multi-user.target

EOF


# 5. Create required runtime directory and permissions

sudo mkdir -p /var/run/tinyproxy

sudo chown nobody:nobody /var/run/tinyproxy

#####################

sudo sed -i 's/^Allow 127\.0\.0\.1$/#Allow 127.0.0.1/' /etc/tinyproxy/tinyproxy.conf

sudo sed -i 's/^Allow ::1$/#Allow ::1/' /etc/tinyproxy/tinyproxy.conf


# 6. Enable and start the service

sudo systemctl daemon-reload

sudo systemctl enable --now tinyproxy



#curl -i -x http://YOUR_EC2_PUBLIC_IP:8888 http://ifconfig.me




2022-10-23

AWS Certified Cloud Practitioner Certification Course (CLF-C01)

AWS Certified Cloud Practitioner Training 2020 - Full Course

https://youtu.be/3hLmDS179YE?t=3266 EC2 create witch IAM role to access SSM 

S3 - CloudFront - edge locations

https://youtu.be/3hLmDS179YE?t=6567 AWS Marketplace

AWS Certified Cloud Practitioner Certification Course (CLF-C01) - Pass the Exam!

 https://youtu.be/SOTamWNgDKc?t=14799 AWS toolkit for VSCode


AWS for Startups - Deploying with AWS: https://youtu.be/U3VSJhaC4kc

##############


https://github.com/Mainak99/AWS-Slides

2022-09-15

AWS

 
SIMPLE MONTHLY CALCULATOR

https://www.youtube.com/watch?v=U3VSJhaC4kc

CheatSheet:

EB https://www.youtube.com/watch?v=RrKRN9zRBWs&t=0s


ECS and Fargate 2:54 

X-Rays 3:20 https://www.youtube.com/watch?v=RrKRN9zRBWs&t=0s


Route 53 3:44 https://youtu.be/RrKRN9zRBWs?t=13482



AWS CLI SDK https://youtu.be/RrKRN9zRBWs?t=14652


KMS https://youtu.be/RrKRN9zRBWs?t=15254


Kinesis https://youtu.be/RrKRN9zRBWs?t=17561

Cognito  https://youtu.be/RrKRN9zRBWs?t=15919

SNS  https://youtu.be/RrKRN9zRBWs?t=16378

SQS https://youtu.be/RrKRN9zRBWs?t=17013

https://www.linkedin.com/pulse/sqs-send-receive-delete-messages-nodejs-karandeep-singh-/?trk=articles_directory
var AWS = require('aws-sdk')
var sqs = new AWS.SQS();


// For Standard Queue
exports.handler = async (event) => {
    
    var params = {
      DelaySeconds: 2,
      MessageAttributes: {
        "Author": {
          DataType: "String",
          StringValue: "Karandeep Singh"
        },
      },
      MessageBody: "TEST of the SQS service.",
      QueueUrl: "https://sqs.us-east-1.amazonaws.com/570411717331/MyTestQueue"
    };
    
    let queueRes = await sqs.sendMessage(params).promise();
    const response = {
        statusCode: 200,
        body: queueRes,
    };
    
    return response; 
};.
DynamoDB 5:49 https://www.youtube.com/watch?v=RrKRN9zRBWs&t=21255s



EC2 https://youtu.be/RrKRN9zRBWs?t=25811



VPC https://youtu.be/RrKRN9zRBWs?t=27358



ELB 7:55 https://youtu.be/RrKRN9zRBWs?t=28085



Security Groups https://youtu.be/RrKRN9zRBWs?t=28462


NACLs https://youtu.be/RrKRN9zRBWs?t=28670



IAM 8:35 https://youtu.be/RrKRN9zRBWs?t=32553



CloudFront 9:54 https://youtu.be/RrKRN9zRBWs?t=33694



CloudTrail 9:34 https://youtu.be/RrKRN9zRBWs?t=34481


AWS Quick Starts are collection of pre-built CloudFormation templates 9:42
CloudFormation  10:40 https://youtu.be/RrKRN9zRBWs?t=38487



SAM CLI https://youtu.be/RrKRN9zRBWs?t=38979



CI https://youtu.be/RrKRN9zRBWs?t=39500



CodeCommit https://youtu.be/RrKRN9zRBWs?t=39736


CodeBuild https://youtu.be/RrKRN9zRBWs?t=40786



Docker commands 11:00


part 2
https://youtu.be/eCopK1RoyFM?t=979

https://youtu.be/eCopK1RoyFM?t=1454

RDS 0:30 https://youtu.be/eCopK1RoyFM?t=4000

S3 CheatSheet https://youtu.be/eCopK1RoyFM?t=6728

ElastiCache CS 2:02 https://youtu.be/eCopK1RoyFM?t=7350

Lambda CS https://youtu.be/eCopK1RoyFM?t=8287

API Gateway 2:28 https://youtu.be/eCopK1RoyFM?t=9030

Step Functions CS 3:45 https://youtu.be/eCopK1RoyFM?t=13433


CloudWatch
Developer Associate CS? 3:47







2022-09-03

gitlab

Nana: https://www.youtube.com/watch?v=qP8kir2GUgo

https://www.youtube.com/watch?v=PGyhBwLyK2U 

(https://www.youtube.com/watch?v=8aV5AxJrHDg&list=PLZMWkkQEwOPmGolqJPsAm_4fcBDDc2to_)

image: amazoncorretto:11-alpine-jdk

variables:
UNAME: ${UNAME}
PASSWD: ${PASSWD}
stages: # List of stages for jobs, and their order of execution
- build
- test
- deploy

build-job: # This job runs in the build stage, which runs first.
stage: build
script:
- echo "Compiling the code..."
- java -version
- ./gradlew clean build
- echo $UNAME
- echo ${UNAME}
- echo "Compile complete."
artifacts:
untracked: false
expire_in: 1 days
paths:
# - build
- "build/libs/demo-0.0.1.jar"

unit-test-job: # This job runs in the test stage.
stage: test # It only starts when the job in the build stage completes successfully.
script:
- echo "Running unit tests... This will take about 6 seconds."
- sleep 0
- echo "Code coverage is 90%"
- ls build/libs/demo-0.0.1.jar
- ./gradlew test
- echo $PASSWD

.lint-test-job: # This job also runs in the test stage.
stage: test # It can run at the same time as unit-test-job (in parallel).
script:
- echo "Linting code... This will take about 1 seconds."
- sleep 0
- echo "No lint issues found."

deploy-job: # This job runs in the deploy stage.
when: manual
# rules:
# - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
stage: deploy # It only runs when *both* jobs in the test stage complete successfully.
image:
name: amazon/aws-cli
entrypoint: [""]
environment: production
script:
- echo "Deploying application..."
- echo $CI_COMMIT_MESSAGE > /tmp/CI_COMMIT_MESSAGE
- ls build/libs/demo-0.0.1.jar
- aws --version
- aws s3 cp /tmp/CI_COMMIT_MESSAGE s3://demobucketencaps/CI_COMMIT_MESSAGE
- aws s3 cp build/libs/demo-0.0.1.jar s3://demobucketencaps/demo-0.0.1.jar
- echo "Application successfully deployed."
git reset filename.txt 
git rm --cached filename.txt git delete

git config --global credential.helper 'cache --timeout=604800'

2022-09-01

devops

 .gitlab-ci.yml


https://www.youtube.com/watch?v=PGyhBwLyK2U

AWS Certified Solutions Architect - Associate 2020 

https://www.youtube.com/watch?v=Ia-UEYYR44s

AWS Certified Developer - Associate 2020 

https://www.youtube.com/watch?v=RrKRN9zRBWs

Dockerfile
FROM amazoncorretto:11-alpine-jdk
EXPOSE 8080/tcp
COPY ./build/libs/demo-0.0.1.jar /tmp/
CMD ["java", "-jar", "/tmp/demo-0.0.1.jar"]

#docker build .
#docker images
#docker tag <> demojar
#docker run -p8081:8080 demojar
#docker ps
#docker ports
docker image ls