ಕುಬರ್ನೆಟ್ಸ್ ಸಲಹೆಗಳು ಮತ್ತು ತಂತ್ರಗಳು: ಸ್ಥಳೀಯ ಅಭಿವೃದ್ಧಿ ಮತ್ತು ಟೆಲಿಪ್ರೆಸೆನ್ಸ್ ಬಗ್ಗೆ

ಕುಬರ್ನೆಟ್ಸ್ ಸಲಹೆಗಳು ಮತ್ತು ತಂತ್ರಗಳು: ಸ್ಥಳೀಯ ಅಭಿವೃದ್ಧಿ ಮತ್ತು ಟೆಲಿಪ್ರೆಸೆನ್ಸ್ ಬಗ್ಗೆ

ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ ಮೈಕ್ರೊ ಸರ್ವೀಸ್‌ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವ ಕುರಿತು ನಮ್ಮನ್ನು ಹೆಚ್ಚು ಕೇಳಲಾಗುತ್ತದೆ. ಡೆವಲಪರ್‌ಗಳು, ವಿಶೇಷವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಭಾಷೆಗಳು, ತಮ್ಮ ನೆಚ್ಚಿನ IDE ಯಲ್ಲಿ ಕೋಡ್ ಅನ್ನು ತ್ವರಿತವಾಗಿ ಸರಿಪಡಿಸಲು ಬಯಸುತ್ತಾರೆ ಮತ್ತು ಬಿಲ್ಡ್/ನಿಯೋಜನೆಗಾಗಿ ಕಾಯದೆ ಫಲಿತಾಂಶವನ್ನು ನೋಡಲು ಬಯಸುತ್ತಾರೆ - ಸರಳವಾಗಿ F5 ಅನ್ನು ಒತ್ತುವ ಮೂಲಕ. ಮತ್ತು ಇದು ಏಕಶಿಲೆಯ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಬಂದಾಗ, ಸ್ಥಳೀಯವಾಗಿ ಡೇಟಾಬೇಸ್ ಮತ್ತು ವೆಬ್ ಸರ್ವರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಲು ಸಾಕು (ಡಾಕರ್, ವರ್ಚುವಲ್ಬಾಕ್ಸ್ನಲ್ಲಿ ...), ಮತ್ತು ನಂತರ ತಕ್ಷಣವೇ ಅಭಿವೃದ್ಧಿಯನ್ನು ಆನಂದಿಸಿ. ಏಕಶಿಲೆಗಳನ್ನು ಸೂಕ್ಷ್ಮ ಸೇವೆಗಳಾಗಿ ಕತ್ತರಿಸುವುದರೊಂದಿಗೆ ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್ ಆಗಮನದೊಂದಿಗೆ, ಪರಸ್ಪರ ಅವಲಂಬನೆಗಳ ಗೋಚರಿಸುವಿಕೆಯೊಂದಿಗೆ, ಎಲ್ಲವೂ ಇದು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಕಷ್ಟಕರವಾಯಿತು. ಈ ಮೈಕ್ರೊ ಸರ್ವೀಸ್‌ಗಳು ಹೆಚ್ಚು, ಹೆಚ್ಚು ಸಮಸ್ಯೆಗಳು. ಮತ್ತೆ ಅಭಿವೃದ್ಧಿಯನ್ನು ಆನಂದಿಸಲು, ನೀವು ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಅಥವಾ ಎರಡು ಡಾಕರ್ ಕಂಟೇನರ್‌ಗಳನ್ನು ಸಂಗ್ರಹಿಸಬೇಕಾಗುತ್ತದೆ, ಮತ್ತು ಕೆಲವೊಮ್ಮೆ ಒಂದು ಡಜನ್‌ಗಿಂತಲೂ ಹೆಚ್ಚು... ಸಾಮಾನ್ಯವಾಗಿ, ಇದೆಲ್ಲವೂ ಸಾಕಷ್ಟು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಬಹುದು, ಏಕೆಂದರೆ ಇದು ನವೀಕೃತವಾಗಿರಬೇಕಾಗುತ್ತದೆ. .

ವಿಭಿನ್ನ ಸಮಯಗಳಲ್ಲಿ ನಾವು ಸಮಸ್ಯೆಗೆ ವಿಭಿನ್ನ ಪರಿಹಾರಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿದ್ದೇವೆ. ಮತ್ತು ನಾನು ಸಂಚಿತ ಪರಿಹಾರಗಳೊಂದಿಗೆ ಅಥವಾ ಸರಳವಾಗಿ "ಊರುಗೋಲು" ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸುತ್ತೇನೆ.

1. ಊರುಗೋಲುಗಳು

ಹೆಚ್ಚಿನ IDE ಗಳು FTP/SFTP ಬಳಸಿಕೊಂಡು ಸರ್ವರ್‌ನಲ್ಲಿ ಕೋಡ್ ಅನ್ನು ನೇರವಾಗಿ ಸಂಪಾದಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಹೊಂದಿವೆ. ಈ ಮಾರ್ಗವು ತುಂಬಾ ಸ್ಪಷ್ಟವಾಗಿದೆ ಮತ್ತು ನಾವು ತಕ್ಷಣ ಅದನ್ನು ಬಳಸಲು ನಿರ್ಧರಿಸಿದ್ದೇವೆ. ಇದರ ಸಾರವು ಈ ಕೆಳಗಿನವುಗಳಿಗೆ ಕುದಿಯುತ್ತದೆ:

  1. ಡೆವಲಪ್‌ಮೆಂಟ್ ಪರಿಸರಗಳ ಪಾಡ್‌ನಲ್ಲಿ (dev/review), SSH ಪ್ರವೇಶದೊಂದಿಗೆ ಹೆಚ್ಚುವರಿ ಕಂಟೇನರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಒಪ್ಪಿಸುವ/ನಿಯೋಜನೆ ಮಾಡುವ ಡೆವಲಪರ್‌ನ ಸಾರ್ವಜನಿಕ SSH ಕೀಯನ್ನು ಫಾರ್ವರ್ಡ್ ಮಾಡುತ್ತದೆ.
  2. ಇನಿಟ್ ಹಂತದಲ್ಲಿ (ಧಾರಕದಲ್ಲಿ prepare-app) ಗೆ ಕೋಡ್ ಅನ್ನು ವರ್ಗಾಯಿಸಿ emptyDirಅಪ್ಲಿಕೇಶನ್ ಕಂಟೈನರ್‌ಗಳು ಮತ್ತು SSH ಸರ್ವರ್‌ನಿಂದ ಕೋಡ್‌ಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಲು.

ಕುಬರ್ನೆಟ್ಸ್ ಸಲಹೆಗಳು ಮತ್ತು ತಂತ್ರಗಳು: ಸ್ಥಳೀಯ ಅಭಿವೃದ್ಧಿ ಮತ್ತು ಟೆಲಿಪ್ರೆಸೆನ್ಸ್ ಬಗ್ಗೆ

ಅಂತಹ ಯೋಜನೆಯ ತಾಂತ್ರಿಕ ಅನುಷ್ಠಾನವನ್ನು ಚೆನ್ನಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, ನಾನು ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ ಒಳಗೊಂಡಿರುವ YAML ಕಾನ್ಫಿಗರೇಶನ್‌ಗಳ ತುಣುಕುಗಳನ್ನು ಒದಗಿಸುತ್ತೇನೆ.

ಸಂರಚನೆಗಳು

1.1. ಮೌಲ್ಯಗಳು.ಯಾಮ್ಲ್

ssh_pub_key:
  vasya.pupkin: <ssh public key in base64> 

ಇದು vasya.pupkin ವೇರಿಯಬಲ್ ಮೌಲ್ಯವಾಗಿದೆ ${GITLAB_USER_LOGIN}.

1.2. deployment.yaml

...
{{ if eq .Values.global.debug "yes" }}
      volumes:
      - name: ssh-pub-key
        secret:
          defaultMode: 0600
          secretName: {{ .Chart.Name }}-ssh-pub-key
      - name: app-data
        emptyDir: {}
      initContainers:
      - name: prepare-app
{{ tuple "backend" . | include "werf_container_image" | indent 8 }}
        volumeMounts:
        - name: app-data
          mountPath: /app-data
        command: ["bash", "-c", "cp -ar /app/* /app-data/" ]
{{ end }}
      containers:
{{ if eq .Values.global.debug "yes" }}
      - name: ssh
        image: corbinu/ssh-server
        volumeMounts:
        - name: ssh-pub-key
          readOnly: true
          mountPath: /root/.ssh/authorized_keys
          subPath: authorized_keys
        - name: app-data
          mountPath: /app
        ports:
        - name: ssh
          containerPort: 22
          protocol: TCP
{{ end }}
      - name: backend
        volumeMounts:
{{ if eq .Values.global.debug "yes" }}
        - name: app-data
          mountPath: /app
{{ end }}
        command: ["/usr/sbin/php-fpm7.2", "--fpm-config", "/etc/php/7.2/php-fpm.conf", "-F"]
...

1.3 ರಹಸ್ಯ.ಯಾಮ್ಲ್

{{ if eq .Values.global.debug "yes" }}
apiVersion: v1
kind: Secret
metadata:
  name: {{ .Chart.Name }}-ssh-pub-key
type: Opaque
data:
  authorized_keys: "{{ first (pluck .Values.global.username .Values.ssh_pub_key) }}"
{{ end }}

ಅಂತಿಮ ಟಚ್

ಅದರ ನಂತರ ವರ್ಗಾವಣೆ ಮಾತ್ರ ಉಳಿದಿದೆ ಅಗತ್ಯವಿರುವ gitlab-ci.yml ಅಸ್ಥಿರ:

dev:
  stage: deploy
  script:
   - type multiwerf && source <(multiwerf use 1.0 beta)
   - type werf && source <(werf ci-env gitlab --tagging-strategy tag-or-branch --verbose)
   - werf deploy
     --namespace ${CI_PROJECT_NAME}-stage
     --set "global.env=stage"
     --set "global.git_rev=${CI_COMMIT_SHA}"
     --set "global.debug=yes"
     --set "global.username=${GITLAB_USER_LOGIN}"
 tags:
   - build

Voila: ನಿಯೋಜನೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿದ ಡೆವಲಪರ್ ಸೇವೆಯ ಹೆಸರಿನ ಮೂಲಕ ಸಂಪರ್ಕಿಸಬಹುದು (ಕ್ಲಸ್ಟರ್‌ಗೆ ಸುರಕ್ಷಿತವಾಗಿ ಪ್ರವೇಶವನ್ನು ಹೇಗೆ ನೀಡುವುದು, ನಾವು ಈಗಾಗಲೇ ಹೇಳಿದ್ದೇವೆ) ನಿಮ್ಮ ಡೆಸ್ಕ್‌ಟಾಪ್‌ನಿಂದ SFTP ಮೂಲಕ ಮತ್ತು ಕೋಡ್ ಅನ್ನು ಕ್ಲಸ್ಟರ್‌ಗೆ ತಲುಪಿಸಲು ಕಾಯದೆ ಅದನ್ನು ಸಂಪಾದಿಸಿ.

ಇದು ಸಂಪೂರ್ಣವಾಗಿ ಕೆಲಸ ಮಾಡುವ ಪರಿಹಾರವಾಗಿದೆ, ಆದರೆ ಅನುಷ್ಠಾನದ ದೃಷ್ಟಿಕೋನದಿಂದ ಇದು ಸ್ಪಷ್ಟ ಅನಾನುಕೂಲಗಳನ್ನು ಹೊಂದಿದೆ:

  • ಹೆಲ್ಮ್ ಚಾರ್ಟ್ ಅನ್ನು ಸಂಸ್ಕರಿಸುವ ಅಗತ್ಯತೆ, ಇದು ಭವಿಷ್ಯದಲ್ಲಿ ಓದಲು ಕಷ್ಟವಾಗುತ್ತದೆ;
  • ಸೇವೆಯನ್ನು ನಿಯೋಜಿಸಿದ ವ್ಯಕ್ತಿಯಿಂದ ಮಾತ್ರ ಬಳಸಬಹುದು;
  • ನಂತರ ಅದನ್ನು ಸ್ಥಳೀಯ ಡೈರೆಕ್ಟರಿಯೊಂದಿಗೆ ಕೋಡ್‌ನೊಂದಿಗೆ ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡಲು ಮತ್ತು ಅದನ್ನು Git ಗೆ ಒಪ್ಪಿಸಲು ನೀವು ನೆನಪಿಟ್ಟುಕೊಳ್ಳಬೇಕು.

2. ಟೆಲಿಪ್ರೆಸೆನ್ಸ್

ಯೋಜನೆಯು ಟೆಲಿಪ್ರೆಸೆನ್ಸ್ ಬಹಳ ಸಮಯದಿಂದ ತಿಳಿದುಬಂದಿದೆ, ಆದರೆ ನಾವು, ಅವರು ಹೇಳಿದಂತೆ, "ಅದನ್ನು ಪ್ರಾಯೋಗಿಕವಾಗಿ ಗಂಭೀರವಾಗಿ ಪ್ರಯತ್ನಿಸಲು ಬರಲಿಲ್ಲ." ಆದಾಗ್ಯೂ, ಬೇಡಿಕೆಯು ತನ್ನ ಕೆಲಸವನ್ನು ಮಾಡಿದೆ ಮತ್ತು ಈಗ ನಮ್ಮ ಅನುಭವವನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ನಾವು ಸಂತೋಷಪಡುತ್ತೇವೆ, ಇದು ನಮ್ಮ ಬ್ಲಾಗ್‌ನ ಓದುಗರಿಗೆ ಉಪಯುಕ್ತವಾಗಬಹುದು - ವಿಶೇಷವಾಗಿ ಹಬ್‌ನಲ್ಲಿ ಟೆಲಿಪ್ರೆಸೆನ್ಸ್ ಕುರಿತು ಯಾವುದೇ ಇತರ ವಸ್ತುಗಳು ಇನ್ನೂ ಇರಲಿಲ್ಲ.

ಸಂಕ್ಷಿಪ್ತವಾಗಿ, ಎಲ್ಲವೂ ತುಂಬಾ ಭಯಾನಕವಲ್ಲ ಎಂದು ಬದಲಾಯಿತು. ಡೆವಲಪರ್‌ನ ಕಡೆಯಿಂದ ಮರಣದಂಡನೆ ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಕ್ರಿಯೆಗಳನ್ನು ನಾವು ಹೆಲ್ಮ್ ಚಾರ್ಟ್ ಪಠ್ಯ ಫೈಲ್‌ನಲ್ಲಿ ಇರಿಸಿದ್ದೇವೆ NOTES.txt. ಹೀಗಾಗಿ, ಸೇವೆಯನ್ನು ಕುಬರ್ನೆಟ್ಸ್‌ಗೆ ನಿಯೋಜಿಸಿದ ನಂತರ, ಡೆವಲಪರ್‌ಗಳು GitLab ಉದ್ಯೋಗ ಲಾಗ್‌ನಲ್ಲಿ ಸ್ಥಳೀಯ ದೇವ್ ಪರಿಸರವನ್ನು ಪ್ರಾರಂಭಿಸಲು ಸೂಚನೆಗಳನ್ನು ನೋಡುತ್ತಾರೆ:

!!! Разработка сервиса локально, в составе Kubernetes !!!

* Настройка окружения
* * Должен быть доступ до кластера через VPN
* * На локальном ПК установлен kubectl ( https://kubernetes.io/docs/tasks/tools/install-kubectl/ )
* * Получить config-файл для kubectl (скопировать в ~/.kube/config)
* * На локальном ПК установлен telepresence ( https://www.telepresence.io/reference/install )
* * Должен быть установлен Docker
* * Необходим доступ уровня reporter или выше к репозиторию https://gitlab.site.com/group/app
* * Необходимо залогинится в registry с логином/паролем от GitLab (делается один раз):

#########################################################################
docker login registry.site.com
#########################################################################

* Запуск окружения

#########################################################################
telepresence --namespace {{ .Values.global.env }} --swap-deployment {{ .Chart.Name  }}:backend --mount=/tmp/app --docker-run -v `pwd`:/app -v /tmp/app/var/run/secrets:/var/run/secrets -ti registry.site.com/group/app/backend:v8
#########################################################################

ಈ ಸೂಚನೆಯಲ್ಲಿ ವಿವರಿಸಿದ ಹಂತಗಳಲ್ಲಿ ನಾವು ವಿವರವಾಗಿ ವಾಸಿಸುವುದಿಲ್ಲ ... ಕೊನೆಯದನ್ನು ಹೊರತುಪಡಿಸಿ. ಟೆಲಿಪ್ರೆಸೆನ್ಸ್ ಪ್ರಾರಂಭದ ಸಮಯದಲ್ಲಿ ಏನಾಗುತ್ತದೆ?

ಟೆಲಿಪ್ರೆಸೆನ್ಸ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲಾಗುತ್ತಿದೆ

ಪ್ರಾರಂಭದಲ್ಲಿ (ಮೇಲಿನ ಸೂಚನೆಗಳಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಕೊನೆಯ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ), ನಾವು ಹೊಂದಿಸುತ್ತೇವೆ:

  • ಮೈಕ್ರೋ ಸರ್ವಿಸ್ ಚಾಲನೆಯಲ್ಲಿರುವ ನೇಮ್‌ಸ್ಪೇಸ್;
  • ನಾವು ಭೇದಿಸಲು ಬಯಸುವ ನಿಯೋಜನೆ ಮತ್ತು ಕಂಟೇನರ್‌ನ ಹೆಸರುಗಳು.

ಉಳಿದ ವಾದಗಳು ಐಚ್ಛಿಕ. ನಮ್ಮ ಸೇವೆಯು ಕುಬರ್ನೆಟ್ಸ್ API ನೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಿದರೆ ಸೇವಾ ಖಾತೆಯನ್ನು ರಚಿಸಲಾಗಿದೆ, ನಾವು ನಮ್ಮ ಡೆಸ್ಕ್‌ಟಾಪ್‌ನಲ್ಲಿ ಪ್ರಮಾಣಪತ್ರಗಳು/ಟೋಕನ್‌ಗಳನ್ನು ಆರೋಹಿಸಬೇಕಾಗಿದೆ. ಇದನ್ನು ಮಾಡಲು, ಆಯ್ಕೆಯನ್ನು ಬಳಸಿ --mount=true (ಅಥವಾ --mount=/dst_path), ಇದು ಕುಬರ್ನೆಟ್ಸ್ ಕಂಟೇನರ್‌ನಿಂದ ನಮ್ಮ ಡೆಸ್ಕ್‌ಟಾಪ್‌ಗೆ ರೂಟ್ (/) ಅನ್ನು ಆರೋಹಿಸುತ್ತದೆ. ಇದರ ನಂತರ, ನಾವು (OS ಅನ್ನು ಅವಲಂಬಿಸಿ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಹೇಗೆ ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ) ಕ್ಲಸ್ಟರ್ನಿಂದ "ಕೀಗಳನ್ನು" ಬಳಸಬಹುದು.

ಮೊದಲಿಗೆ, ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಚಲಾಯಿಸಲು ಸಾರ್ವತ್ರಿಕ ಆಯ್ಕೆಯನ್ನು ನೋಡೋಣ - ಡಾಕರ್ ಕಂಟೇನರ್ನಲ್ಲಿ. ಇದನ್ನು ಮಾಡಲು ನಾವು ಕೀಲಿಯನ್ನು ಬಳಸುತ್ತೇವೆ --docker-run ಮತ್ತು ಕೋಡ್‌ನೊಂದಿಗೆ ಡೈರೆಕ್ಟರಿಯನ್ನು ಕಂಟೇನರ್‌ಗೆ ಆರೋಹಿಸಿ: -v `pwd`:/app

ಇದು ಪ್ರಾಜೆಕ್ಟ್ ಡೈರೆಕ್ಟರಿಯಿಂದ ಚಾಲನೆಯಲ್ಲಿದೆ ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಅಪ್ಲಿಕೇಶನ್ ಕೋಡ್ ಅನ್ನು ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಜೋಡಿಸಲಾಗುತ್ತದೆ /app ಒಂದು ಪಾತ್ರೆಯಲ್ಲಿ.

ಮುಂದೆ: -v /tmp/app/var/run/secrets:/var/run/secrets - ಪ್ರಮಾಣಪತ್ರ/ಟೋಕನ್‌ನೊಂದಿಗೆ ಡೈರೆಕ್ಟರಿಯನ್ನು ಕಂಟೇನರ್‌ಗೆ ಆರೋಹಿಸಲು.

ಈ ಆಯ್ಕೆಯು ಅಂತಿಮವಾಗಿ ಅಪ್ಲಿಕೇಶನ್ ರನ್ ಆಗುವ ಚಿತ್ರದಿಂದ ಅನುಸರಿಸುತ್ತದೆ. NB: ಚಿತ್ರವನ್ನು ನಿರ್ಮಿಸುವಾಗ, ನೀವು ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕು CMD ಅಥವಾ ENTRYPOINT!

ಮುಂದೆ ನಿಖರವಾಗಿ ಏನಾಗುತ್ತದೆ?

  • ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ, ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ನಿಯೋಜನೆಗಾಗಿ, ಪ್ರತಿಕೃತಿಗಳ ಸಂಖ್ಯೆಯನ್ನು 0 ಗೆ ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ. ಬದಲಿಗೆ, ಹೊಸ ನಿಯೋಜನೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತದೆ - ಬದಲಿ ಕಂಟೇನರ್‌ನೊಂದಿಗೆ backend.
  • ಡೆಸ್ಕ್‌ಟಾಪ್‌ನಲ್ಲಿ 2 ಕಂಟೈನರ್‌ಗಳು ಪ್ರಾರಂಭವಾಗುತ್ತವೆ: ಮೊದಲನೆಯದು ಟೆಲಿಪ್ರೆಸೆನ್ಸ್‌ನೊಂದಿಗೆ (ಇದು ಕುಬರ್ನೆಟ್ಸ್‌ನಿಂದ/ಗೆ ವಿನಂತಿಗಳನ್ನು ಪ್ರಾಕ್ಸಿ ಮಾಡುತ್ತದೆ), ಎರಡನೆಯದು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವುದರೊಂದಿಗೆ.
  • ನಾವು ಅಪ್ಲಿಕೇಶನ್‌ನೊಂದಿಗೆ ಕಂಟೇನರ್‌ಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಿದರೆ, ನಿಯೋಜನೆಯ ಸಮಯದಲ್ಲಿ ಹೆಲ್ಮ್‌ನಿಂದ ವರ್ಗಾಯಿಸಲಾದ ಎಲ್ಲಾ ENV ವೇರಿಯೇಬಲ್‌ಗಳು ನಮಗೆ ಲಭ್ಯವಿರುತ್ತವೆ ಮತ್ತು ಎಲ್ಲಾ ಸೇವೆಗಳು ಸಹ ಲಭ್ಯವಿರುತ್ತವೆ. ನಿಮ್ಮ ಮೆಚ್ಚಿನ IDE ಯಲ್ಲಿ ಕೋಡ್ ಅನ್ನು ಸಂಪಾದಿಸಲು ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು ಆನಂದಿಸಲು ಮಾತ್ರ ಉಳಿದಿದೆ.
  • ಕೆಲಸದ ಕೊನೆಯಲ್ಲಿ, ನೀವು ಟೆಲಿಪ್ರೆಸೆನ್ಸ್ ಚಾಲನೆಯಲ್ಲಿರುವ ಟರ್ಮಿನಲ್ ಅನ್ನು ಮುಚ್ಚಬೇಕಾಗಿದೆ (Ctrl + C ನೊಂದಿಗೆ ಅಧಿವೇಶನವನ್ನು ಕೊನೆಗೊಳಿಸಿ) - ಡಾಕರ್ ಕಂಟೇನರ್‌ಗಳು ಡೆಸ್ಕ್‌ಟಾಪ್‌ನಲ್ಲಿ ನಿಲ್ಲುತ್ತವೆ ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ ಎಲ್ಲವೂ ಅದರ ಆರಂಭಿಕ ಸ್ಥಿತಿಗೆ ಮರಳುತ್ತದೆ. ಬದ್ಧತೆ, MR ಅನ್ನು ನೀಡುವುದು ಮತ್ತು ಅದನ್ನು ವಿಮರ್ಶೆ/ವಿಲೀನಗೊಳಿಸುವಿಕೆ/... (ನಿಮ್ಮ ಕೆಲಸದ ಹರಿವಿನ ಆಧಾರದ ಮೇಲೆ) ವರ್ಗಾಯಿಸುವುದು ಮಾತ್ರ ಉಳಿದಿದೆ.

ನಾವು ಡಾಕರ್ ಕಂಟೇನರ್‌ನಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಚಲಾಯಿಸಲು ಬಯಸದಿದ್ದರೆ - ಉದಾಹರಣೆಗೆ, ನಾವು PHP ನಲ್ಲಿ ಅಲ್ಲ, ಆದರೆ Go ನಲ್ಲಿ ಅಭಿವೃದ್ಧಿಪಡಿಸುತ್ತೇವೆ ಮತ್ತು ಅದನ್ನು ಇನ್ನೂ ಸ್ಥಳೀಯವಾಗಿ ನಿರ್ಮಿಸುತ್ತೇವೆ - ಟೆಲಿಪ್ರೆಸೆನ್ಸ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುವುದು ಇನ್ನೂ ಸರಳವಾಗಿದೆ:

telepresence --namespace {{ .Values.global.env }} --swap-deployment {{ .Chart.Name  }}:backend --mount=true

ಅಪ್ಲಿಕೇಶನ್ ಕುಬರ್ನೆಟ್ಸ್ API ಅನ್ನು ಪ್ರವೇಶಿಸಿದರೆ, ನೀವು ಕೀಗಳ ಡೈರೆಕ್ಟರಿಯನ್ನು (https://www.telepresence.io/howto/volumes) ಮೌಂಟ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ. Linux ಗಾಗಿ ಒಂದು ಉಪಯುಕ್ತತೆ ಇದೆ ಬೇರು:

proot -b $TELEPRESENCE_ROOT/var/run/secrets/:/var/run/secrets bash

ಆಯ್ಕೆಯಿಲ್ಲದೆ ಟೆಲಿಪ್ರೆಸೆನ್ಸ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿದ ನಂತರ --docker-run ಎಲ್ಲಾ ಪರಿಸರ ವೇರಿಯಬಲ್‌ಗಳು ಪ್ರಸ್ತುತ ಟರ್ಮಿನಲ್‌ನಲ್ಲಿ ಲಭ್ಯವಿರುತ್ತವೆ, ಆದ್ದರಿಂದ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅದರಲ್ಲಿ ಪ್ರಾರಂಭಿಸಬೇಕು.

NB: ಬಳಸುವಾಗ, ಉದಾಹರಣೆಗೆ, PHP, ಅಭಿವೃದ್ಧಿಗಾಗಿ ವಿವಿಧ op_cache, apc ಮತ್ತು ಇತರ ವೇಗವರ್ಧಕಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ನೀವು ನೆನಪಿನಲ್ಲಿಟ್ಟುಕೊಳ್ಳಬೇಕು - ಇಲ್ಲದಿದ್ದರೆ ಕೋಡ್ ಅನ್ನು ಸಂಪಾದಿಸುವುದು ಬಯಸಿದ ಫಲಿತಾಂಶಕ್ಕೆ ಕಾರಣವಾಗುವುದಿಲ್ಲ.

ಫಲಿತಾಂಶಗಳು

ಕುಬರ್ನೆಟ್ಸ್‌ನೊಂದಿಗಿನ ಸ್ಥಳೀಯ ಅಭಿವೃದ್ಧಿಯು ಈ ವೇದಿಕೆಯ ಹರಡುವಿಕೆಗೆ ಅನುಗುಣವಾಗಿ ಅದರ ಪರಿಹಾರವು ಬೆಳೆಯುತ್ತಿರುವ ಸಮಸ್ಯೆಯಾಗಿದೆ. ಡೆವಲಪರ್‌ಗಳಿಂದ (ನಮ್ಮ ಕ್ಲೈಂಟ್‌ಗಳಿಂದ) ಸಂಬಂಧಿತ ವಿನಂತಿಗಳನ್ನು ಸ್ವೀಕರಿಸಿ, ನಾವು ಲಭ್ಯವಿರುವ ಮೊದಲ ವಿಧಾನಗಳೊಂದಿಗೆ ಅವುಗಳನ್ನು ಪರಿಹರಿಸಲು ಪ್ರಾರಂಭಿಸಿದ್ದೇವೆ, ಆದಾಗ್ಯೂ, ದೀರ್ಘಾವಧಿಯಲ್ಲಿ ತಮ್ಮನ್ನು ತಾವು ಸಾಬೀತುಪಡಿಸಲಿಲ್ಲ. ಅದೃಷ್ಟವಶಾತ್, ಇದು ಈಗ ಮಾತ್ರವಲ್ಲ ಮತ್ತು ನಮಗೆ ಮಾತ್ರವಲ್ಲದೆ ಸ್ಪಷ್ಟವಾಗಿದೆ, ಆದ್ದರಿಂದ ಹೆಚ್ಚು ಸೂಕ್ತವಾದ ವಿಧಾನಗಳು ಈಗಾಗಲೇ ಜಗತ್ತಿನಲ್ಲಿ ಕಾಣಿಸಿಕೊಂಡಿವೆ ಮತ್ತು ಟೆಲಿಪ್ರೆಸೆನ್ಸ್ ಅವುಗಳಲ್ಲಿ ಅತ್ಯಂತ ಪ್ರಸಿದ್ಧವಾಗಿದೆ (ಮೂಲಕ, ಸಹ ಇದೆ ಸ್ಕ್ಯಾಫೋಲ್ಡ್ Google ನಿಂದ). ಅದನ್ನು ಬಳಸುವ ನಮ್ಮ ಅನುಭವವು ಇನ್ನೂ ಉತ್ತಮವಾಗಿಲ್ಲ, ಆದರೆ ಅದನ್ನು ನಮ್ಮ “ಅಂಗಡಿಯಲ್ಲಿರುವ ಸಹೋದ್ಯೋಗಿಗಳಿಗೆ” ಶಿಫಾರಸು ಮಾಡಲು ಇದು ಈಗಾಗಲೇ ನಮಗೆ ಕಾರಣವನ್ನು ನೀಡುತ್ತದೆ - ಇದನ್ನು ಪ್ರಯತ್ನಿಸಿ!

ಪಿಎಸ್

K8s ಸಲಹೆಗಳು ಮತ್ತು ತಂತ್ರಗಳ ಸರಣಿಯಿಂದ ಇತರೆ:

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ