Uruchomienie aplikacji

Jak skonfigurować i uruchomić aplikację z obrazów Dockera w klastrze OKS

Na tej stronie przejdziemy przez przykład tego jak za pomocą kubectl i pobranego pliku kubeconfig skonfigurować w klastrze działającą aplikację Hello World.

Uruchomienie deploymentu

Do uruchomienia aplikacji potrzebujemy obrazów kontenerów w rejestrze dostępnym dla klastra. W tym przykładzie posłużymy się publicznym rejestrem i uruchomimy w klastrze Wordpressa.

Pierwszym krokiem jest definicja poszczególnych deploymentów MySQLa i Wordpressa:

oks-mysql.yaml
# dodatkowa definicja serwisu MySQLa wewnątrz klastra
apiVersion: v1
kind: Service
metadata:
name: hello-wordpress-mysql
labels:
app: hello-wordpress
spec:
ports:
- port: 3306
selector:
app: hello-wordpress
clusterIP: None
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-wordpress-mysql
labels:
app: hello-wordpress
spec:
selector:
matchLabels:
app: hello-wordpress
strategy:
type: Recreate
template:
metadata:
labels:
app: hello-wordpress
spec:
containers:
- image: mysql:5.6
name: hello-mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: YOUR_MYSQL_PASSWORD
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: hello-mysql-pv
mountPath: /var/lib/mysql
volumes:
- name: hello-mysql-pv
persistentVolumeClaim:
claimName: hello-mysql-pvc
oks-wordpress.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-wordpress
labels:
app: hello-wordpress
spec:
selector:
matchLabels:
app: hello-wordpress
strategy:
type: Recreate
template:
metadata:
labels:
app: hello-wordpress
spec:
containers:
- image: wordpress:4.8-apache
name: hello-wordpress
env:
- name: WORDPRESS_DB_HOST
value: hello-wordpress-mysql
- name: WORDPRESS_DB_PASSWORD
value: YOUR_MYSQL_PASSWORD
ports:
- containerPort: 80
name: hello-wordpress
volumeMounts:
- name: hello-wordpress-pv
mountPath: /var/www/html
volumes:
- name: hello-wordpress-pv
persistentVolumeClaim:
claimName: hello-wordpress-pvc

Tak przygotowane pliki aplikujemy do klastra komendami:

$ kubectl apply -f oks-mysql.yaml
$ kubectl apply -f oks-wordpress.yaml

Klaster pobierze obrazy i utworzy deploymenty oraz pody aplikacji.

W tym wypadku aplikacja jeszcze nie uruchomi się prawidłowo bo definicja obu deploymentów oczekuje PersistentVolumeClaim oraz Service.

Przejdź do Load Balancer i Storage aby uzupełnić brakującą konfigurację.

Weryfikacja działania aplikacji

Po zdefiniowaniu deploymentów (i podów), load balancera, storage'u i wewnętrznych serwisów klastra aplikacja zostanie uruchomiona.

Pierwszą weryfikacją jej działania jest sprawdzenie czy pody są aktywne:

$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-wordpress-7f566c5d66-8mmhr 1/1 Running 0 91s
hello-wordpress-mysql-b69bfd6d-6dpzh 1/1 Running 0 95s

Po kilku minutach od uruchomienia kontenerów powinny one zostać zainicjalizowane. Można wtedy przejść w przeglądarce pod adres IP nadany Load Balancerowi (hello-wordpress-lb), aby zobaczyć ekran powitalny Wordpressa:

$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-wordpress-lb LoadBalancer 10.110.222.198 195.149.198.165 80:31237/TCP 118s
hello-wordpress-mysql ClusterIP None <none> 3306/TCP 2m3s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9d