Posts

Showing posts with the label devops

Minikube — Kubernetes klaster na sopstvenom računaru

Sve dosadašnje Kubernetes lekcije opisuju objekte i komande — ali bez klastera na kom se to isprobava, ostaje teorija. Minikube pravi klaster na tvom računaru za nekoliko minuta, besplatno i bez cloud naloga. Šta ti treba 2 procesorska jezgra, 2 GB slobodne memorije, 20 GB diska Docker, ili neki hipervizor (KVM, VirtualBox) kubectl Ovo su najniži zahtevi. Realno, sa 4 GB dodeljene memorije rad je osetno prijatniji. Minikube, kind ili k3s Alat Kakav je Kada Minikube pun klaster, mnogo dodataka, dashboard učenje i razvoj kind klaster u Docker kontejnerima, vrlo brz automatsko testiranje, CI k3s lagan ali pravi Kubernetes mali produkcijski serveri, IoT Za učenje uzmi Minikube — ima najviše ugrađenih dodataka i najbolje poruke o greškama. Kad ti zatreba da klaster nastane i nestane za deset sekundi u nekom skriptu, pređi na kind. A k3s je jedini od ova tri koji se zaista koristi u produkciji. Instalacija Docker Ako ga još nemaš, prođi lekciju Insta...

kubectl — rad sa Kubernetes klasterom

Kroz dosadašnje Kubernetes lekcije objašnjeni su Pod , Deployment , Service i ostali objekti. kubectl je alat kojim se sve to zaista radi — jedini kanal između tebe i klastera. Svaka komanda ide na API server , koji je onda prosleđuje dalje. Nema drugog puta. Provera veze $ kubectl version --client $ kubectl cluster-info $ kubectl get nodes NAME STATUS ROLES AGE VERSION master01 Ready control-plane 42d v1.30.2 worker01 Ready <none> 42d v1.30.2 worker02 Ready <none> 42d v1.30.2 Ako ovo radi, klaster te prepoznaje. Ako dobiješ connection refused , problem je u konfiguraciji — o tome pri kraju teksta. Struktura komande kubectl [radnja] [tip] [ime] [opcije] kubectl get pods kubectl describe pod web-abc123 kubectl delete deployment web Tipovi objekata imaju kratke oblike, što štedi dosta kucanja: Pun naziv Skraćeno pods po deployments deploy services svc namespaces ns configmaps...

docker compose — više kontejnera odjednom

Aplikacija retko radi sama. Uz nju ide baza, možda Redis, možda reverse proxy. Sa docker run to znači tri duge komande, ručno pravljenje mreže i pamćenje redosleda pokretanja. Compose sve to opisuje u jednom fajlu. Jedna komanda diže ceo sklop, jedna ga ruši. docker-compose ili docker compose Stariji alat je bio zaseban program pisan u Pythonu i zvao se docker-compose , sa crticom. Danas je Compose ugrađen u Docker kao poddomanda — docker compose , sa razmakom. $ docker compose version Docker Compose version v2.29.1 Ako ti to ne radi, instaliraj dodatak: # dnf install -y docker-compose-plugin Fajl se danas zove compose.yaml . Staro ime docker-compose.yml i dalje radi i videćeš ga svuda. Prvi compose fajl $ mkdir moj-sajt && cd moj-sajt $ vi compose.yaml services: web: image: nginx:1.25-alpine ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html:ro $ mkdir html $ echo "<h1>Radi!</h1>" ...

Dockerfile i docker build — pravljenje sopstvenog image-a

Do sada si u Dockeru koristio tuđe image-e — povukao docker pull -om i pokrenuo docker run -om. Da bi spakovao svoju aplikaciju, treba ti sopstveni image. Dockerfile je tekstualni fajl sa uputstvom kako se image pravi. Komanda docker build to uputstvo izvršava i pravi image. Zašto ne docker commit Image se može napraviti i tako što uđeš u kontejner, ručno instaliraš šta ti treba i sačuvaš stanje sa docker commit . Radi — ali niko ne zna šta je unutra, ne može se ponoviti, i ne može se držati u Git-u. Dockerfile je recept: čitljiv, verzionisan i ponovljiv. Svako ko ga ima dobija identičan image. Prvi Dockerfile Napravi direktorijum i u njemu fajl imena Dockerfile — bez ekstenzije, sa velikim D: $ mkdir moja-app && cd moja-app $ vi Dockerfile FROM rockylinux:9 RUN dnf install -y httpd && dnf clean all COPY index.html /var/www/html/ EXPOSE 80 CMD ["httpd", "-D", "FOREGROUND"] Napravi i index.html : <h1>Radi...