-
Mukautetut verkkotunnukset ja suojattu tiedonsiirto
Keskitaso
Tarvitset OpenShiftin komentorivityökalun oc ja OpenShiftin Routes API:n tuntemusta
Internet-varmenteiden toiminnan tuntemus on eduksi.
Mukautetut verkkotunnukset ja suojattu tiedonsiirto
Mukautetut verkkotunnukset ja HTTPS-suojattu tiedonsiirto toteutetaan
route-objektin tasolla. Niitä hallitaan avainsanoilla spec.host ja
spec.tls.
Oletetaan, että haluat käyttää mukautettuna verkkotunnuksena osoitetta my-custom-dns-name.replace.this.com. Mukautetun verkkotunnuksen (my-custom-dns-name...) julkisen DNS:n CNAME-tietueen tulee osoittaa osoitteeseen router.2.rahtiapp.fi. DNS-tietueen päivittäminen on asiakkaan vastuulla ja riippuu verkkotunnusrekisterinpitäjän käytännöistä. Tämän jälkeen mukautettu DNS-nimi sijoitetaan route-objektin spec.host-kenttään:
route-with-dns.yaml:
apiVersion: route.openshift.io/v1
kind: Route
metadata:
labels:
app: serveapp
name: myservice
spec:
host: my-custom-dns-name.replace.this.com
to:
kind: Service
name: serve
weight: 100
Testi-DNS
Ennen kuin DNS-tietue on päivitetty ja käytössä, voit käyttää hosts-tiedostoa luodaksesi kyseisen DNS-tietueen omalle tietokoneellesi.
TLS-varmenteet ja yksityiset avaimet sijoitetaan spec.tls-kenttään,
esimerkiksi:
apiVersion: route.openshift.io/v1
kind: Route
metadata:
labels:
app: serveapp
name: myservice
spec:
host: my-custom-dns-name.replace.this.com
to:
kind: Service
name: serve
weight: 100
tls:
insecureEdgeTerminationPolicy: Redirect
termination: edge
certificate: |-
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
key: |-
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
Tämä määritys luo routen, jossa yksityinen avain on sijoitettu kenttään
spec.tls.key ja varmenteet kenttään spec.tls.certificate. Tässä esimerkissä
HTTP-liikenne ohjataan käyttämään HTTPS-protokollaa asetuksen Redirect vuoksi kentässä
spec.tls.insecureEdgeTerminationPolicy. TLS-päättäminen hoidetaan
route-objektissa, eli palveluun serve tuleva ja siitä lähtevä liikenne ei ole salattua (spec.tls.termination: edge). Muut päättämiskäytännöt:
passthrough: Oletetaan, että TLS-yhteys päätetään sisäisesti podissa, ja salattu liikenne välitetään eteenpäin.reencrypt: Päätä TLS-yhteys reitittimessä ja avaa toinen suojattu yhteys, joka on päätettävä podissa.
Katso selitys sivulta Verkon reitit.
Warning
Käsittele aina route-objektien kentän spec.tls.key sisältöä
erityisen huolellisesti, sillä TLS:n yksityistä avainta ei saa koskaan paljastaa
ei-luotetuille osapuolille.
ACME-protokolla, automaattiset varmenteet
Automatic Certificate Management Environment (ACME) -protokolla on viestintäprotokolla, jolla automatisoidaan varmentajien ja niiden käyttäjien palvelinten välistä vuorovaikutusta. letsencrypt.org on voittoa tavoittelematon varmentaja, joka tarjoaa ilmaisia ja avoimia varmenteita ACME-protokollan avulla. Let's Encryptiltä on mahdollista hankkia ja uusia automaattisesti voimassa olevia varmenteita. On olemassa myös muita ACME-protokollaa tukevia varmenteiden tarjoajia, mutta keskitymme Let's Encryptiin, koska se on niistä tunnetuin. Tässä dokumentoimme kaksi menetelmää: cert-manager ja ACME controller.
Cert-manager
Tämä on suositeltu vaihtoehto Let's Encrypt -varmenteiden hankkimiseen ja uusimiseen. Varmenteen hankintaprosessi sisältää kolmen API-objektin luomisen: Issuer, Certificate ja Ingress. Voimme tehdä tämän selainkäyttöliittymässä tai komentorivikäyttöliittymässä. Koska tässä tapauksessa selainkäyttöliittymä ei ole juuri komentorivikäyttöliittymää helpompi, käytämme komentorivikäyttöliittymää.

-
Ensin sinun tulee tavalliseen tapaan asentaa oc ja kirjautua Rahtiin. Sen jälkeen sinun tulee luoda Rahti-projekti. Varmista lopuksi, että olet oikeassa projektissa:
oc project <project_name>. -
Varmista vielä, että verkkotunnus on olemassa. Let's Encryptin täytyy varmistaa, että todella hallitset kyseistä verkkotunnusta, ja se tekee tämän lähettämällä HTTP-pyynnön varsinaiseen verkkotunnukseen ja odottamalla siltä asianmukaista vastausta. Testaa tämä kirjoittamalla verkkotunnus selaimeesi ja tarkistamalla, että Rahti vastaa oikein.
-
Tämän jälkeen sinun tulee luoda
Issuer:echo "apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: letsencrypt spec: acme: # You must replace this email address with your own. # Let's Encrypt will use this to contact you about expiring # certificates, and issues related to your account. email: <EMAIL> server: https://acme-v02.api.letsencrypt.org/directory privateKeySecretRef: # Secret resource that will be used to store the account's private key. name: example-issuer-account-key # Add a single challenge solver, HTTP01 using nginx solvers: - http01: ingress: ingressClassName: openshift-default" | oc create -f -- Sinun tulee korvata
<EMAIL>omalla sähköpostiosoitteellasi. Tätä käytetään Let's Encrypt -tilin automaattiseen luomiseen ja ilmoitussähköpostien lähettämiseen. - Jos haluat käyttää muuta tarjoajaa kuin Let's Encryptiä, sinun täytyy määrittää toinen
server-parametri ja mahdollisesti lisätä jokin tunnistautumistapa. Tämä riippuu suoraan käytetystä tarjoajasta, joten emme voi auttaa siinä, mutta sen pitäisi vaatia vain muutaman rivin muuttamista yllä olevasta esimerkistä.
- Sinun tulee korvata
-
Kun
Issueron luotu, voit luoda varmenteen:- Sinun tulee korvata
<HOSTAME>riveillä 12 ja 14 verkkotunnuksella, jolle haluat hankkia varmenteen.
- Sinun tulee korvata
-
Jos kaikki meni odotetusti, uusi
Secretnimeltähostname-tlson juuri luotu. Secretissä pitäisi olla kaksi data-merkintää:tls.crtjatls.key. Nyt jäljellä on enääIngress-objektin luominen:echo "apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx spec: rules: - host: <HOSTNAME> http: paths: - backend: service: name: <SERVICE> port: number: <PORT> path: / pathType: Prefix tls: - hosts: - <HOSTNAME> secretName: hostname-tls status: {}" | oc create -f -- Sinun tulee korvata
<HOSTNAME>samalla isäntänimellä, jota käytitCertificate-objektissa. - Sinun tulee korvata
<SERVICE>ja<PORT>vastaavalla palvelulla ja portilla, jotka tarjoavat verkkosivuston, jolle tarvitset varmenteen.
- Sinun tulee korvata
Ingress vs Route
Ingress ja Route ovat kaksi tapaa ratkaista sama käyttötapaus. Ne lähestyvät sitä eri tavoin
Jos kaikki meni hyvin, sinulla pitäisi nyt olla voimassa oleva varmenne.