Changes

Helm

513 bytes added, 19:21, 23 September 2019
Telepítés saját névtérbe
 
=Bevezető=
A Helm a Kubernetes-hez készült csomag kezelő, mint pl a RedHat világában a yum ill dnf parancsok. A Helm mögé olyan nagy cégek sorakoztak föl mint pl a Google vagy a Microsoft.
A Helm alapja az úgynevezett Helm chart, mely egy telepítési leírója egy adott szoftver csomagnak. Egy adott Helm chart telepítésével egy mozdulattal tudunk előre gyártott, összetett szoftver konfigurációt telepíteni egy Kubernetes klaszterbe. Pl a Prometheus Helm-chart tartalmazza magát a Prometheus szervert, az Alert manager-t, a node-exporter-t, meg még jó pár komponenst, amiket a chart varázsütésre feltelepít a Kubernetes klaszterbe, úgy hogy az összes komponens működésre készen konfigurálva van, úgy hogy a Helm az összes szükséges Kubernetes objektumot létrehozza, beleértve a RoleBinding-okat és Ingress komponenseket is.
 
A Helm rendszer (3 verzió előtt) négy fő komponensből áll.
* Helm repository: Ez a docker hub-hoz hasonlatos repository, ahol a Docker-hub-hoz hasonlóan tudunk Helm-chart-okat keresni, letölteni. Ez az elsődleges forrása a chart-ok beszerzésének.
* Helm parancssor:
* Helm chart:
* Tiller:
 
:[[File:ClipCapIt-190710-204945.PNG]]
 
 
A Helm templéteket használ a Kubernetes yaml objektum leíró fájlok elkészítésére. A Helm telepítés előtt rendereli a templéteket, ebből előállnak a Kubernetes objektum leírók, majd ezeket a Tiller-en keresztül telepíti a Kubernetes klaszterbe.
A chart-ok a '''<user-home>/charts/<chart-név>''' mappában vannak. Ezen belül a '''templates''' mappában vannak a yaml templétek.
<source lang="C++">
# cat server-pvc.yaml
{{- if not .Values.server.statefulSet.enabled -}}
{{- if .Values.server.persistentVolume.enabled -}}
{{- if not .Values.server.persistentVolume.existingClaim -}}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
{{- if .Values.server.persistentVolume.annotations }}
annotations:
...
</source>
 
 
A placeholdereket a chart mappában található values.yaml fájl alapján tölti ki a Helm. Ez minden chart kötelező eleme:
<source lang="C++">
serviceAccounts:
alertmanager:
create: true
name:
kubeStateMetrics:
create: true
name:
nodeExporter:
create: true
...
</source>
A values.ymal fájl átírásával lehet testre szabni a chart-okat.
 
 
<br>
=Telepítés=
Helm letöltése: https://helm.sh/docs/using_helm/#installing-helm
A helm binárisra létre kell hozni egy sim-linket a bin mappában:
<pre>
# sudo ln -s /home/adam/Programs/helm/helm2/helm /usr/bin/helm
</pre>
 
A Tiller-t a helm
<pre>
</pre>
{{note|A Tiller}}
replicaset.apps/tiller-deploy-775c9dcf94 1 1 1 5m
</pre>
<br>
<br>
 
 
==Telepítés saját névtérbe==
Az a cél, hogy a Tiller-t a saját névterünkbe telepítsük föl és korlátozzuk a hozzáférését, hogy kizárólag ehhez a névtérhez legyen joga, semmi máshoz ne férjen hozzá:
<br>
 
Hozzunk létre egy service-account-ot a tiller-nek:
<pre>
# kubectl create serviceaccount tiller --namespace mynamespace
serviceaccount/tiller created
</pre>
<br>
 
 
Készítünk egy role-t a saját névterünkhöz, amiben minden műveletet megengedünk a mynamespace névtérben: <br>
role-tiller.yaml
<source lang="C++">
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: tiller
namespace: mynamespace
rules:
- apiGroups: ["", "batch", "extensions", "apps"]
resources: ["*"]
verbs: ["*"]
</source>
 
# kubectl apply -f role-tiller.yaml
role.rbac.authorization.k8s.io/tiller created
<br>
 
Majd összekötjük a role-t a service-account-al: <br>
rb-tiller.yaml
<source lang="C++">
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: tiller-binding
namespace: mynamespace
subjects:
- kind: ServiceAccount
name: tiller
namespace: mynamespace
roleRef:
kind: Role
name: tiller
apiGroup: rbac.authorization.k8s.io
</source>
 
# kubectl apply -f rb-tiller.yaml
rolebinding.rbac.authorization.k8s.io/tiller-binding created
 
 
<br>
 
A tiller init -ben meg kell adni a service-account-ot és a névteret:
<pre>
# helm init --service-account tiller --tiller-namespace mynamespace
$HELM_HOME has been configured at /root/.helm.
 
Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.
</pre>
<br>
 
Ellenőrizzük hogy a jó névtérben fut e a tiller pod:
<pre>
# kubectl get pod -n mynamespace
NAME READY STATUS RESTARTS AGE
tiller-deploy-6cddf5788b-hcpr8 1/1 Running 0 1m
</pre>
<br>
 
 
===Klaszter role===
Ha a névtéren kívül is létre akarunk hozatni elemeket akkor klaszter szintű jogokat kell adni a tiller sa-nak:
<source lang="C++">
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller-clusterrole
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: mynamespace
</source>
 
 
 
<br>
=Prometheus telepítése=
<pre># helm list --tiller-namespace mynamespaceNAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE prometheus 1 Tue Jul 16 00:06:52 2019 DEPLOYED prometheus-------------------------------------------------8.14.0 2.11.1 mynamespace</pre>
# Push display adatok megjelenítése Schema
```<pre> ``` | Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Defined In || ------------------- | ---------- | ------------ | ------------ | ----------------- | --------------------- | -------------------------------------------------- || Can be instantiated | No | Experimental | No | Forbidden | Permitted | [pushDetails.schema.json](pushDetails.schema.json) | # Push display adatok megjelenítése Properties | Property | Type | Required | Nullable | Defined by || ------------------------------- | ---------- | ------------ | -------- | ----------------------------------------------- || [attributes](#attributes) | `object[]` | **Required** | No | Push display adatok megjelenítése (this schema) || [creationDate](#creationdate) | `string` | **Required** | No | Push display adatok megjelenítése (this schema) || [functionCode](#functioncode) | `string` | **Required** | No | Push display adatok megjelenítése (this schema) || [templateType](#templatetype) | `enum` | **Required** | No | Push display adatok megjelenítése (this schema) || [transactionId](#transactionid) | `string` | **Required** | No | Push display adatok megjelenítése (this schema) || `*` | any | Additional | Yes | this schema _allows_ additional properties | ## attributes A templét belsejében megjelenő attribútumok listája `attributes` - is **required**- type: `object[]`- defined in this schema ### attributes Type Array type: `object[]` All items must be of the type: `object` with following properties: | Property | Type | Required || helm delete prometheus --tiller--------- | ------ | ------------ || `labelCode` | string | Optional || `params` | object | **Required** || `type` | string | **Required** | #### labelCode Annak a címkének a kódja, amit kiírunk a sor elejére az adott attribútum típus elé `labelCode` - is optional- type: `string` ##### labelCode Type `string` #### params Az attribútum paraméterei, melyek nevesített mezői a params univerzális objektumnak `params` - is **required**- type: `object` ##### params Type `object` with following properties: | Property | Type | Required || -------- | ---- | -------- |  #### type Az attribútum típusa. Ez határozza meg a megjelenítést `type` - is **required**- type: `enum` The value of this property **must** be equal to one of the [known values below](#attributes-known-values). ##### type Known Values | Value | Description || ---------------------- | ----------- || `TEXT` | || `MULTI_LINE_TEXT` | || `SORT_DATE` | || `DATE_WITH_WEEK_DAY` | || `DATE` | || `SHORT_DATE_TIME` | || `PIECE` | || `SOURCE_ACCOUNT` | || `AMOUNT` | || `TARGET_GIRO_ACCOUNT` | || `TARGET_IBAN_ACCOUNT` | || `TARGET_PROXY_ACCOUNT` | || `CARD` | || `RECURRENCE` | || `PROVIDER` | | ## creationDate A tranzakció létrehozásának az időpontja ISO 8601 formátumban. `creationDate` - is **required**- type: `string`- defined in this schema ### creationDate Type `string` ## functionCode A funkció kódja annak a folyamatnak amihez az MFA-t kaptuk. Ez fogja a címet meghatározni `functionCode` - is **required**- type: `string`- defined in this schema ### functionCode Type `string` ## templateType A templét típusa ami a képernyő struktúráját fogja meghatározni `templateType` - is **required**- type: `enum`- defined in this schema The value of this property **must** be equal to one of the [known values below](#templatetype-known-values). ### templateType Known Values | Value | Description || ---------- | ----------- || `MODIFY` | || `TRANSFER` | || `PURCHASE` | || `LOGIN` | | ## transactionId Az ID-ja annak a tranzakciónak, amihez a PUSH megerősítést kaptuk `transactionId` - is **required**- type: `string`- defined in this schema ### transactionId Typenamespace mynamespacerelease "prometheus" deleted`string`</pre>