Tiken konttialusta - UKK
Kysymys | Vastaus |
---|---|
Tilaanko jokaiselle applikaatiolle oman projektin? Vai esim. tiimille yksi projekti? | Mieluummin yksi projekti per applikaatio. Jos se koetaan tarpeelliseksi, voi myös tilata tiimille yhteisen kokeiluprojektin. Omaa testailua varten voi käyttää myös Codeready Containersia, joka on omalla koneella toimiva yhden virtuaalikoneen kokoinen hiukan karsittu openshift. |
Mikä on konttialustan osoite? | Etusivulla Tiken konttialusta "Openshift console ja cli" |
Millainen Dockerfilen tulee olla? | Mahdollisuuksien mukaan on hyvä käyttää red hat universal base imagejen päälle tehtyjä kontteja. Lisäksi kannattaa käyttää Multi-stage dockerfilejä jolloin ajettavan kontin saa pidettyä mahdollisimman pienenä. Kannattaa huomata, että vaikka Dockerfilessä ei määrittäisi itse USERia, OpenShift pakottaa kontin sisällä pyörivän sovelluksen normaaliksi käyttäjäksi myös kontin sisällä. Automatiikka tekee tämän puolestasi. Tällä voi olla vaikutuksia sovelluksesi toimintaan. Testaus/kehitysmielessä on suositeltavaa käyttää USER-määritystä jolloin saat ainakin osan näistä ongelmista taklattua jo varhaisessa vaiheessa. Esimerkkejä: Esimerkkisovelluksia Dockerfileillä Lisäohjeita: 3.4 Konttiprosessien UID:t OpenShiftissä |
Miten Openshift saa yhteyden GitLabiin? |
|
Miten Openshift saa yhteyden GitHubiin? |
|
Saako tietokantoja ajaa konteissa? | Mielellään ei. Tässä otettava huomioon monia asioita mm. tietokannan on toivuttava klusterien päivityksestä. Tikessä on keskitetty tietokantapalvelu, josta saa replikoituja ja ylläpidettyjä tietokantoja. Näitä suositellaan käytettäväksi. Tietokantapalvelu tarjoaa SQL-kantoja (Postresql). Jos keskitetty tietokanta ei jostain syystä käy, niin silloin voi harkita esimerkiksi kontissa ajettavaa dokumenttikantaa. Konttialustan ylläpito ei vastaa tietokantojen varmuuskopioinneista, vikasietoisuudesta jne. |
Kubernetes-alustan projektikohtaiset konfiguraatiot ja niiden versiointi. Onko tarpeen versioida projekti- eli sovelluskohtaisesti Kubernetes-konfiguraatiot? | On. Käytännössä haluat pitää jokaisen sovelluksen ja projektin toisistaan riippumattomana kokonaisuutena, vaikka konfiguraatiot toistuisivatkin melkein samanlaisina. Toisteisuutta saman sovelluksen eri versioiden välillä voi vähentää esim. Helm-templateja käyttämällä. Lähtökohtaisesti kaikki mitä tarvitaan toimivan sovelluskokonaisuuden käynnistämiseen, pitäisi olla versionhallinnassa max. ~3 komennon päässä tuotannosta. Paitsi tietysti salaisuudet kuten tokenit, salasanat, jne., ja niidenkin syöttäminen sopivilla nimillään projektiin tulisi olla dokumentoitu ja mieluusti skriptattu. |
Onko tarpeen määritellä sovelluskohtaisesti Kubernetes-konfiguraatioita? | On. Jokaisella sovelluksella on omat kubernetes-manifestinsa ja niiden mahdollinen jakaminen sovellusten välillä tapahtuu klusterin ulkopuolella esim. helm templateissa. |
Pitäisikö appien deploy yml-tiedostot ottaa talteen, esim versionhallintaan? Suositaanko mielummin kälin kautta tehtävää deployta, vai CLI:n + yml-tiedostojen kautta tehtävää? | Yaml-tiedostot tulee viedä versionhallintaan. Softan voi ensin deployata käyttöliittymästä ja ottaa yaml-tiedostot sen jälkeen talteen versionhallintaan. Pullaamalla yamlit paikallisesti, voisi kontit deployata muokkaamalla yamleja ja käskyttämällä CLI:tä. Yamlien avulla softan saa pystyyn yhdellä komennolla ja konfiguraatio on versionhallinnassa tallessa.
|
Miten saan sovelluksen SSO:n taakse ("Shibboloin") OpenShiftissä? |
|
Missä ip-osoitteissa kontit pyörivät, jos haluan avata oman virtuaalikoneeni palomuurin konttiklusterilta tulevalle liikenteelle? | Konttiklusterien virtuaalikoneet elävät seuraavissa verkoissa ja näiden sisältämistä ip-osoitteista konttien yhteydenotot näyttävät ulkoapäin tulevan:
|
Miten varmistan, että Deploymentin podit hajautetaan eri virtuaalikoneille? | Pod Anti-affinityillä: Ylläolevassa linkissä olevaa matchExpressionia voi hiukan lyhentää käyttämällä matchLabelia:
Esimerkki apiVersion: apps/v1 kind: Deployment metadata: name: frontend spec: replicas: 3 template: metadata: labels: app: frontend <=========== Tämän label sijoittuu kaikkiin podeihin spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - topologyKey: kubernetes.io/hostname <========= hostnamen topologiassa labelSelector: matchLabels: <========= mätsätään labeleita (key-value -pareja) app: frontend <========= .... jotka määritellään samoiksi mitä template metadata.labelsissa annettiin tämän Deploymentin podeille ....
|
Miten rajaan palveluni niin, että siihen pääsee vain tietyistä IP-osoitteista? | Aseta palvelusi routeen annotaatio avaimella haproxy.router.openshift.io/ip_whitelist ja arvolla, joka sisältää whitespace-erotellun luettelon sallituista IP-osoitteista. Lisätietoja täällä. |
Mistä tiedän mikä versio esim. ohjelmointikielestä pyörii kontissa? Entä mitkä kaikki paketit konttiin on asennettu? | Mene podin sivulle ja valitse Terminal ja kirjoita komentoriville: # tietyn ohjelman versio <ohjelma> --version # kaikki paketit ls /usr/bin/
|
Hyödyllisiä työkaluja:
https://github.com/Azure/draft/