Chapter 6. Working with Skaffold Container Image Builders and Deployers


$ cd ~/tmp/Effortless-Cloud-Native-App-Development-Using-Skaffold/Chapter06/
$ skaffold run --profile docker


$ kubectl get all
NAME                                    READY   STATUS    RESTARTS   AGE
pod/reactive-web-app-5b79d5bbd7-qltjt   1/1     Running   0          25s

NAME                       TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
service/kubernetes         ClusterIP      10.96.0.1       <none>        443/TCP          4m8s
service/reactive-web-app   LoadBalancer   10.110.214.23   <pending>     8080:32585/TCP   25s

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/reactive-web-app   1/1     1            1           25s

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/reactive-web-app-5b79d5bbd7   1         1         1       25s


$ kubectl get svc
NAME               TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes         ClusterIP      10.96.0.1       <none>        443/TCP          4m33s
reactive-web-app   LoadBalancer   10.110.214.23   <pending>     8080:32585/TCP   50s


// Убеждаемся, что значение профиля установлено
$ echo ${PROFILE}


Если нет


$ export \
    PROFILE=${USER}-minikube


// Перестало отображаться в новых версиях
$ minikube --profile ${PROFILE} service reactive-web-app
|-----------|------------------|-------------|---------------------------|
| NAMESPACE |       NAME       | TARGET PORT |            URL            |
|-----------|------------------|-------------|---------------------------|
| default   | reactive-web-app |        8080 | http://192.168.49.2:32585 |
|-----------|------------------|-------------|---------------------------|
🎉  Opening service default/reactive-web-app in default browser...
👉  http://192.168.49.2:32585



// Но можно
$ minikube --profile ${PROFILE} service --all


$ curl -X GET "http://192.168.49.2:32538/employee" \
  | jq


[
  {
    "id": 1,
    "firstName": "Peter",
    "lastName": "Parker",
    "age": 25,
    "salary": 20000
  },
  {
    "id": 2,
    "firstName": "Tony",
    "lastName": "Stark",
    "age": 30,
    "salary": 40000
  },
  {
    "id": 3,
    "firstName": "Clark",
    "lastName": "Kent",
    "age": 31,
    "salary": 60000
  },
  {
    "id": 4,
    "firstName": "Bruce",
    "lastName": "Wayne",
    "age": 33,
    "salary": 100000
  }
]


$ skaffold delete


Jib and Helm


// Проверка, что проект билдится
// Нет необходимости выполнять
$ ./mvnw package


OK!


$ vi pom.xml


Прописываю подходящую версию библиотеки jib-maven-plugin


<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.1.4</version>


Если протухнет, смотреть здесь:

https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#quickstart


Helm установлен


$ skaffold run --profile jibWithHelm


Generating tags...
 - gcr.io/basic-curve-316617/reactive-web-app-helm -> gcr.io/basic-curve-316617/reactive-web-app-helm:4c4f2c8-dirty
Checking cache...
 - gcr.io/basic-curve-316617/reactive-web-app-helm: Found Locally
Starting test...
Tags used in deployment:
 - gcr.io/basic-curve-316617/reactive-web-app-helm -> gcr.io/basic-curve-316617/reactive-web-app-helm:7b7f64704771899fb746b73432c1b2cca9d5cc2ed818246763847847b4a87122
Starting deploy...
Error: UPGRADE FAILED: YAML parse error on reactive-web-app-helm/templates/deployment.yaml: error converting YAML to JSON: yaml: line 5: did not find expected node content
deploying "reactive-web-app-helm": install: exit status 1


$ vi reactive-web-app-helm/templates/deployment.yaml


Похоже индус забыл выложить файл с нужными параметрами. Не сложно поправить, но пока лень.

Думаю, можно использовать вот это https://github.com/yrashish/Effortless-Cloud-Native-Apps-Development-using-Skaffold/blob/main/Chapter06/k8s/manifest.yaml

Но пока тоже не работает. Имиджи, что в конфигах не удается скачать. “Project not found or deleted”.


Fail!


Kustomize


$ skaffold dev


$ skaffold run --profile=kustomizeBase --default-repo=gcr.io/basic-curve-316617
$ skaffold run --profile=kustomizeProd --default-repo=gcr.io/basic-curve-316617


$ skaffold delete


$ skaffold run --profile=kustomizeDev


Fail!