-
Keskitaso
-
Mukautetut verkkotunnukset ja suojattu tiedonsiirto
Keskitaso
Tarvitset OKD:n CLI-työkalun oc ja OpenShiftin Route API:n tuntemusta
Internet-varmenteiden toiminnan tuntemus on eduksi.
Mukautetut verkkotunnukset ja suojattu tiedonsiirto
Mukautetut verkkotunnukset ja HTTPS-suojattu datansiirto 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 sieltä lähtevä liikenne ei ole salattua (spec.tls.termination: edge). Muut päättämiskäytännöt:
passthrough: Oleta, että TLS-yhteys päätetään sisäisesti podissa, ja välitä salattu liikenne eteenpäin.reencrypt: Päätä TLS-yhteys reitittimessä ja avaa toinen suojattu yhteys, joka on päätettävä podissa.
Katso selitys osiosta routet.
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 palvelimien 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 tässä 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än tai komentorivikäyttöliittymän avulla. Koska tässä tapauksessa selainkäyttöliittymä ei ole juuri CLI:tä 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>. -
Tarkista 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 odottaa sen vastaavan asianmukaisesti. Testataksesi tämän syötä verkkotunnus selaimeesi ja varmista, että Rahti vastaa oikein.
-
Seuraavaksi 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 palveluntarjoajaa kuin Let's Encryptiä, sinun täytyy määrittää eri
server-parametri ja mahdollisesti lisätä jokin tunnistautumistapa. Tämä riippuu suoraan käytetystä palveluntarjoajasta, 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 sillä verkkotunnuksella, jolle haluat hankkia varmenteen.
- Sinun tulee korvata
-
Jos kaikki meni odotetusti, uusi
Secretnimeltähostname-tlson juuri luotu. Secretissä pitäisi olla kaksi datamerkintää: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 sen 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.