
ูุฐู ู
ูุงุญุธุฉ ูุตูุฑุฉ ุญูู ููููุฉ ุญุฒู
ุชุทุจูู vue.js ูู ู
ูู Dockerfile ุซู
ุชุดุบููู ูู ุญุงููุฉ ูู kubernetes'e.
ู
ุงุฐุง ููุนู
ููุฏ ูุชุจุช ุจุฑูุงู
ุฌูุง ุตุบูุฑูุง ูููุฏ ุฑูู
NodePort ู
ุฌุงูููุง. ูู ุงููุงูุน ุ ูุง ุชูุนู ุดูุฆูุง ู
ููุฏูุง ุจุดูู ุฎุงุต ุ ูููู ููุณ ุนููู ุฃู ุชุถุบุท ุนูู ุงูุจุญุซ ุนู ู
ููุฐ ุ ูู
ู ุฃุฌู ุงูู
ุชุนุฉ ุ ุงูุธุฑ ููู ูู
ูู ุงูููุงู
ุจุฐูู.
ุจุฏุฃ
ูุชููู ุงูู
ุดุฑูุน ุจุฃูู
ูู ู
ู ุฌุฒุฃูู - ุงููุงุฌูุฉ ุงูุฃู
ุงู
ูุฉ ูุงูุฎุงุฏู
. ุชุทูุจ ุงููุงุฌูุฉ ุงูุฃู
ุงู
ูุฉ nodePort ู
ู ุงูุฎุงุฏู
ุ ููุฌุฏ ุฌุงูุจ ุงูุฎุงุฏู
ุจุนุถูุง ู
ุฌุงูููุง ุนุจุฑ kubernetes api.
ูู ุงููุงูุน ุ ููู ูุนู
ู ูุฐุง ูู ุนุงู
ู ุงูุฅุฑุณุงุก ุ ุชุญุชุงุฌ ุฅูู ุงุณุชุฎุฑุงุฌ ุจุนุถ ุงูู
ุชุบูุฑุงุช ู
ู ุงูุชุทุจูู ุ ู
ุซู ุนููุงู kubernetes api ุ ูุงูู
ููุฐ ุ ูุงูุฑู
ุฒ ุงูู
ู
ูุฒ ุ ูู
ุง ุฅูู ุฐูู.
ูุจุฏู ูุฐุง:
k8s-nodeport-gen/server/index.js: var k8sInfo = { url: process.env.K8SURL, port: process.env.K8SPORT, timeout: process.env.K8STIMEOUT || '30', respath: process.env.RESSPATH || '/api/v1/services', token: process.env.K8STOKEN, nodePortStart: process.env.K8SPORTSTART || '30000', nodePortEnd: process.env.K8SPORTEND || '32000' } app.listen(process.env.PORT || 8081)
ูููุชุฑุถ ุฃู ูู ุดูุก ุชู
ุงุฎุชุจุงุฑู ููุนู
ู ุชุทุจูููุง.
ุฅูุดุงุก ุตูุฑุฉ ุนุงู
ู ู
ููุงุก
ุฃููุฆู ุงูุฐูู ุนู
ููุง ู
ุน vue.js ูุนุฑููู ุฃู ููุงู ุงููุซูุฑ ู
ู ุฌู
ูุน ุฃููุงุน ุงูู
ููุงุช ุ ูุงูุชู ูู ุจุญุงุฌุฉ ุฅูููุง ุฌู
ูุนูุง ุ ูุง ุฃุนุฑู ุ ูููู ูุฌุจ ุฑุคูุชูุง. ูููู ุจูุถู ุญูููุฉ ูุฌูุฏ ุดูุก ู
ุซู vue-cli ุ ูู
ูู ุชุนุจุฆุฉ ูู ุดูุก ุจูู ุจุณุงุทุฉ. ุงูุขู ูุญู ูุญุฒู
ูู ุดูุก:
npm run build
ุจุนุฏ ุฐูู ุ ุณูููู ูุฏููุง ุงูู
ุฌูุฏ "dist" ูุงูู
ูู "index.html" ูู "k8s-nodeport-gen / client". ูููุนู
ู ูุญู ุจุญุงุฌุฉ ููู
ููุท. ูุฐุง ุ ู
ู ุงููุงุญูุฉ ุงููุธุฑูุฉ ุ ููู ุชุนู
ู ุงููุงุฌูุฉ ุงูุฃู
ุงู
ูุฉ ุ ุชุญุชุงุฌ ุฅูู ููุน ู
ู ุฎุงุฏู
http. ูููู ูู ูุฐู ุงูุญุงูุฉ ุ ููุงู ุฃูุถูุง ุฎูููุฉ ุ ูุงูุชู ูุฌุจ ุฃู ุชุนู
ู ุฃูุถูุง. ูุฐูู ุ ูู ุญุงูุชู ุ ูุฎุงุฏู
http ุ ุณูุนู
ู Express node.js.
ุณุชูุถุน ุงูู
ููุงุช ูุงุญููุง ูู ู
ุฌูุฏ k8s-nodeport-gen / public. ููููุงู
ุจุฐูู ุ ูู
ุจุฅุถุงูุฉ ุงูุฎูุงุฑ ุฅูู server / index.js
app.use(express.static(__dirname + '/public'))
ุงูุขู ุจุนุฏ ุฃู ูู
ุช ุจุชุญููู ุงูู
ููุงุช ุ ูู
ููู ุฅูุดุงุก ู
ูู Dockerfile. ูุญู ู
ู ุงููุงุฌูุฉ ุงูุฃู
ุงู
ูุฉ ูุญุชุงุฌ ููุท ุฅูู ุฅูุดุงุก ู
ููุงุช ููู
ุฌูุฏ "dist". ููููุงู
ุจุฐูู ุ ุณูู ูุณุชุฎุฏู
ุดูุก ุฌุฏูุฏ ู
ุซู ุจูุงุก ู
ุชุนุฏุฏ ุงูู
ุฑุงุญู .
FROM node:10-alpine AS base COPY client /portgen/client COPY server /portgen/server WORKDIR /portgen RUN cd client && npm i && npm run build FROM node:10-alpine WORKDIR /portgen COPY server/index.js /portgen/index.js COPY server/package.json /portgen/package.json COPY
ุฃู ูู ุงูุญุงููุฉ ุงูุฃููู ุ ูู
ุจุชุดุบูู "npm run build" ุ ููู ุงูุญุงููุฉ ุงูุซุงููุฉ ุ ุงูุณุฎ ุงูู
ููุงุช ู
ู "dist" ุฅูู "public". ูู ุงูููุงูุฉ ูุญุตู ุนูู ุตูุฑุฉ 95 ู
ูุฌุง ุจุงูุช.
ุงูุขู ูุฏููุง ุตูุฑุฉ ุนุงู
ู ู
ููุงุก ูู
ุช ุจุชุญู
ูููุง ุนูู hub.docker.com .
ุฅุทูุงู
ุงูุขู ูุฑูุฏ ุชุดุบูู ูุฐู ุงูุตูุฑุฉ ูู kubernetes'e ุ ุจุงูุฅุถุงูุฉ ุฅูู ุฐูู ุ ูุญุชุงุฌ ุฅูู ุฑู
ุฒ ู
ู
ูุฒ ูู
ููู ู
ุนุฑูุฉ ุฃู ุงูู
ูุงูุฐ ู
ุณุชุฎุฏู
ุฉ ุจุงููุนู ุนุจุฑ kubernetes api.
ููููุงู
ุจุฐูู ุ ุชุญุชุงุฌ ุฅูู ุฅูุดุงุก ุญุณุงุจ ุฎุงุฏู
ูุฏูุฑ (ูู
ููู ุงุณุชุฎุฏุงู
ุญุณุงุจ ู
ูุฌูุฏ) ูุชุฌููุฏ ุงูุฃุฏูุงุฑ (ูุง ุฃุนุฑู ููููุฉ ุงูุชุฑุฌู
ุฉ ุจุดูู ุตุญูุญ).
ูุฏู ุจุงููุนู ุฏูุฑ ู
ุฌู
ูุนุฉ "ุนุฑุถ" ูู ุงููุชูุฉ
ceku@ceku1> kubectl describe clusterrole view Name: view Labels: kubernetes.io/bootstrapping=rbac-defaults Annotations: rbac.authorization.kubernetes.io/autoupdate=true PolicyRule: Resources Non-Resource URLs Resource Names Verbs --------- ----------------- -------------- ----- bindings [] [] [get list watch] configmaps [] [] [get list watch] endpoints [] [] [get list watch] events [] [] [get list watch] limitranges [] [] [get list watch] namespaces [] [] [get list watch] namespaces/status [] [] [get list watch] persistentvolumeclaims [] [] [get list watch] pods [] [] [get list watch] pods/log [] [] [get list watch] pods/status [] [] [get list watch] replicationcontrollers [] [] [get list watch] replicationcontrollers/scale [] [] [get list watch] replicationcontrollers/status [] [] [get list watch] resourcequotas [] [] [get list watch] resourcequotas/status [] [] [get list watch] serviceaccounts [] [] [get list watch] services [] [] [get list watch] daemonsets.apps [] [] [get list watch] deployments.apps [] [] [get list watch] deployments.apps/scale [] [] [get list watch] replicasets.apps [] [] [get list watch] replicasets.apps/scale [] [] [get list watch] statefulsets.apps [] [] [get list watch] horizontalpodautoscalers.autoscaling [] [] [get list watch] cronjobs.batch [] [] [get list watch] jobs.batch [] [] [get list watch] daemonsets.extensions [] [] [get list watch] deployments.extensions [] [] [get list watch] deployments.extensions/scale [] [] [get list watch] ingresses.extensions [] [] [get list watch] networkpolicies.extensions [] [] [get list watch] replicasets.extensions [] [] [get list watch] replicasets.extensions/scale [] [] [get list watch] replicationcontrollers.extensions/scale [] [] [get list watch] networkpolicies.networking.k8s.io [] [] [get list watch] poddisruptionbudgets.policy [] [] [get list watch]
ุงูุขู ูู
ุจุฅูุดุงุก ุญุณุงุจ ูุชุฌููุฏ
account_portng.yml:
apiVersion: v1 kind: ServiceAccount metadata: name: portng-service-get namespace: internal labels: k8s-app: portng-service-get kubernetes.io/cluster-service: "true"
rolebindng_portng.yml:
kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: internal name: view labels: k8s-app: portng-service-get kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile subjects: - kind: ServiceAccount name: portng-service-get namespace: kube-system apiGroup: "" roleRef: kind: ClusterRole name: view apiGroup: ""
ุงูุขู ูุฏููุง ุญุณุงุจ ููุฏูู ุฑู
ุฒ ู
ู
ูุฒ. ุงุณู
ูุง ู
ูุชูุจ ูู ุงูุญุณุงุจ:
ceku@ceku1 /a/r/aditointernprod.aditosoftware.local> kubectl get serviceaccount portng-service-get -n internal -o yaml apiVersion: v1 kind: ServiceAccount metadata: creationTimestamp: 2018-08-02T07:31:54Z labels: k8s-app: portng-service-get kubernetes.io/cluster-service: "true" name: portng-service-get namespace: internal resourceVersion: "7270593" selfLink: /api/v1/namespaces/internal/serviceaccounts/portng-service-get uid: 2153dfa0-9626-11e8-aaa3-ac1f6b664c1c secrets: - name: portng-service-get-token-vr5bj
ุงูุขู ุชุญุชุงุฌ ููุท ุฅูู ูุชุงุจุฉ ุงููุดุฑ ุ ุงูุฎุฏู
ุฉ ุ ุงูุฏุฎูู ููุตูุญุฉ. ููุจุฏุฃ:
loy_portng.yml
apiVersion: apps/v1beta1 # for versions before 1.6.0 use extensions/v1beta1 kind: Deployment metadata: namespace: internal name: portng.server.local spec: replicas: 1 template: metadata: labels: app: portng.server.local spec: serviceAccountName: portng-service-get containers: - name: portgen image: de1m/k8s-nodeport-gen env: - name: K8SURL value: ceku.server.local - name: K8SPORT value: '6443' - name: K8STIMEOUT value: '30' - name: RESSPATH value: '/api/v1/services' - name: K8SPORTSTART value: '30000' - name: K8SPORTEND value: '32000' - name: PORT value: '8080' args: - /bin/sh - -c - export K8STOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token) && node /portgen/index.js
ููุงู ุดูุฆุงู ูุฌุจ ุงูุงูุชุจุงู ุฅูููู
ุง: "serviceAccountName: portng-service-get" ูุงูุฑู
ุฒ ุงูู
ู
ูุฒ ูู kubernetes ุ ุฃู ุจุงูุฃุญุฑู ุ ุงูุทุฑููุฉ ุงูุชู ุฃุถูุชูุง ุฅููู.
ุงูุขู ุฏุนูุง ููุชุจ ุฎุฏู
ุฉ:
svc_portng.yml
apiVersion: v1 kind: Service metadata: name: portng-server-local namespace: internal spec: ports: - name: http port: 8080 targetPort: 8080 selector: app: portng.server.local
ูุงูุฏุฎูู ุ ูุฐูู ูุฌุจ ุฃู ูููู ูุฏูู ุฌูุงุฒ ุชุญูู
ุฏุฎูู ู
ุซุจุช
ingress_portng.yaml:
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: portng.aditosoftware.local namespace: internal annotations: kubernetes.io/ingress.class: "internal" spec: rules: - host: portng.server.local http: paths: - path: / backend: serviceName: portng-server-local servicePort: 8080
ูู ุดูุก ุ ูุจูู ููุท ูุชุญู
ูู ุงูู
ููุงุช ุฅูู ุงูุฎุงุฏู
ูุชุดุบูููุง.
ูู
ูู ุฅุทูุงู ูู ูุฐุง ูุญุงููุฉ ุนุงู
ู ู
ููุงุก ูุญุชู ุจุฏููู ุ ูููู ุงูุฌุฒุก ุงูุฐู ูุญุชูู ุนูู ุญุณุงุจุงุช ูู kubernetes'e ูุง ูุฒุงู ูุชุนูู ุนููู ุงูู
ุถู ูุฏู
ูุง.
ุงูู
ูุงุฑุฏ:
ุตูุฑุฉ ุนุงู
ู ุงูู
ููุงุก ูู hub.docker.com
ู
ุณุชูุฏุน ุจูุงุจุฉ ุนูู github.com
ูู
ุง ุชุฑู ุ ูุง ููุฌุฏ ุดูุก ุฎุงุต ูู ูุฐู ุงูู
ูุงูุฉ ุ ูููู ุจุงููุณุจุฉ ููุจุนุถ ุฃุนุชูุฏ ุฃูู ุณูููู ู
ุซูุฑุงู ููุงูุชู
ุงู
.