Hyppää sisältöön

Docs CSC now features an automatic Finnish translation. Click here for more information.

Warning!

Puhti and Mahti are being decommissioned in stages, and their storage areas will become fully unavailable from 15 October 2026. Clean up unnecessary files and move any data you need to keep by 31 August 2026. See the Roihu data migration guide for instructions on transferring your data to Roihu.

Puhti computing services have been decommissioned and no new jobs are accepted or executed on its compute nodes. Puhti login nodes and storage services are planned to remain available until 15 October 2026.

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ää.

Cert manager

  1. 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>.

  2. 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.

  3. 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ä.
  4. Kun Issuer on luotu, voit luoda varmenteen:

    echo "apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
        name: nginx
    spec:
        secretName: hostname-tls
        duration: 2160h # 90d
        renewBefore: 360h # 15d
        issuerRef:
            name: letsencrypt
            kind: Issuer
        commonName: <HOSTNAME>
        dnsNames:
          - <HOSTNAME>" | oc create -f -
    
    • Sinun tulee korvata <HOSTAME> riveillä 12 ja 14 sillä verkkotunnuksella, jolle haluat hankkia varmenteen.
  5. Jos kaikki meni odotetusti, uusi Secret nimeltä hostname-tls on juuri luotu. Secretissä pitäisi olla kaksi datamerkintää: tls.crt ja tls.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äytit Certificate-objektissa.
    • Sinun tulee korvata <SERVICE> ja <PORT> vastaavalla palvelulla ja portilla, jotka tarjoavat sen verkkosivuston, jolle tarvitset varmenteen.

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.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta